artem
13.10.2018
457

Интеграция Bitrix CRM с Asterisk средствами модуль коннектора ViStep с открытым исходным кодом

Интеграция Bitrix CRM с Asterisk средствами модуль коннектора ViStep с открытым исходным кодом .

Описание:

Ранее мы рассмотрели три способа интеграции Asterisk и Bitrix CRM:

https://voxlink.ru/kb/asterisk-installation/integraciya-bitrix24-s-asterisk-ispolzuya-prilozhenie-prostye-zvonki/ — с использованием модуль коннектора «Простые звонки»

https://voxlink.ru/kb/asterisk-installation/integraciya-bitrix24-ispolzuya-prilozhenie-integraciya-s-asterisk/ — с использованием модуль коннектора BX24Asterisk старой версии.

https://voxlink.ru/kb/integraciya-s-crm/Integraciya-Bitrix-CRM-s-Asterisk-BX24Asterisk/ — с использованием модуль коннектора BX24Asterisk новой версии.

Недостатком данных двух методов являлось необходимость использования интернет обозревателя Google Chrome с предустановленным расширением(приложением) от разработчика модуль коннектора.

В рамках данной статьи будет рассмотрена интеграция Asterisk и Bitrix CRM средствами модуль коннектора Vistep с открытым исходным кодом, который не требует обязательного использования  интернет обозревателя Google Chrome и обладает хорошим списком возможностей, а так же реализацией всевозможных кастомизаций интеграции при достаточном знании языка программирования «PHP».

Возможности:

1.В момент вызова открывается карточка клиента
1.1. Основная информация о клиенте во время вызова и разговора
1.2. Быстрый переход к детальной информации и сделкам клиента
1.3. Быстрое создание сделки и счета клиенту
1.4. Комментарий к текущему разговору

Создание звонков в CRM. Для каждого разговора в CRM создается дело
2.1. Возможно прослушать запись разговора
2.2. Фиксируется длительность каждого разговора

Звонки прямо из CRM
3.1. Кликом по номеру телефона в карточке клиента(Click2Call)

Автоматическое создание лидов.
4.1. Автоматически создается лид для неизвестного номера
4.2. Возможно указать разные источники лидов исходя из того, на какой номер телефона к вам позвонили

Фиксация пропущенных звонков
5.1. Для неизвестных номеров автоматически создаются лиды
5.2. Для клиентов автоматически создаются события пропущенного звонка на ответственного сотрудника

Автоматическое соединение с ответственным специалистом

Возможность кастомизации интеграции

Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 6.8 + Asterisk 13.21.0 + FreePBX 13.

Инструкция:

1.Перейдем в интернет обозревателе на страницу Bitrix CRM и пройдем авторизацию под учетной записью с правами администратора

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

Перейдем в Приложения→Вебхуки → Добавить вебхук → Входящий вебхук и выполним добавление вебхука в соответвии со скриншотом ниже:

Добавление входящего вебхука

Добавление входящего вебхука

После добавления входящего вебхука система отобразит URL для обращения к REST API CRM, который необходимо сохранить и скопировать для последующей настройки

REST API входящего вебхука

Для возможности осуществления исходящих звонков перейдем в Приложения→Вебхуки → Добавить вебхук → Исходящего вебхук и выполним добавление вебхука в соответвии со скриншотом ниже:

REST API исходящего вебхука

REST API исходящего вебхука

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

Код авторизации

Выполним закрепление внутренних номеров за сотрудниками компании в CRM, для этого перейдем в меню Телефония→Пользователи→ Настроить в появившемся окне прописать параметр «Внутренний номер», выбрать в качестве «Номер для исходящего звонка» созданный нами ранее исходящий вебхук и нажать «Сохранить»

Закрепление внутреннего номера за сотрудником

Закрепление внутреннего номера за сотрудником

Для возможности осуществления исходящих звонков из CRM системы необходимо выполнить настройки форматирования номера, для этого перейдем в CRM→ Еще→ Настройки→ Другое→ Прочие настройки→ Форматирование и в поле «Формат вывода ссылок «callto»» необходимо выбрать «вызов через телефонию Битрикс24» и нажать «Применить»

Редактирование настроек форматирования номера

Редактирование настроек форматирования номера

Редактирование настроек форматирования номера

При использование коробочной версии Bitrix CRM, для корректного прохождения исходящих звонков необходимо добавить несколько строк в файл dbconn.php, для этого перейдем в панель Администратора→ Контент→ Файлы и папки→ Bitrix→ php_interface→ редактировать как PHP и в конец файла добавим следующие строки:

if($_REQUEST[‘COMMAND’] === ‘startCallViaRest’ || $_SERVER[‘REQUEST_URI’] === ‘/rest/voximplant.call.startViaRest.json’) {
define(‘BITRIXREST_URL’, ‘IP_Asterisk:8077’);
}

Редактирование dbconn.php

Редактирование dbconn.php

IP_Asterisk – IP адрес(доменное имя) сервера телефонии Asterisk

8077 – TCP порт виртуалхоста Apache, который будет настроен в последующих пунктах данной статьи

Прежде чем приступать к установке и конфигурированию модуль коннектора ViStep, необходимо создать AMI пользователя в Asterisk, для этого перейдём в WEB панель управления FreePBX через интернет обозреватель(Opera, Firefox, Google Chrome, Yandex Browser….) по ссылке вида: http://IP_адрес_сервера_Asterisk/ В примере ссылка имеет вид: http://192.168.170.163/

WEB панель FreePBX

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

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

Перейдём к созданию AMI пользователя. Для этого перейдём в меню «Settings»→»Asterisk Manager Users»→ «Add Manager»→ «Submit»→ «Apply Config», где основные поля для заполнения:

Manager name — имя AMI пользователя(логин)
Manager secret — пароль AMI пользователя
Deny — запрещённые подсети для обращения по AMI
Permit — разрешенные подсети для обращения по AMI

Переход в меню «Settings»→»Asterisk Manager Users»

Добавление менеджера

Заполнение основных параметров AMI пользователя

Применение внесенных изменений

Установка слабого пароля для AMI пользователя и установка 0.0.0.0/0 подсети в качестве разрешенной может привести к несанкционированному доступу к серверу телефонии.

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

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

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

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

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

Приступим к установке и конфигурированию модуль коннектора, для этого в SSH выполним пару команд вида:

# cd /var/www/html/

# git clone https://github.com/ViStepRU/callme.git

Скачивание исходников модуль коннектора

Отредактируем конфигурационный файл модуль коннектора:

# nano /var/www/html/callme/config.php

где ключевые парамметры для редактирования:

1) tech — технология по которой работает телефония(SIP, IAX, DAHDI, Local)
2) authToken – код авторизации полученный при создании исходящего вебхука пп.4-5
3) bitrixApiUrl — URL для доступа к REST API CRM, который был получен при создании входящего вебхука пп.2-3. Вконце URL обязательно должен быть символ «/»
4) extentions — список городских номеров подключенных к АТС. Номер должен быть указан строго в том формате, в котором он прописан в параметрах транка
5) context – контекст для осуществления исходящих вызовов
6) host – IP адрес сервера телефонии Asterisk. Если модуль коннектор располагается на том же сервере, что и Asterisk, то достаточно указать «127.0.0.1»
7) username — логин AMI пользователя созданного в п. 9 данной статьи
8) secret – пароль AMI  пользователя созданного в п. 9 данной статьи

Правка конфигурационного файла модуль коннектора

12. Для корректного обращения к записям разговоров необходимо внести некоторые правки в диалплан, для этого выполним команду вида

# nano /etc/asterisk/extensions_override_freepbx.conf

И внесем следующие изменения:

[macro-hangupcall]
include => macro-hangupcall-custom
exten => s,1,Set(CDR(userfield)=${CHANNEL(hangupsource)})
exten => s,n,Set(FullFname=
https://IP_Asterisk/callme/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.mp3)
exten => s,n,Set(CallStart=${UNIQUEID})
exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)})
exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)})
exten => s,n,ExecIF(${ISNULL(${CallMeDISPOSITION})}?Set(CallMeDISPOSITION=${CDR(disposition)}):NoOP(=== CallMeDISPOSITION already was set ===))
exten => s,n,System(/usr/bin/lame -h -b 192 /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT} /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.mp3)
exten => s,n,System(/bin/rm -rf /var/spool/asterisk/monitor/${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT})
exten => s,n,Set(CDR(recordingfile)=${CALLFILENAME}.mp3)
exten => s,n,Hangup
exten => s,n,MacroExit()

Данные изменение по завершению звонка вносят значения в необходимые переменные(длительность звонка, статус звонка, ссылка на запись разговора), а так же выполняет конвертацию записи разговора в mp3

Правка диалплана

Для того чтобы модуль коннектор корректно получал ссылку на файл записи разговора необходимо внести небольшие изменения в регулярное выражения, для этого выполним команду вида:

# nano +94 /var/www/html/callme/CallMeIn.php

Изменим «/^http.+$/» на «/mp3/»

Редактирование регулярного выражения

Для логирования и работы модуль коннектора и корректного доступа к директории расположения, выполним ряд команд вида:

# mkdir /var/www/html/callme/logs

# touch /var/www/html/callme/logs/CallMe.log

# chown asterisk:asterisk /var/www/html/callme -R

# chmod +x /var/www/html/callme/CallMeIn.php

# chmod +x /var/www/html/callme/CallMeOut.php

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

Для работы с модуль коннектором как со службой воспользуемся функционалом Supervisor, для этого выполним установку и конфигурирование данного ПО:

# yum install python-setuptools

# easy_install supervisor

Установка Supervisor

Создадим конфигурационный файл:

# echo_supervisord_conf > /etc/supervisord.conf

Создание службы запуска/остановки/перезапуска Supervisord:

# nano /etc/rc.d/init.d/supervisord

Добавим в файл следующие строки:

#!/bin/bash
. /etc/init.d/functions
DAEMON=/usr/bin/supervisord
PIDFILE=/var/run/supervisord.pid

 [ -x «$DAEMON» ] || exit 0
start() {
        echo -n «Starting supervisord: «
        if [ -f $PIDFILE ]; then
                PID=`cat $PIDFILE`

                echo supervisord already running: $PID

                exit 2;
        else
                daemon  $DAEMON —pidfile=$PIDFILE -c /etc/supervisord.conf             RETVAL=$?
                Echo
                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
                return $RETVAL
        fi
}
stop() {
        echo -n «Shutting down supervisord: «
        echo
        killproc -p $PIDFILE supervisord
        echo
        rm -f /var/lock/subsys/supervisord
        return 0
}
case «$1» in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status supervisord
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo «Usage:  {start|stop|status|restart}»
        exit 1
        ;;
esac
exit $?

Создание файла службы

Дадим права на запуск:

# chmod +x /etc/rc.d/init.d/supervisord

Отредактируем файл конфигураций supervisord и добавим в самый конец файл несколько строк вида:

# nano /etc/supervisord.conf

[program:callme]
command=
/usr/bin/php /var/www/html/callme/CallMeIn.php
user=asterisk
autostart=true
autorestart=true
stderr_logfile=/var/www/html/callme/logs/CallMe.log
stdout_logfile=/var/www/html/callme/logs/CallMe.log

Редактирование конфигурационного файла Supervisor.

Выполним запуск Supervisor и проверим запустился ли модуль коннектор:

# service supervisord start

# ps aux | grep CallMeIn

Статус запуска модуль коннектора.

При использовании очередей во входящей маршрутизации рекомендуется перед внутренним номером агента очереди ставить знак «S», это необходимо для того чтобы при вызове агентов очереди в AMI событиях осуществлялся звонок в формате: «SIP/внутренний_номер». По умолчанию вызывается в формате: «Local/внутренний_номер»

Редактирование агентов очереди

Пример всплытия карточки клиента при поступлении входящего звонка:

Карточка клиента

 
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