Кастомизация интеграции Bitrix CRM с Asterisk средствами модуль коннектора BX24Asterisk
В рамках данной статьи будет рассмотрена возможность кастомизации интеграции средствами модуль коннектора BX24Asterisk.
Описание
Ранее мы рассмотрели Возможность интеграции АТС на базе Asterisk с Bitrix CRM посредством модуль коннектора BX24asterisk:
В рамках данной статьи будет рассмотрена возможность кастомизации интеграции средствами модуль коннектора BX24Asterisk. Мы рассмотрим возможность смены транка для исходящей маршрутизации в зависимости от значения дополнительного поля в карточке клиента, а так же рассмотрим конвертацию записей разговоров в mp3 по завершению звонка. Основная информация была получена из официальной документации разработчика:
https://bx24asterisk.ru/support/17-wav-to-mp3-convertation
https://bx24asterisk.ru/support/23-originate
Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 6.8 + Asterisk 11.23.1 + FreePBX 13.
Инструкция
Исходящая маршрутизация в зависимости от параметра в карточке клиента.
1. Перейдем в интернет обозревателе на страницу Bitrix CRM и пройдем авторизацию под учетной записью с правами администратора
2. Для возможности получения данных из CRM необходимо выполнить предварительную настройку, перейдем в Приложения -> Вебхуки -> Добавить вебхук -> Входящий вебхук
3. В загруженной форме добавления вебхука необходимо заполнить название(произвольное) и права в соответствии со скриншотом:
4. Успешным добавлением вебхука будет появление API ключа, который необходимо сохранить для дальнейшей настройки кастомизации
5. Перейдем к редактированию лида клиента и добавления дополнительного поля в зависимости от значения которого будет происходить исходящая маршрутизация
6. Нажимает Создать поле -> Строка (можно прописывать произвольное текстовое значение) или Список(статический список текстовых значений)
7. При создание дополнительного поля в карточке клиента необходимо будет заполнить «Название поля», а так же выбрать будет ли данное поле обязательным для заполнения в последующих случаях, после указания всех значений дополнительного поля необходимо нажать «Сохранить»
8. Успешным добавлением дополнительного поля будет появление его в карточке клиента со статусом «Не заполнено»
9. Добавим произвольное текстовое значение, по которому будем производить изменение исходящего маршрута в созданное дополнительное поле
10. Убедимся что файл кастомизации подключен к модуль коннектору, для этого в интернет обозревателе(Google Chrome, Firefox, Opera….) перейдем по адресу вида http://ip_адрес_сервера_Asterisk:8077/config
Во время входа в WEB панель конфигуратора необходимо будет пройти процедуру авторизации, указав логин и пароль, который указывался во время настройки модуль коннектора.
В последней версии модуль коннектора достаточно поставить галочку напротив пункта «Включить кастомизацию», в старой версии необходимо было так же дополнительно указать путь расположения файла кастомизации.
11. Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
Внимание, при авторизации на сервере, пароль в консоли не отображается.
12. Приступим к настройке кастомизации, для этого в консоли выполним ряд команд вида:
# nano +58 /opt/bx24asterisk/customizer.php
Для сохранения внесенных изменений в редакторе Nano используем сочетаний клавиш Ctrl+O (сохранить изменения) и Ctrl+X(выйти из редактора
Более подробно о существующих методах, которым можно обращаться по API Bitrix CRM можно узнать официальной документации разработчика https://dev.1c-bitrix.ru/rest_help/crm/
И добавим следующий код:
//////////////////////////////////////////////////////////////////////////////////
// Метод crm.lead.list. Получение ID лида по номеру телефона клиента
$queryUrl = ‘https://b24-p30ku0.bitrix24.ru/rest/1/vujen3a2ii39tpn5/crm.lead.list.json’;
$queryData = http_build_query(array(
‘filter[PHONE]’ => $phone,
));
// Структура CURL запроса
$curl_filter = curl_init();
curl_setopt_array($curl_filter, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryUrl,
CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl_filter);
curl_close($curl_filter);
$result = json_decode($result, 1);
$id=$result[‘result’][0][‘ID’];
///////////////////////////////////////////////////////////////////////////////////
// Метод crm.lead.get. Получение значения текстового поля по ID лида
$idUrl = ‘https://b24-p30ku0.bitrix24.ru/rest/1/vujen3a2ii39tpn5/crm.lead.get.json’;
$idData = http_build_query(array(
‘id’ => $id,
));
if ($id > 0) {
// Структура CURL запроса
$curl_id = curl_init();
curl_setopt_array($curl_id, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $idUrl,
CURLOPT_POSTFIELDS => $idData,
));
$result = curl_exec($curl_id);
curl_close($curl_id);
$result_id = json_decode($result, 1);
$text = $result_id[‘result’][‘UF_CRM_1535896400460’];}
///////////////////////////////////////////////////////////////////////////////////
// Если текстовое значение входит в масив, то изменяем контекст осуществления звонка
$channel = explode(‘/’, $params[‘channel’]);
$contexts = array(
‘from-74959898533’ => array(‘Grandstream’),
‘from-78009898533’ => array(‘Yealink’),
);
foreach($contexts as $context => $texts){
if(in_array($text, $texts)){
$params[‘context’] = $context;
break;
}
}
///////////////////////////////////////////////////////////////////////////////////
Где основные параметры:
b24-p30ku0.bitrix24.ru – адрес вашей Bitrix CRM
vujen3a2ii39tpn5 – api Bitrix CRM полученный на четвертом шаге данной инструкции
$id=$result[‘result’][0][‘ID’] – полученный идентификатор лида
$text = $result_id[‘result’][‘UF_CRM_1535896400460’] – полученное текстовое значение
from-7XXXXXXXXXX – контекст через который осуществлять исходящий звонок в зависимости от значения дополнительного поля в CRM
Параметр текстового поля (в примере данной статьи UF_CRM_1535896400460) можно выяснить перейдя в интернет обозревателе(Google Chrome, Firefox, Opera….) по адресу вида
https://b24-p30ku0.bitrix24.ru/rest/1/vujen3a2ii39tpn5/crm.lead.get.json?id=7 где
b24-p30ku0.bitrix24.ru – адрес вашей Bitrix CRM
vujen3a2ii39tpn5 – api Bitrix CRM полученный на четвертом шаге данной инструкции
12. На данном шаге необходимо выполнить настройку диалплана Asterisk, для этого выполним ряд команд вида
# nano /etc/asterisk/extensions_custom.conf
В конце добавим контекст для обработки исходящего вызова следующего содержания
[from-7XXXXXXXXXX]
exten => _.,1,NoOp(Bitrix custom 7XXXXXXXXXX)
same => n,Set(VOLUME(TX)=5)
same => n,Set(VOLUME(RX)=5)
same => n,Goto(from-internal,01${EXTEN},1)
Где ключевые парамметры
from-7XXXXXXXXXX – наименование контекста, для удобства можно указать номер городской линии используемой для осуществления исходящего звонка
01${EXTEN} – 01 префикс который в последующем укажем в диалпатернах для разделения исходящей маршрутизации
Для сохранения внесенных изменений в редакторе Nano используем сочетаний клавиш Ctrl+O (сохранить изменения) и Ctrl+X(выйти из редактора)
13 Выполним добавление дополнительных диалпатернов, для этого перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.170.163/
14. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»
15. Перейдем в меню Connectivity -> Outbound Routes -> Add Outbound Route
16. В появившейся форме ключевыми параметрами для заполнения будут:
Route name – имя исходящего маршрута
Trunk Sequence for Matched Routes – транк закрепленный за требуемой городской линией
На вкладке «Dial Patterns» необходимо настроить параметры «Prefix» и «match pattern» в соответствии с настройками префикса, который указан в контексте вызова, шага 12 данной инструкции
Более подробно по настройки исходящей маршрутизации можно узнать из следующей статьи: https://voxlink.ru/kb/freepbx/freepbx-outbound-routing/
17. На данном шаге кастомизация исходящей маршрутизации в зависимости от текстового значения в Bitrix CRM завершена, последующие звонки по click2call будут осуществляться через соответствующие исходящие маршруты. Если в карточке клиента не присвоено никакое тестовое значение, то исходящий звонок будет осуществляться через исходящий маршрут без дополнительных префиксов.
18. Перейдем к настройке конвертации записей разговоров по завершению звонка в формат mp3. Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
Внимание, при авторизации на сервере, пароль в консоли не отображается.
Выполним команду вида:
# nano +65 /opt/bx24asterisk/customizer.php
Для сохранения внесенных изменений в редакторе Nano используем сочетаний клавиш Ctrl+O (сохранить изменения) и Ctrl+X(выйти из редактора). Для быстрого поиска по ключевому слову можно так же использовать сочетание клавиш Ctrl+W.
19. По умолчанию в последних версиях модуль коннектора BX24Asterisk уже имеется необходимый код, который отвечает за конвертацию записей разговоров по завершению звонка, а также редактирование записи в MySQL таблице. Для того чтобы конвертация стала активной достаточно снять комментарии /* с исполняемого кода
/* Пример конвертации записей разговоров в mp3 */
extract(pathinfo($path));
if ($extension === ‘wav’ && file_exists($path)) {
$newPath = «{$dirname}/{$filename}.mp3»;
$command = «lame -h -b 192 ‘{$path}’ ‘{$newPath}'»;
exec($command, $_, $exitCode);
if ($exitCode === 0) {
$newBasename = basename($newPath);
mysqli_query(getDB(), «UPDATE `cdr` SET `recordingfile` = ‘{$newBasename}’ WHERE `recordingfile` = ‘{$basename}'»);
unlink($path);
$path = $newPath;
} else {
return array(
‘state’ => ‘error’,
‘data’ => «Ошибка конвертации: {$exitCode}»,
);
}
}
20. На данном шаге кастомизация интеграции завершена.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.