Простые (общие) примеры:
Исходящий вызов с добавочного 101 можно отследить следующими событиями:
101 Dial-out 101 Answer (в случае ответа вызываемой стороны) 101 Hangup
Входящий вызов (ivr 099) будут сгенерированы следующие события:
- при успешном соединении будут сгенерированы следующие события:
099 Dial-in .... <номер принявшего добавочного> answer (не обязателен для анализа) .... а также любые иные события необязательны для анализа 099 hangup (bridged:yes - обязателен для анализа успешности вызова)
- при неуспешном соединении будут сгенерированы следующие события:
099 Dial-in .... любые иные события необязательны для анализа 099 hangup (bridged:no - обязателен для анализа успешности вызова)
Сложные примеры включают в себя переадресации при прохождении звонка, переводы и т.п:
Такие звонки нужно логически объединять при получении событий, например в обычном звонке для одного звонящего:
099 Dial-in .... <номер принявшего добавочного> answer (не обязателен для анализа) .... любые иные события не обязательны для анализа 099 hangup (bridged:yes - обязателен для анализа успешности вызова)
Может быть множество разных обзвонов внутренних добавочных, переводов на внешний номер и т.д. Если есть необходимость логически соотнести любые исходящие вызовы (например, перевод на внешний номер) с изначальным входящем вызовом- нужно при поступлении 099 Dial-in
поместить call_id в память (например, memcached или redis), а при появлении 099 удалять call_id из памяти. Т.о. все исходящие вызовы можно будет соотнести с входящим по call_id
Для исходящего вызова может быть немного сложнее:
101 Dial-out 101 Answer (в случае ответа вызываемой стороны) 101 Hangup
При переадресации на внешний номер