AZykov (обсуждение | вклад) |
AZykov (обсуждение | вклад) |
||
| Строка 30: | Строка 30: | ||
Примеры авторизации и выполнения REST API запросов можно посмотреть в [[Примеры API запросов|данной статье]]. | Примеры авторизации и выполнения REST API запросов можно посмотреть в [[Примеры API запросов|данной статье]]. | ||
Объект uc/calls поддерживает [https://vendor.era-platform.ru/docs/era/latest/api/rest/v1/uc/calls.html следующий набор операций]: | |||
{| class="wikitable" | |||
!HTTP verb | |||
!Endpoint | |||
!Описание | |||
|- | |||
|<code>GET</code> | |||
|<code>/rest/v1/uc/calls</code> | |||
|Получение списка звонков (GET) | |||
|- | |||
|<code>POST</code> | |||
|<code>/rest/v1/uc/calls</code> | |||
|Инициация нового звонка (POST) | |||
|- | |||
|<code>INVITE</code> | |||
|<code>/rest/v1/uc/calls</code> | |||
|Инициация нового звонка (INVITE) | |||
|- | |||
|<code>INVITEBYIVR</code> | |||
|<code>/rest/v1/uc/calls</code> | |||
|Инициация нового звонка с обслуживанием в IVR (INVITEBYIVR) | |||
|- | |||
|<code>LOOKUP</code> | |||
|<code>/rest/v1/uc/calls</code> | |||
|Поиск идентификатора звонка (LOOKUP) | |||
|- | |||
|<code>TRANSCRIBE</code> | |||
|<code>/rest/v1/uc/calls</code> | |||
|Поиск идентификатора звонка (LOOKUP) | |||
|- | |||
|<code>GET</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Получение информации о звонке (GET) | |||
|- | |||
|<code>REFER</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Перевод звонка на номер (REFER) | |||
|- | |||
|<code>REFERREPLACES</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Перевод звонка с подменой (REFERREPLACES) | |||
|- | |||
|<code>SWITCHCONF</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Преобразование звонка в конференцию (SWITCHCONF) | |||
|- | |||
|<code>REFERCONF</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Перевод звонка в конференцию (REFERCONF) | |||
|- | |||
|<code>NOTIFY</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Отправка события управления устройством (NOTIFY) | |||
|- | |||
|<code>SEND_DTMF</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Отправка DTMF сигнала в плечо (SEND_DTMF) | |||
|- | |||
|<code>SETUP_ASR</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Запуск/остановка стенографирования речи одной из сторон (SETUP_ASR) | |||
|- | |||
|<code>SETUP_RECORD</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Включение/выключение (добавление/удаление) канала записи диалога, а также управление паузой основной записи (SETUP_RECORD) | |||
|- | |||
|<code>SETUP_BINDINGS</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Управление метками диалога (SETUP_BINDINGS) | |||
|- | |||
|<code>STOP_HOLD_MELODY</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Остановка мелодии ожидания (STOP_HOLD_MELODY) | |||
|- | |||
|<code>DELETE</code> | |||
|<code>/rest/v1/uc/calls/<id></code> | |||
|Завершение звонка (DELETE) | |||
|} | |||
=== Получение данных о звонках === | |||
вфывфывфывфы | |||
=== Управление звонком === | |||
авыфвфывфывыфв | |||
= Интеграция с помощью WebSocket = | = Интеграция с помощью WebSocket = | ||
Версия от 10:35, 22 июля 2025
Общая информация
В рамках данной статьи будет рассмотрены способы интеграции управления звонками из внешней системы (CRM, SD и т.д.).
Под управлением звонками в рамках данной статьи подразумевается следующий набор функционала:
- Получение внешней системой данных о совершаемых звонках
- Возможность инициирования нового исходящего звонка
- Возможность соверешения перевода
- Возможность перевода звонка в конференцию
- Возможность постановки и снятия звонка с удержания
- Возможность отправки DTMF-сигналов
- Возможность завершения звонка
- Возможность принятия звонка
Кроме этих основных функций, также крайне полезно иметь возможность прослушивания и скачивания записи разговора из внешней системы.
В рамках платформы Эра существует три основных подхода к интеграции, позволяющие реализовать описанный функционал:
- Интеграция по WebSocket - внешняя система и платформа обмениваются сообщениями в реальном времени
- Интеграция методом REST API Long Polling - внешняя система периодически запрашивает данные платформы и отправляет команды в одностороннем порядке
- Интеграция с помощью механизма Webhook - каждая из систем вызывает сервисы другой
При этом внешняя система может использовать комбинированный подход, например получая события из WebSocket, и отправляя команды с помощью REST API. Последний вариант с Webhook не является штатным решением, однако может быть реализован при помощи инструментов платформы. Наиболее удобным вариантом является разработка собственных сервисов, обрабатывающих события платформы и перенаправляющих их во внешние системы. Разработке на платформе посвещен отдельный курс.
В рамках данной статьи будут рассмотрены интеграционные возможности WebSocket и Long Polling.
Интеграция с помощью Long Polling
Данный способ интеграции является односторонним, т.е. внешняя система сама запрашивает текущее состояние звонков с некоторой периодоичностью. Внешняя система обрабатывает овтеты платформы и сохраняет данные.
Для реализации этого подхода, используется объект /rest/v1/uc/calls и доступ к нему через REST API.
Примеры авторизации и выполнения REST API запросов можно посмотреть в данной статье.
Объект uc/calls поддерживает следующий набор операций:
| HTTP verb | Endpoint | Описание |
|---|---|---|
GET
|
/rest/v1/uc/calls
|
Получение списка звонков (GET) |
POST
|
/rest/v1/uc/calls
|
Инициация нового звонка (POST) |
INVITE
|
/rest/v1/uc/calls
|
Инициация нового звонка (INVITE) |
INVITEBYIVR
|
/rest/v1/uc/calls
|
Инициация нового звонка с обслуживанием в IVR (INVITEBYIVR) |
LOOKUP
|
/rest/v1/uc/calls
|
Поиск идентификатора звонка (LOOKUP) |
TRANSCRIBE
|
/rest/v1/uc/calls
|
Поиск идентификатора звонка (LOOKUP) |
GET
|
/rest/v1/uc/calls/<id>
|
Получение информации о звонке (GET) |
REFER
|
/rest/v1/uc/calls/<id>
|
Перевод звонка на номер (REFER) |
REFERREPLACES
|
/rest/v1/uc/calls/<id>
|
Перевод звонка с подменой (REFERREPLACES) |
SWITCHCONF
|
/rest/v1/uc/calls/<id>
|
Преобразование звонка в конференцию (SWITCHCONF) |
REFERCONF
|
/rest/v1/uc/calls/<id>
|
Перевод звонка в конференцию (REFERCONF) |
NOTIFY
|
/rest/v1/uc/calls/<id>
|
Отправка события управления устройством (NOTIFY) |
SEND_DTMF
|
/rest/v1/uc/calls/<id>
|
Отправка DTMF сигнала в плечо (SEND_DTMF) |
SETUP_ASR
|
/rest/v1/uc/calls/<id>
|
Запуск/остановка стенографирования речи одной из сторон (SETUP_ASR) |
SETUP_RECORD
|
/rest/v1/uc/calls/<id>
|
Включение/выключение (добавление/удаление) канала записи диалога, а также управление паузой основной записи (SETUP_RECORD) |
SETUP_BINDINGS
|
/rest/v1/uc/calls/<id>
|
Управление метками диалога (SETUP_BINDINGS) |
STOP_HOLD_MELODY
|
/rest/v1/uc/calls/<id>
|
Остановка мелодии ожидания (STOP_HOLD_MELODY) |
DELETE
|
/rest/v1/uc/calls/<id>
|
Завершение звонка (DELETE) |
Получение данных о звонках
вфывфывфывфы
Управление звонком
авыфвфывфывыфв
Интеграция с помощью WebSocket
Детальное описание WebSocket API можно найти на ресурсе Vendor.
Интеграция данным способом подразумевает обмен сообщениями между двумя системами.
В рамках платформы существует два подхода к использования WebSocket API:
- Token-API - для интеграции server-server. В рамках обмена сообщениями передаются события по всем пользователям
- User-API - для интеграции client-server. В рамках обмена сообщениями передаются события конкретного пользователя
Набор доступных API также отличается, однако методы и события работы со звонками доступны везде.
Общий подход интеграции выглядит таким образом:
- Внешняя система подписывается на события callevents
- Платформа Эра отправляет подписавшейся системе события звонков
- Внешняя система получает события, обрабатывает их, отображает результат пользователю (опционально)
- При необходимости управления звонком, внешняя система осуществляет вызовы REST API /rest/v1/uc/calls


Получение данных и событий звонков
Получение данных осуществляется при помощи подписки (subscr) на события callevents:
[
"subscribe",
{
"qid": 0.105938272,
"id": "bcdebcde-bcde-bcde-bcde-bcdebcdebcde",
"events": ["callevents.*"],
"objects": ["11"],
"expires": 300
}
]
Набор объектов (абонентов), по которым будут поступать события зависит от фильтра objects, типа используемого WebSocket API и набора прав учетной записи.
После подписки, платформа автоматически начнет присылать события, связанные с изменениями звонков - начало и окончание диалога, изменение состояния звонка, информацию о записи разговора и т.д.
Описание всех событий звонков, их структуры и свойств можно найти на ресурсе Vendor.
Внешняя система должна получать и обрабатывать эти события. В зависимости от бизнес-целей интеграции, данные о звонках и их состояниях могут быть сохранены во внешней системе, выведены пользователю в CTI-панели и т.д.
Управление звонком
Для отправки запросов на управление звонком, внешняя система использует вызовы REST API /rest/v1/uc/calls, так же как в примере с Long Polling. Все данные и идентификаторы для запросов передаются в состваве сообщений WebSocket.