Решение проблем со звонками по клику из CRM
Для упрощения отладки опишем функционал набора номера по клику:
- При клике по номеру телефона Битрикс24 отправляет TCP-запрос на порт вашего сервера
- Наше приложение получает запрос, обрабатывает его и отправляет команду на originate в Asterisk
- Asterisk обрабатывает команду originate согласно вашим настройкам
Соответственно, в том случае, если не работает click2call проблемы могут быть на следующих узлах:
- Запрос не отправляется из Битрикс24 или отправляется не на тот адрес
- Запрос не проходит по сетям передачи данных или блокируется при получении на сервере
- Asterisk некорректно обрабатывает команду originate
Отправка запроса из Битрикс24
1. Убедитесь в том, что в Битрикс24 корректно настроено приложение для отправки запросов
Перейдите на страницу Телефония -> Настройки. В поле "Номер для исходящего звонка по-умолчанию" укажите "Приложение: Интеграция с Asterisk".
Если такого приложения в списке нет, необходимо проверить настройки подключения к Битрикс24 в приложении.
2. Убедитесь в том, что при клике по номеру телефона вызывается верный обработчик Битрикс24
Перейдите на страницу CRM - Настройки - Другое - Прочие настройки - Форматирование.
В поле “Формат вывода ссылок "callto":” укажите “Вызов через телефонию Битрикс24”.
3. Убедитесь в том, что запрос на совершение вызова уходит с корректными данными сотрудника
Проверьте, что в Битрикс24 у пользователя указан верный внутренний номер телефона.
4. Убедитесь в том, что в Битрикс24 зарегистрирован правильный URL для совершения вызова
Список всех обработчиков можно получить открыв в браузере http://bitrixportal/rest/event.get?auth=token, где
- bitrixportal - адрес вашего портала в Битрикс24
- token - валидный токен из файла “/opt/bx24asterisk/generated/token.json” в поле “access_token”.
Если в списке обработчиков нет верного адреса вашей АТС необходимо удалить все зарегистрированные обработчики:
# /opt/bx24asterisk/bx24asterisk_core -c
После чего перезагрузить модуль:
# service bx24asterisk restart
5. Убедитесь в том, что запрос приходит на сервер
Выполните команду на сервере:
# tcpdump -i eth0 port 8077
После этого совершите клик по номеру телефона в CRM или откройте зарегистрированный URL (п.4) из браузера. В момент отправки запроса должны появиться строки с информацией о полученном пакете в консоли сервера.
Если пакеты не прошли, есть проблемы при прохождении сетевых запросов к вашему серверу. Наиболее распространенной проблемой являются ошибки в конфигурировании проброса порта на маршрутизаторе.
6. Проверьте обработку запроса приложением
При получении приложением запроса на совершение вызова в log-файле должно появиться событие "onexternallcallstart". Если этого не происходит, проверьте настройки файрвола на вашем сервере (порт 8077 должен разрешать соединения для внешних адресов).
После этого должна появиться информация о том, что событие originate отправлено в Asterisk. Убедитесь в том, что данные запроса на originate верные и ваши настройки Asterisk обработают их корректно. Распространенной проблемой является хранение (а соответственно и отправка) телефона в CRM в неподходящем для Asterisk формате. В таком случае необходимо произвести соответствующие настройки Asterisk или подменять номер телефона специальными обработчиками (смотрите примеры кастомизаций).
7. Проверьте обработку запроса на стороне Asterisk
Зайдите в консоль Asterisk в режим отладки и проверьте что происходит при выполнении originate:
$ asterisk -rvvvvv
Если в консоли нет никаких данных, необходимо проверить настройки originate: в настройках в блоке “Asterisk”: “originate” проверить все поля.