artem
03.10.2018
1802

Кастомизация интеграции Bitrix CRM с Asterisk средствами модуль коннектора BX24Asterisk

В рамках данной статьи будет рассмотрена возможность кастомизации интеграции средствами модуль коннектора BX24Asterisk. Мы рассмотрим возможность смены транка для исходящей маршрутизации в зависимости от значения дополнительного поля в карточке клиента, а так же рассмотрим конвертацию записей разговоров в mp3 по завершению звонка.

1. Описание

2. Инструкция

3. Исходящая маршрутизация в зависимости от параметра в карточке клиента

Описание:

Ранее мы рассмотрели Возможность интеграции АТС на базе 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 и пройдем авторизацию под учетной записью с правами администратора

Авторизация на портале Bitrix CRM

2. Для возможности получения данных из CRM необходимо выполнить предварительную настройку, перейдем в Приложения -> Вебхуки -> Добавить вебхук -> Входящий вебхук

Добавление вебхука

3. В загруженной форме добавления вебхука необходимо заполнить название(произвольное) и права в соответствии со скриншотом:

Назначение прав вебхуку

4. Успешным добавлением вебхука будет появление API ключа, который необходимо сохранить для дальнейшей настройки кастомизации

API ключ Bitrix CRM

5. Перейдем к редактированию лида клиента и добавления дополнительного поля в зависимости от значения которого будет происходить исходящая маршрутизация

Лиды компании

6. Нажимает Создать поле -> Строка (можно прописывать произвольное текстовое значение) или Список(статический список текстовых значений)

Создание дополнительного поля в карточке клиента

7. При создание дополнительного поля в карточке клиента необходимо будет заполнить «Название поля», а так же выбрать будет ли данное поле обязательным для заполнения в последующих случаях, после указания всех значений дополнительного поля необходимо нажать «Сохранить»

Создание дополнительного поля в карточке клиента

8. Успешным добавлением дополнительного поля будет появление его в карточке клиента со статусом «Не заполнено»

Дополнительное поле в карточке клиента

9. Добавим произвольное текстовое значение, по которому будем производить изменение исходящего маршрута в созданное дополнительное поле

Внесение текстового значения в дополнительное поле

10. Убедимся что файл кастомизации подключен к модуль коннектору, для этого в интернет обозревателе(Google Chrome,  Firefox, Opera….) перейдем по адресу вида http://ip_адрес_сервера_Asterisk:8077/config

Во время входа в WEB панель конфигуратора необходимо будет пройти процедуру авторизации, указав логин и пароль, который указывался во время настройки модуль коннектора.

Включение кастомизации в модуль коннекторе BX24asterisk

В последней версии модуль коннектора достаточно поставить галочку напротив пункта «Включить кастомизацию», в старой версии необходимо было так же дополнительно указать путь расположения файла кастомизации.

11. Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.

Подключение по SSH через Putty

Авторизация на сервере

Внимание, при авторизации на сервере, пароль в консоли не отображается.

SSH консоль подключения

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/

WEB панель FreePBX

14. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»

Авторизация во FreePBX

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), либо системного терминала.

Подключение по SSH через Putty

Авторизация на сервере

Внимание, при авторизации на сервере, пароль в консоли не отображается.

SSH консоль подключения

Выполним команду вида:

# 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. На данном шаге кастомизация интеграции завершена.

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.