Dial-out анализ и логика событий

Обработка dial-out в рамках его [SubCallID]

В данном подразделе указан порядок анализа событий, несоблюдение последовательности которого может привести к некорректному поведению интеграции


CallerExtension - номер добавочного, инициатор исходящего вызова(Имеет формат типа: 453*111@доменАТС, берем из него только то, что до собаки - @ ). Пользователю данного добавочного в CRM сразу же получив dial-out нужно вывести уведомление об исходящем с указанием той сущности, которая была указана в CalledNumber. Дальнейшая регистрация вызова в CRM осуществляется с указанием того пользователя, которому соответствует добавочный из CallerExtension

Получив событие answer мы понимаем, что соединение установлено (возможно передаем дополнительное уведомление в CRM для вывода звонящему пользователю (связанному с CallerExtension) какой-то доп.информации и ждем событие hangup с таким же [SubCallID], для того, чтобы передать данные об этом исходящем в CRM:
[Duration] - длительность
[RecID] - ID записи разговора
CalledDID - источник вызова (вызываемый извне номер, посредством которого вызов попал в АТС) - при наличии обязательно передаем в CRM

Попутно можно вывести пользователю CRM(завязанному на CallerExtension) уведомление об окончании его диалога с CalledNumber.


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


Логика

  1. Если CalledNumber события dial-out РАВЕН добавочному данной АТС, то такие вызовы мы по-умолчанию игнорируем(как локальные звонки).

  2. Если CalledNumber события dial-out НЕ равен добавочному данной АТС, то такие вызовы мы ВСЕГДА
    принимаем к обработке интеграцией и данные регистрируем в CRM

Итого:
все 100% вызовов, по которым после события dial-out мы получили answer и которые не относятя к локальным
вызовам АТС, не смотря на наличие "[Bridged] => no" в hangup от ИВР-а/Очередей в рамках глобального [CallID], мы
заносим в CRM с регистрацией по [SubCallID].