За основу берем приложение
https://www.linphone.org/. В ранних версиях c 3 по 4 релиз, есть приложение linphonec и linphonecsh (console version of Linphone). Гипотезу работы проверили через через скрипты на BASH
Скрипт запускает прослушивание порта через ncat. Запросы поступающие на порт, ncat передает на другой скрипт который выполняет наборы команд linphonecsh.
последовательность примерно следующая
- запустить приложение как демон в системе
- зарегистрировать сип соединение
- отвечать на запрос о статусе
- поднять или положить трубку в случае звонка
Задача: Написать на rust или go приложение способное принимать запросы на порт (
socket) и далее управлять программой linphonecsh. Нужный три версии для Linux Windows и MacOS
Пример команды help. Почти все соответствует linphonecsh, но некоторые записи могут отличаться. Плюс появилась команда secret
(это пароль для доступа, до авторизации нет возможности получить описание команд и выполнить хотябы одну из них)Use:
help
secret <*******> - authorize for more options
quit - close session
Secret commands:
register <IP> <USER> <PASSWD> - register to SIP
dial <SIP> - dial to SIP number
status - out phone status
command - out generic command
hangup - hangup phone
unregister - unregister from SIP
initialize - запускает демон
terminate - останавливает демон
Предполагаю, что это не сложное приложение, для примера могу дать рабочие скрипты с готовой логикой. цена открытая, жду ваших предложений.