Интеграция с Asterisk для обработки входящих звонков

Материал из BiTel WiKi

Перейти к: навигация, поиск

Данное руководство описывает процесс интеграции BGBilling, BGCRM и Asterisk для обработки в BGCRM входящих звонков. Обеспечивается функционал:

  1. поиска договоров по номеру АОН, по наименованию (если не найден автоматически);
  2. сохранение нового телефона в найденный договор;
  3. заведение связанного с договором процесса либо привязка сообщения (звонка) к уже существующему процессу.

При принятии звонка у оператора должно открываться примерно такое окно для обработки сообщения:

Обработка сообщения

Настройка по пунктам.

Содержание

Описание среды

  • Адрес Asterisk: 192.168.20.2
  • Адрес BGCRM: 192.168.20.0
  • В системе настроен плагин BGBilling, к которому подключен биллинг с идентификатором bg.
  • Параметр договора типа Телефон в биллинге: 27
  • Параметр типа "text" пользователя BGCRM с предлагаемым номером: 4

Asterisk

На эту тему в сети можно множество руководств. Например: http://habrahabr.ru/post/154933/ Настройку удобнее производить с помощью оболочки FreePBX, а ещё проще использовать готовый дистрибутив AsteriskNOW, включающий в себя сборку ОС с Asterisk ом и FreePBX.

Для настройки AMI укажите в файле manager.conf секрет и адрес доступа.

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
 
[crm]
secret = 55555
deny=0.0.0.0/0.0.0.0
permit=192.168.20.0/255.255.255.0
permit=127.0.0.1/255.255.255.0
read = call
writetimeout = 5000

BGCRM

В конфигурации сервера в переменной createOnStart добавить следующие классы:

createOnStart=ru.bgcrm.plugin.asterisk.AMIManager,ru.bgcrm.event.listener.MessageTypeCallListener

Так же в конфигурации определяется тип сообщения и обработчик конфгурация AMIManager.

messageType.1.title=Звонки
messageType.1.class=ru.bgcrm.dao.message.MessageTypeCall
messageType.1.search.1.title=Авто (номер)
messageType.1.search.1.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchCall
messageType.1.search.1.billingId=bg
messageType.1.search.1.commands=contractByPhoneParam:27
messageType.1.search.1.stringExpressionNumberPreprocess=if( numberFrom.length() == 11 ){ numberFrom = numberFrom.substring(1)}; return numberFrom;
messageType.1.search.2.title=По номеру/примечанию
messageType.1.search.2.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByTitleAndComment
messageType.1.search.2.billingId=bg
messageType.1.saver.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeContactSaverPhone
messageType.1.saver.paramId=27
messageType.1.offerNumberFromParamId=4
 
# AMI
asterisk:amiManager.1.messageTypeId=1
asterisk:amiManager.1.host=192.168.20.2
asterisk:amiManager.1.port=5038
asterisk:amiManager.1.login=crm
asterisk:amiManager.1.pswd=55555

JEXL макрос stringExpressionNumberPreprocess обрезает первый символ 11 значных номеров.

Запуск

После произведения настройки перезапустить сервер BGCRM и проглядеть bgcrm.log на наличие ошибок.

В оснастке сообщения зарезервировать номер, совершить на него звонок и ожидать открытия обработчика сообщения (см. скрин в начале статьи).

Личные инструменты