Creatio development guide
Это документация Creatio версии 7.8.0. Мы рекомендуем использовать новую версию документации.

Asterisk

Glossary Item Box

Общие положения

Для взаимодействия с сервером Asterisk используется AMI (Asterisk Manager API). Manager API позволяет клиентским программам соединяться с сервером Asterisk, используя TCP/IP протокол. Данный API (Application Programming Interface) позволяет считывать события, происходящие в автоматической телефонной станции (АТС), и отправлять команды управления звонком.

К сведению

До версии 7.8.4, bpm'online поддерживает интеграцию c Asterisk до версии 11 включительно. Начиная с версии 7.8.4, bpm'online поддерживает интеграцию c Asterisk до версии 13.

Для коммуникации между АТС Asterisk и подсоединенным Manager API клиентом используется простой текстовый построчный протокол вида: "параметр: значение". Окончание строки определяется последовательностью перевода строки и возврата каретки (CRLF).

К сведению

В дальнейшем для набора строк вида "параметр: значение", после которых идет пустая строка, содержащая только CRLF, для упрощения будет использоваться термин "пакет".

Настройка конфигурационного файла сервиса Messaging Service для интеграции bpm'online с Asterisk

Для работы интеграции с bpm'online необходимо установить Terrasoft Messaging Service (TMS) на выделенном компьютере, который будет использоваться в качестве сервера данной интеграции. В конфигурационном файле Terrasoft.Messaging.Service.exe.config необходимо установить следующие параметры для коннектора Asterisk.

<asterisk filePath="" url="Имя_или_адрес_сервера_Asterisk" port="Порт_сервера_Asterisk" userName="Логин Asterisk" secret="Пароль Asterisk" originateContext="Исходящий контекст" parkingLotContext="Контекст парковки" autoPauseOnCommutationStart="true" queueExtensionFormat="Local/{0}@from-queue/n" asyncOriginate="true" sendRingStartedOnRingingState="true" traceQueuesState="false" packetInfoConfig="Дополнительные параметры пакетов для обработки в конфигурации" />

Порты для интеграции bpm'online с Asterisk

  • TMS принимает от браузера WebSocket подключение на порт 2013 по протоколу TCP.
  • TMS подключается к серверу Asterisk по умолчанию на порт 5038.

Сервис Terrasoft Messaging Service для интеграции bpm'online с Asterisk

Интеграционная часть Messaging Service реализована в ядре основного решения bpm'online в библиотеке Terrasoft.Messaging.Asterisk.

Основные классы библиотеки:

  • AsteriskAdapter — класс, преобразующий события Asterisk в высокоуровневые события модели звонка, используемой в интеграции bpm'online.
  • AsteriskManager — класс, использующийся для создания и удаления пользовательского соединения с сервером Asterisk.
  • AsteriskConnection — класс, представляющий собой пользовательское соединение при интеграции с Asterisk.
  • AsteriskClient — класс, использующийся для отправки команд на сервер Asterisk.

Пример взаимодействия CtiModel, Terrasoft Messaging Service и Asterisk Manager API

Исходящий звонок оператора абоненту с установкой звонка на удержание абонентом, снятия с удержания абонентом и завершения звонка оператором.

На рис. 1 приведена последовательнось возникновения событий для данного примера. А в таблице 1 приведен пример обработки событий — как данные события интерпретируются TMS, какие значения из приведенных событий используются при обработке входящего звонка.

Рис. 3. — Последовательность возникновения событий при звонке

scr_asterisk_events.png

Табл. 1. — События Asterisk

Asterisk log TMS Action Client

{

Event: newchannel

Channel: <channel_name>

UniqueID: <unique_id>

}

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

new AsteriskChannel({

Name: <channel_name>,

UniqueId: <unique_id>

});

{

Event: Hold

UniqueID: <unique_id>

Status: "On"

}

В коллекции каналов ищется канал по <unique_id> и с помощью метода fireEvent генерируется событие PutHoldAction Обработка события PutHoldAction, отображение установки звонка на удержание

{

Event: Hold

UniqueID: <unique_id>

Status: "Off"

}

В коллекции каналов ищется канал по <unique_id> и с помощью метода fireEvent генерируется событие EndHoldAction Обработка события EndHoldAction, отображение установки звонка на удержание

{

Event: Hangup

UniqueID: <unique_id>

}

В коллекции каналов ищется канал по <unique_id> и с помощью метода fireEvent генерируется событие RingFinished Обработка события, отображение завершения звонка

{

Event: Dial

SubEvent: Begin

UniqueID: <unique_id>

}

В коллекции каналов ищется канал по <unique_id>, заполняются данные и с помощью метода fireEvent генерируется событие RingStarted Обработка события RingStarted, отображение на панели исходящего звонка

{

Event: Bridge

UniqueID: <unique_id>

}

В коллекции каналов ищется канал по <unique_id> и с помощью метода fireEvent генерируется событие CommutationStarted Обработка события CommutationStarted, отображение разговора
Нажатие кнопки "Ответить" инициирует новое событие в Asterisk

События Asterisk

Подробный список событий и информация об их параметрах приведены в докуметации по Asterisk.

© Terrasoft 2002-2016.

Был ли данный материал полезен?

Как можно улучшить эту статью?