Общая практика


Параметры событий используемые для анализа


CallerIDNum - номер звонящего (того, кто звонит) - по нему по-умолчанию регистрируются входящие (flow события - dial-in) вызовы

CalledNumber :
- в случае входящего вызовы (flow события - dial-in) - номер добавочного, на который поступил входящий вызов по данному событию.
- в случае исходящего вызова (flow события - dial-out) - внешний вызываемый номер (тот, кому звонят) - по нему по-умолчанию регистрируются исходящие (flow события - dial-out) вызовы

CallerExtension - номер добавочного, инициатор исходящего вызова (flow события - dial-out) Имеет формат типа “453*111@доменАТС”, берем из него только то, что до собаки(@).
CalledDID - источник вызова (вызываемый номер на АТС извне, это номер, посредством которого вызов попал в АТС) - при наличии обязательно передаем фиксируется в интеграции.
Bridged - указывает на то, был ли вызов глобально в рамках всей АТС принят пользователем телефонного добавочного, если принят сотрудником то bridged = yes, если нет то bridged = no (ответа на входящий вызов посредством обычного телефоного добавочно не произошло). Данный параметр передается только в событиях hangup от спец.добавочных ИВР и
Очередь (ext type = phone или queue)
[Transfered] => yes - актуально только для исходящих вызовов (flow события - dial-out) и соответствующих вызову событий answer и hangup.
[RemoteNumber] - может присутствовать только в flow события dial-in и указывает внешний номер, с которым связан данный вызов. Предлагается использовать для понимания с каким внешним номером произошло соединение при переводе вызова с добавочного на добавочный командами перевода #1 и *2 и использовать его в таких ситуациях вместо CallerIDNum при регистрации вызова.
CallBackID - ИД коллбека (ID инициации исходящиего вызова через API). Добавляется в случае, если вызов генерируется за счет какого-то добавочного, но соедиенние при этом происходит между внешним номером и каким-то еще номером/добавочным, отличным от добавочного инициатора вызова. К примеру, когда скрипт заказа звонка на сайте соединяет вводимый в него номер с ИВР-ом клиентской АТС.
[Duration] - длительность вызова для каждого отдельного [SubCallID]
[RecID] - ID записи разговора


Успешный вызов имеет CallStatus=ANSWER
Не успешные вызовы имеют статус:
Status=CANCEL - отменен звонящим,
CallStatus=BUSY - вызываемый номер занят.
Возможно еще другие варианты. Такие вызовы ни в коем случае не должны попасть в CRM как успешные.

Это не все параметры, которые содержат события. Полный список параметров и подробное описание параметров события указаны в документации.

Логика интеграции — общие моменты

При поступлении вызова - перевод вызова на ответственного сотрудника

В самом начале вызов попадает в добавочный типа ivr (type = ivr ), где добавляется правило "Call interactive" (документация), это правило чаще всего используется в интеграциях для действия SetVar, чтобы задать переменную, значение которой будет содержать добавочный номер, на который нужно перевести вызов.

Этот функционал чаще всего называется “перевод вызова на ответсвенного сотрудника”.

Более подробно call interactive для интеграций рассмотрен тут.


Регистрация данных о звонках

Все события обычных телефонных добавочных (type = phone ) для событий [dial-in] и [dial-out] анализируются и в случае наличия события [answer] регистрируются по событию hangup и [SubCallID], как отдельные вызовы, вместо [CallID]. Таким образом удастся делить вызов в рамках АТС на отдельные плечи (call legs) - до перевода и после перевода и регистрировать их как отдельные вызовы.
Неотвеченные входящие вызовы фиксируются по наличию в hangup-ах от ИВР-а и Очередей параметра Bridged=no. При этом нужно помнить, что Bridged=yes — это всегда успешный входящий вызов. По нему данные должны быть зафиксированы при анализе событий [dial-in] в рамках их собственных [SubCallID].

Инициация вызова (ClickToCall / CallBack)

Инициация вызова (/callback/) (документация, полный список параметров и описание)

Инициация вызова - система сначала вызывает src, затем, при успешном ответе. вызывает dst.

В случае src - добавочный, рекомендуется передавать не только параметры «src_num» и «dst_num», но и «caller_id_name», а также «caller_id_number», указывая в них значение равное значению «dst_num», таким образом, при поступления вызова на SIP телефон пользователя будет высвечиваться не его собственный добавочный (значение из «src_num» передаваемое системой по дефолту если не заданы «caller_id_name» и «caller_id_number»), а номер, на который он будет звонить, что даст ему возможность как минимум нажатием RD(redial) перезвонить на этот же номер без участия интеграции.

Передача в интеграцию ссылки на запись разговора


Рекомендуется использование третьего метода из статьи:

https://ringme-confluence.atlassian.net/wiki/spaces/RAADM/pages/61315327 ,

а именно метод

GET .../record/{record_uuid}/storage_url/

https://ringme-confluence.atlassian.net/wiki/spaces/RAL/pages/17367258 (документация по записям разговора)