События CTI-интеграции (ctievents)

Описание

Уровень абстракции над событиями телефонии для внешних CTI-систем (Computer Telephony Integration) в терминах устройств и вызовов: доставка, ответ, удержание, перевод, завершение. События строятся плагином cti из событий callevents всех доменов сайта и отправляются подписчикам мастер-домена. Пример потребителя — адаптер системы записи разговоров SmartLogger (ЦРТ), подключаемый по gRPC (опция роли mware cti_servers). Помимо событий звонков адаптер передаёт своему клиенту состав операторов и устройств доменов и его изменения (по событиям $system).

Table 1. Системные характеристики

Класс

ctievents

Тип домена

master

Типы назначения

wssubscr (подписки мастер-домена), kafka (мастер-домен)

Логическая роль источник

mware (плагин cti мастер-домена сайта)

Логическая роль обработчик

Подписка и доставка

  • Подписка в мастер-домене: "events": ["ctievents.*"] или список ctievents.<type>, "objects": "any"; через Token-API (websocket) или веб-хуки (не рекомендуются: события всех звонков сайта). В Kafka — при настроенном в мастер-домене kafka_mustache и только пока события формируются (см. ниже): Kafka подписчиком не считается и формирование не включает.

  • Каждый сайт формирует события звонков своего сайта: подписчик получает события тех сайтов, на которых он подписан (адаптер SmartLogger — только своего сайта).

  • События звонков формируются, пока на сайте у какого-либо экземпляра mware задана опция cti_servers — тогда с запуска mware, включая уже идущие звонки, независимо от подключения потребителя. Без неё — пока у класса есть подписчики, получающие события этого сайта: обработка включается в течение минуты после появления первого подписчика (звонки, начатые раньше, приходят с середины) и выключается через 10 минут после ухода последнего. События $system и внешние события формируются всегда.

  • Выключение: значение "cti" в списке events настройки мастер-домена disabled_plugins.

Формат уведомления:

["notify", {"sid": "...", "class": "ctievents", "type": "call_delivered", "eventts": 1792170171426, "data": {...}}]

События

Тип Когда

call_delivered

Вызов доставлен на устройство

call_established

Разговор установлен

call_held

Разговор поставлен на удержание

call_retrieved

Разговор снят с удержания

call_transfer

Вызов переведён

call_cleared

Вызов или разговор завершён

$system

Изменились пользователи или SIP-пользователи домена

Внешние события

Отправлены внешней системой методом cti_event

Внешние события (cti_event)

Событие класса может сгенерировать внешняя система (продуктовый слой) рабочего домена запросом cti_event Token-API ccs:

["cti_event", {"qid": 1, "type": "agent", "params": {"agent_id": "operator1@pbx.era-platform.ru", "agent_name": "Operator 1", "agent_state": "ready", "device_id": "13@pbx.era-platform.ru"}}]
  • type — тип события, params — объект data; в data добавляется domain — домен канала интеграции.

  • Ответа на запрос нет.

  • Тип и состав params не проверяются; потребитель понимает свои типы. Адаптер SmartLogger, помимо событий выше, принимает device, agent, group, agentgroup, call_conference, call_queued, call_dequeued.

Пример уведомления
["notify", {"sid": "my_subscr", "class": "ctievents", "type": "agent", "eventts": 1792170212400,
  "data": {"agent_id": "operator1@pbx.era-platform.ru", "agent_name": "Operator 1", "agent_state": "ready",
           "device_id": "13@pbx.era-platform.ru", "domain": "pbx.era-platform.ru"}}]