К списку статей

Решение проблем со звонками по клику из CRM

Для упрощения отладки опишем функционал набора номера по клику:

  1. При клике по номеру телефона Битрикс24 отправляет TCP-запрос на порт вашего сервера
  2. Наше приложение получает запрос, обрабатывает его и отправляет команду на originate в Asterisk
  3. 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” проверить все поля.