Отслеживание вызовов Freeswitch в .NET (C#, VB.NET)

Часто в CRM системах возникает задача контроля фактически совершенного звонка, перехват события входящего звонка с отображением информации о клиенте. В Freeswitch можно данную задачу попытаться решить при помощи LUA, CURL и других костылей в которых будет необходимо организовать всю логику обслуживания звонка, т.к. Freeswitch «орудует» каналами (channels, legs) а не одним звонком. Данный сервис позволяет получать «готовые» события в нативной .NET сборке для дальнейшей обработки в CRM.

Сервис состоит из двух частей:
1. Кроссплатформенная (Linux, Windows) серверная часть: art.core.pbxeventsserver на .NET Core 2.1, которая подключается непосредственно к Freeswitch через mod_eventsocket, собирает, анализирует и формирует нужные события вызовов для передачи клиентской части.
2. Клиентская часть — art.pbxeventsclient.dll. Необходима для подключения к серверной части (tcp) и парсинга всех необходимых событий вызовов. Через клиентскую часть возможно передача некоторых команд в серверную часть. Можно создать wrapper с COM, которые уже использовать в 1С и других (не .NET) платформах.

Серверная часть создает одно подключение к Freeswitch, что разгружает Freeswitch и значительно сокращает объем траффика в отличии от схемы когда клиентская часть подключается напрямик к mod_eventsocket.

Все уведомления клиентским частям передаются синхронном режиме (попрядку), чтобы сократить ресурсы сервера с таймаутом 3000 мс (в случае если клиент не смог получить очередной пакет в течении 3 сек, клиент исключается из пула). Все данные передаются в открытом XML и не шифруются, поэтому вы можете подключиться напрямик к сервису и парсить пакеты самостоятельно.

Конфигурация серверной части

Перед запуском в режиме сервиса (настраивается вручную в зависимости от версии Linux или Windows) рекомендуется проверить работу сервиса в интерактивном режиме.

Конфигурация сервиса находится в файле config.xml рядом с исполняемым файлом.

  • serverport — порт TCP, для входящих клиентских подключений
  • host — ip/hostname вашего freeswitch с активированным mod_eventsocket
  • port — номер порта mod_eventsocket. По-умолчанию 8021/
  • password — secret mod_eventsocket
  • log — режим логирования: human — вывод событий в режиме вызовов, simple — упрощенные raw — полные.

Клиентская часть

Клиентская часть — полностью нативная сборка .NET Framework 4.0 без зависимомстей.

События класса CallController:

  • Connected — при успешном подключении к сервреной части;
  • ConnectionError — при проблеме с подключением к серверной части;
  • NewCall — новый звонок;
  • CallProgress — изменение статуса звонка (вызов, ответ);
  • CallCompleted — завершение звонка;
  • DTMF — абонентом нажата цифра;

Все события вызываются в асинхронном потоке.

Загрузка

Один комментарий

  1. если редактируется уже существующий шлюз, то вначале потребуется убить существующую регистрацию командой freeswitch sofia profile external killgw gateway_name freeswitch sofia profile external rescan reloadxml

Добавить комментарий

Ваш адрес email не будет опубликован.