artem
13.10.2018
16363

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

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

Интеграция Bitrix CRM с Asterisk

Описание:

Ранее мы рассмотрели три способа интеграции 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/внутренний_номер»

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

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

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

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Александр
Александр
24.05.2019 19:09

Здравствуйте. Несколько вопросов по статье…
1) Модуль vistepru, должен вызываться CallMeOut.php, но ни где не вызывается…
2) macro-hangupcall — где-то должен вызываться, но тоже ни где не вызывается…
Не могли бы немного рассказать про эти два момента….

Дмитрий
Дмитрий
23.10.2021 08:45

Про виртуалхост забыли написать для коробки, если не сложно допишите статью плс.

IP_Asterisk – IP адрес(доменное имя) сервера телефонии Asterisk
8077 – TCP порт виртуалхоста Apache, который будет настроен в последующих пунктах данной статьи

и ели вставить код туда где показано на картинке то битрикс падает.

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

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

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