artem
03.10.2018
1048

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

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

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

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices