Для взаимодействия с Asterisk используется интерфейс Asterisk Manager Interface (AMI), при помощи которого происходит подключение к серверу Asterisk, настройка и управление клиентскими программами. Описание AMI содержится в официальной документации Asterisk. Creatio позволяет настроить интеграцию c Asterisk версий 13, 16 и 18.
Действия, которые позволяет выполнять AMI:
- Считывает события, которые происходят в АТС.
- Отправляет команды управления (ответить, поставить/снять с удержания, завершить, перевести) звонком.
Asterisk Manager API позволяет клиентским программам соединяться с сервером Asterisk по протоколу TCP/IP. Для коммуникации между АТС Asterisk и подсоединенным клиентом Asterisk Manager API используется простой текстовый построчный протокол вида "параметр: значение". Окончание строки определяется последовательностью перевода строки (LF) и возврата каретки (CR). О переводе строки читайте в Википедии. О возврате каретки читайте в Википедии.
Виды кареток:
- LF — для приложений Creatio на платформе .NET Core.
- CRLF — для приложений Creatio на платформе .NET Framework.
Чтобы настроить интеграцию с Asterisk, воспользуйтесь инструкцией, которая приведена в статье Настроить интеграцию с телефонией Asterisk.
Классы механизма интеграции с Asterisk
Классы, которые реализуют логику работы механизма интеграции с Asterisk:
- Terrasoft.Messaging.Asterisk.AsteriskAdapter — преобразует события Asterisk в высокоуровневые события модели звонка, которая используется в интеграции Creatio.
- Terrasoft.Messaging.Asterisk.AsteriskManager — создает и удаляет пользовательское соединение с сервером Asterisk.
- Terrasoft.Messaging.Asterisk.AsteriskConnection — пользовательское соединение при интеграции с Asterisk.
- Terrasoft.Messaging.Asterisk.AsteriskClient — отправляет команды на сервер Asterisk.
Ниже приведена диаграмма последовательности выполнения звонка.
Условия звонка:
- Оператор выполняет звонок абоненту.
- Абонент устанавливает звонок на удержание и снимает его с удержания.
- Оператор завершает звонок.
Интерпретация событий, которую выполняет CMS, а также значения приведенных событий, которые используются при обработке входящего звонка, приведены в таблице ниже.
|
|
|
|
---|---|---|---|
|
Создает канал и добавляет его в коллекцию. |
|
|
|
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent. |
|
Обрабатывает событие Put |
|
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent. |
|
Обрабатывает событие End |
|
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent. |
|
Обрабатывает событие Ring |
|
Выполняет поиск канала по <unique_id> в коллекции каналов, заполняет данные и генерирует событие с использованием метода fireEvent. |
|
Обрабатывает событие Ring |
|
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent. |
|
Обрабатывает событие Commutation |
|
|
|
Инициирует новое событие в Asterisk по нажатию кнопки Ответить (Answer). |
Перечень AMI-событий с описанием параметров событий Asterisk 13 содержится в официальной документации Asterisk. Перечень AMI-событий с описанием параметров событий Asterisk 16 содержится в официальной документации Asterisk. Перечень AMI-событий с описанием параметров событий Asterisk 18 содержится в официальной документации Asterisk.