Интеграция с Asterisk для обработки входящих звонков
Материал из BiTel WiKi
Данное руководство описывает процесс интеграции BGBilling, BGCRM и Asterisk для обработки в BGCRM входящих звонков. Обеспечивается функционал:
- поиска договоров по номеру АОН, по наименованию (если не найден автоматически);
- сохранение нового телефона в найденный договор;
- заведение связанного с договором процесса либо привязка сообщения (звонка) к уже существующему процессу.
При принятии звонка у оператора должно открываться примерно такое окно для обработки сообщения:
Настройка по пунктам.
Описание среды
- Адрес 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