В нашей работе мы часто сталкиваемся с вопросом клиентов, которые хотят получить достоверную статистику по статусам исходящих вызовов. Хотелось бы в небольшой статье пояснить что из себя представляют статусы в теелфонии Asterisk и почему они слабо подходят для маркетинговых вывводов отдельно от других данных.

Какие бывают статусы?

Q.931 и SIP

Технические статусы, отображают причину отклонения вызова. Для Q.931 — цифровой, для SIP — код и текстовое описание. Ответы от разных операторов в одних и тех же ситуациях могут быть разными. К тому же если произошёл ответ на вызов, кода уже не будет, хотя ответ мог быть и не реальным.

Обе системы кодов имеют стандарт на преобразование между друг другом. Особеенностью является, что последовательные преобразования из SIP в q.931 и обратно могут привести к изменению кода завершения вызова. Для справки:

$DIALSTATUS

Asterisk внутренне фактически использует коды q.931 для обработки кодов завершения вызова, но чаще всего в статистике вы увидете значение переменной DIALSTATUS, которая обобщает эти коды по общему смыслу, основные это (мы пеерчислим ситуации в которых код появится, чтобы показать как это помешает в анализе):

  • ANSWER — вызов был технически отвечен. Это ничего не говорит о доступности номера для вызова. Вызываемый номер может быть недоступен, занят. Оператор может произвести ответ при переводе вызова на голосовую почту (при этом как после тонового сигнала, так и перед приглашением оставить сообщение)
  • NOANSWER — вызов не был отвечен. Означает только то что ваш Asterisk прервал вызов до того как он был отвечен или отклонён вызываемой стророной. При этом во время вызова могли звучать различные сообщения, проходить КПВ или вообще не быть никакой сигнализации о прогрессе вызова.
  • BUSY — номер занят. Относительно понятно, но нужно учитывать что не во всех ситуациях когда номер занят вы получите этот код. Часть вызовов на занятые номера попадают на автоответчик и вторую линию и будут видны со статусом NOANSWER, часть — попадут на автоответчик и будут видны со статусом ANSWER
  • CONGESTION — какой-либо другой код отклонения вызова, ез подробного понимания что произошло (номер отключён, недоступен, не существует и т.п.). Также этот статус подвержен тем же проблемам для понимания доступности номера как и статус BUSY.
  • CHANUNAVAIL — ситуации когда вызываемый канал недоступен (в основном это проблемы с настройкой или недоступность обрудования оператора)

Подход iqAntibot

В отличии от технических кодов человек реагирует на звуковые сообщения, поэтому мы решили реализовать подход для понимания состояния линии и вызываемого номера на основании звука в речевом канале.

Мы реализовали приложение, которое можно использовать для различных целей, но в первую очередь для завершения исходящих вызовов на как можно более раннем этапе путем классификации звучащих голосовых приветствий.

Такой подход даёт хороший эффект, также в сообщениях SIP протокола получается можно задать свои коды и их описания, таким образом обогатив информацию о статусе вызова. Используя эти SIP коды в статистике можно организовать более точную статистику по исходящим вызовам.

Метод который мы используем в данный момент для аналлиза пока едиснтсвенный. Он аналогичен Shazam — мы собираем базу стандартных автоответчиков, в процессе разговора в реальном времени аналилируем звук и обрываем вызов. Данный подход работает хорошо, не давая ложных срабатываний.

Также технологии на которых построено приложение поззволяют реализовать и другие технологии анализа состояния линии:

  • распознавание речи — при обнаружении речи в канале можно распознать её в реальном времени. Минус — к каждому вызову добавляется стоимость распознавния речи.
  • распознавание ключевых слов — возможно построить достаточно точный поиск ключевых слов га основании открытых библиотек распознавания речи.
  • классический AMD — распознавание активности говорящего после ответа на вызовна
  • анализ переключения SSRC в RTP — часто при срабатывании автоответчиков происходит переключение RTP потока, можно фиксировать эти данные и использовать пост-фактум для анализа статистики
  • анализ ответов Early Media — неокторые операторы генерируют различные 18x ответы в SIP в зависимости от фазы вызова. ТАкже можно использовать для статистики.

А ещё на основе этой технологии мы делаем сервис суфлирования для операторов call-центра, но это уже совсем другая история.

Оригинал: https://blog.iqtek.ru/?p=319

автор igorg