Интеграция Bitrix CRM с Asterisk средствами модуль коннектора ViStep с открытым исходным кодом
В рамках данной статьи будет рассмотрена интеграция Asterisk и Bitrix CRM средствами модуль коннектора Vistep с открытым исходным кодом, который не требует обязательного использования интернет обозревателя Google Chrome и обладает хорошим списком возможностей, а также реализацией всевозможных кастомизаций интеграции при достаточном знании языка программирования «PHP»
Описание:
Ранее мы рассмотрели три способа интеграции 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 и пройдем авторизацию под учетной записью с правами администратора
Перейдем в Приложения→Вебхуки → Добавить вебхук → Входящий вебхук и выполним добавление вебхука в соответвии со скриншотом ниже:
После добавления входящего вебхука система отобразит URL для обращения к REST API CRM, который необходимо сохранить и скопировать для последующей настройки
Для возможности осуществления исходящих звонков перейдем в Приложения→Вебхуки → Добавить вебхук → Исходящего вебхук и выполним добавление вебхука в соответвии со скриншотом ниже:
После добавления исходящего вебхука система отобразит код авторизации, который необходимо сохранить и скопировать для последующей настройки
Выполним закрепление внутренних номеров за сотрудниками компании в 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’);
}
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/
Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»
Перейдём к созданию AMI пользователя. Для этого перейдём в меню «Settings»→»Asterisk Manager Users»→ «Add Manager»→ «Submit»→ «Apply Config», где основные поля для заполнения:
Manager name — имя AMI пользователя(логин)
Manager secret — пароль AMI пользователя
Deny — запрещённые подсети для обращения по AMI
Permit — разрешенные подсети для обращения по AMI
Установка слабого пароля для AMI пользователя и установка 0.0.0.0/0 подсети в качестве разрешенной может привести к несанкционированному доступу к серверу телефонии.
Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
Внимание, при авторизации на сервере, пароль в консоли не отображается.
Приступим к установке и конфигурированию модуль коннектора, для этого в 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
Создадим конфигурационный файл:
# 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 и проверим запустился ли модуль коннектор:
# service supervisord start
# ps aux | grep CallMeIn
При использовании очередей во входящей маршрутизации рекомендуется перед внутренним номером агента очереди ставить знак «S», это необходимо для того чтобы при вызове агентов очереди в AMI событиях осуществлялся звонок в формате: «SIP/внутренний_номер». По умолчанию вызывается в формате: «Local/внутренний_номер»
Пример всплытия карточки клиента при поступлении входящего звонка:
Остались вопросы?
Я - Кондрашин Игорь, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Здравствуйте. Несколько вопросов по статье…
1) Модуль vistepru, должен вызываться CallMeOut.php, но ни где не вызывается…
2) macro-hangupcall — где-то должен вызываться, но тоже ни где не вызывается…
Не могли бы немного рассказать про эти два момента….
Про виртуалхост забыли написать для коробки, если не сложно допишите статью плс.
IP_Asterisk – IP адрес(доменное имя) сервера телефонии Asterisk
8077 – TCP порт виртуалхоста Apache, который будет настроен в последующих пунктах данной статьи
и ели вставить код туда где показано на картинке то битрикс падает.