Dial-in анализ и логика событий
Вывод карточки звонящего по событию dial-in
В этом подразделе указан порядок анализа событий, не соблюдения последовательности которого может привести к некорректному поведению интеграции!
Актуально только для dial-in в рамках его [SubCallID].
CalledNumber - номер добавочного, которому поступил данный входящий вызов. Его пользователю в CRM сразу же получив dial-in нужно вывести уведомление с указанием той сущности, которая была указана CRM-кой по запросу с номером из CallerIDNum.
Дальнейшая регистрация вызова в CRM осуществляется с указанием того пользователя, которому соответствует добавочный из CalledNumber, но только если данный вызов был принят добавочным(в рамках данного [SubCallID] было событие answer).
По событию answer следующему за dial-in мы понимаем, какой точно добавочный принял этот вызов. Если обзвон добавочных шел параллельно, то по остальным [SubCallID] данного вызова в рамках глобального [CallID] АТС отдаст события hangup, по которыму нужно скрывать уведомления об этом входящем вызове у остальных пользователей CRM, т.к. для них он уже будет не актуален, или вывести новое уведоления, с указанием того, что данный вызов
был принят другим добавочным(в случае, если скрыть предыдущее не предстваляется возможным).
Получив событие answer мы понимаем, что соединение установлено и ждем событие hangup с таким же [SubCallID], для того, чтобы передать данные об этом входящем в CRM:
[Duration] - длительность
[RecID] - ID записи разговора
CalledDID - источник вызова(номер, посредством которого вызов попал в АТС) - при наличии обязательно передаем в CRM
Попутно можно вывести пользователю CRM(завязанному на CalledNumber) уведомление об окончании его диалога с CallerIDNum.
Успешный вызов имеет CallStatus=ANSWER
Не успешные вызовы:
Status=CANCEL - отменен звонящим,
CallStatus=BUSY - вызываемый номер занят.
Возможно еще другие варианты. Такие вызовы ни в коем случае не должны попасть в CRM как успешные.
Пример логики
Если CallerIDNum события dial-in РАВЕН добавочному данной АТС, то такие вызовы игнорируются (как локальные звонки), если не указано иного по доп.параметру ниже.
1.1) Если CallerIDNum события dial-in РАВЕН добавочному данной АТС, НО присутствует параметр [RemoteNumber], то такой вызов принимается в обработку интеграцией, а значение из [RemoteNumber] используется в качестве номера звонящего(вместо CallerIDNum) при регистрации вызова в CRM.Если CallerIDNum события dial-in НЕ равен добавочному данной АТС, то такие вызовы мы ВСЕГДА(100%)
принимаем к обработке интеграцией.
Итого:
Все 100% вызовов, по которым после события dial-in был получен answer и которые не относятя к локальным вызовам АТС, не смотря на наличие "[Bridged] => no" в hangup от ИВР-а/Очередей в рамках глобального [CallID], фиксируются в CRM с регистрацией по [SubCallID].
….
…