Отслеживание вызовов 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 – абонентом нажата цифра;

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

Загрузка

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.