Универсальная интеграция «вебхуки» | Деловой разговор

Универсальная интеграция «вебхуки»

Модуль «вебхуки» используется для интеграции 3СХ со сторонними CRM системами. Он написан на C#, реализован как служба и в момент старта подключается к 3СХ. За счет этого модуль непрерывно мониторит низкоуровневую телефонную активность АТС и на основе этого мониторинга генерирует события высокого уровня:

  • Телефон звонит у такого-то добавочного номера
  • Начался разговор
  • Закончился звонок

В момент наступления каждого из событий модуль отправляет https-запрос (вебхук) на заданный в ini-файле адрес с теми или иными данными о звонке.

Замечание: если у добавочного номера зазвонил телефон, а затем перестал звонить, но звонок не завершился (ушел на другой добавочный), то такое событие (телефон у добавочного перестал звонить, но звонок не завершился) отсутствует.

Предлагаемое решение не является полным, т.к. требует адаптации на стороне CRM. Вам необходимо собственными силами разработать прослойку межу модулем «вебхуки» и вашей CRM. Такая прослойка будет получать от нашего модуля https-запросы с информацией о звонках и на основе полученной информации будет производить необходимые действия с вашей CRM (журналирование звонков, открытие карточки контакта).

Видеопрезентация универсальной интеграции «вебхуки»

Описание данных, которые через вебхуки передаются при возникновении событий

Телефон звонит у такого-то добавочного номера

  • event = ringing
  • callerid = Внешний номер, с которого пришел звонок
  • did = На какой внешний номер поступил звонок (DID-правило)
  • user = У какого добавочного номера звонит телефон
  • usertype = ext / queue / other (добавочный пользователя / очередь / прочее)
  • id = Уникальный id звонка (строковое значение). Если звонок пришел в очередь и телефон последовательно или одновременно звонит у нескольких менеджеров, то у них у всех будет один и тот же id.

Начался разговор

  • event = hangupincoming / hangupoutgoing (Звонок входящий или исходящий)
  • callerid = Внешний номер, участвующий в разговоре
  • user = Внутренний номер, участвующий в разговоре
  • did = Если звонок входящий, то внешний номер, на который поступил звонок (DID-правило)
  • trtype = NotDef / Blind / Accomp (Каким образом получен звонок: 1) обычный звонок, 2) звонок получен через слепой трансфер, 3) звонок получен через сопроводительный трансфер)
  • id = Уникальный id звонка (строковое значение)

Закончился звонок

  • event = incoming / outgoing (Звонок входящий или исходящий)
  • callerid = Внешний номер
  • user = Внутренний номер. Если звонок пропущенный, и он прекратился на уровне очереди, то это будет добавочный номер очереди
  • finishtype = Ok / Missed (Как завершился звонок: удачно (был разговор) или неудачно (т.е. при исходящем вызове звонили, но на другом конце не подняли трубку, а при входящем – на стороне 3СХ никто не ответил на звонок))
  • transfer = false / true (Завершился ли звонок полностью, или через трансфер ушел на другой добавочный)
  • title = В виде фразы подробная информация о звонке, которая кроме перечисленного выше включает в себя: a) название DID-правила для входящего звонка; b) если звонок прекратился на уровне очереди, то был ли заказан обратный звонок; c) продолжительность разговора
  • id = Уникальный id звонка (строковое значение)

ID звонка формируется следующим образом:
<дата время>_<уникальный номер звонка в рамках текущей сессии 3СХ>-<номер звена звонка>
Пример ID: 210701165649_698-2

Дата и время соответствуют моменту, когда звонок поступил на 3СХ. Звено звонка – это порядковый номер вызова в единой цепочке трансферов. Когда звонок только-только поступил на АТС, и еще никто не ответил на него, звено звонка равно 0. Как только кто-то ответил – равно 1. При каждом последующем трансфере звено звонка увеличивается на 1. У всех звонков в единой цепочке трансферов дата время и уникальный номер в рамках текущей сессии – одинаковы. Такие звонки отличаются только номером звена.

После полного завершения звонка (когда внешний абонент положил трубку) в 3СХ появляется запись разговора, или несколько записей разговоров, которые соответствуют всей цепочке трансферов, если таковые были. Запись (записи) разговоров появляются с небольшим запозданием: от нескольких миллисекунд до 1-2 секунд после того, как положили трубку. Как только это происходит, модуль «вебхуки» конвертирует wav-файл(ы) с записью (записями) в mp3-формат и помещает их в отдельную папку, из которой возможно скачивание записей через https-ссылку. Ссылка на скачивание файлов передается через соответствующий POST-запрос. Таким образом, вебхук с информацией о завершении звонка и вебхук с ссылкой на файл разговора – это разные, отдельные вебхуки.

В POST-запросе в общем случае может передаваться несколько ссылок на скачивание записи разговора. Дело в том, что у 3СХ одному разговору может соответствовать несколько звуковых файлов. Такое происходит, если говорили через мобильное приложение, и в процессе разговора связь пропадала на непродолжительное время. В этом случае каждый кратковременный разрыв связи – это начало нового файла записи.

Кроме ссылки на запись разговора POST-запрос содержит id-вызова, по которому его можно идентифицировать с событиями начала/завершения звонка. Опционально (через ini-файл) в POST-запросе можно включить передачу полной информации о завершившимся звонке. В этом случае POST-запрос будет содержать туже информацию (помимо ссылки на скачивание записи), что и событие о завершении звонка.

Записи разговоров в mp3-формате хранятся в отдельной паке необходимое количество дней (соответствующий параметр задается в ini-файле службы). По ночам записи, срок хранения которых истек, автоматически удаляются службой.

За расчетом стоимости модуля обращайтесь в нашу компанию.