Не так давно, нами была проведена работа по интеграции IP-телефонии на базе платформы Asterisk. Пользователям в веб-интерфейсе мы предоставили возможность совершать звонки, принимать звонки, прослушивать записи звонков и переадресовывать их как на номер отдела, так и на номер конкретного сотрудника.

Интеграция строится на прослушивании лога событий и состояний системы. Каждая операция представляет собой цепочку событий, рассмотрим на примере исходящего звонка - цепочка событий начинается с инициализации набора номер и завершается когда один из участников звонка кладет трубку, либо абонент не поднимает её и не отвечает на звонок, чтобы отразить в системе все статусы звонка, время звонка и прочее, необходимо разобрать каждую цепочку событий, при необходимости внести дополнительные контексты, формат каждого события и контексты необходимо предварительно согласовать с администратором сервера Asterisk. Подключение к логу событий удобно совершать с помощью веб-сокета и желательно обрабатывать их вне зависимости от порядка их возникновения в системе, чтобы организовать их мультипоточную обработку.