Интеграция с телефонией Asterisk

Сложный

Для взаимодействия с 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, а также значения приведенных событий, которые используются при обработке входящего звонка, приведены в таблице ниже.

Описание событий
Asterisk log
CMS
Action
Client

Создает канал и добавляет его в коллекцию.

 
 
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent.
PutHoldAction
Обрабатывает событие PutHoldAction, отображает установку звонка на удержание.
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent.
EndHoldAction
Обрабатывает событие EndHoldAction, отображает установку звонка на удержание.
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent.
RingFinished
Обрабатывает событие RingFinished, отображает завершение звонка.
Выполняет поиск канала по <unique_id> в коллекции каналов, заполняет данные и генерирует событие с использованием метода fireEvent.
RingStarted
Обрабатывает событие RingStarted, отображает на панели исходящий звонок.
Выполняет поиск канала по <unique_id> в коллекции каналов и генерирует событие с использованием метода fireEvent.
CommutationStarted
Обрабатывает событие CommutationStarted, отображает разговор.
 
 
 
Инициирует новое событие в Asterisk по нажатию кнопки Ответить (Answer).

Перечень AMI-событий с описанием параметров событий Asterisk 13 содержится в официальной документации Asterisk. Перечень AMI-событий с описанием параметров событий Asterisk 16 содержится в официальной документации Asterisk. Перечень AMI-событий с описанием параметров событий Asterisk 18 содержится в официальной документации Asterisk.