Как починить click-to-call

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

  1. Делаем вызов из Битрикса (кликаем на номер телефона в CRM).

  2. Команда на выполнение звонка (originate) поступает на модуль.

  3. Модуль составляет запрос и отправляет в Asterisk.

  4. После этого звонит ваш ip-телефон или сипфон (номер, которого указан в профиле пользователя).

  5. Когда пользователь поднимает трубку, звонок уходит на телефон клиента.

Выполняем проверку следующих моментов:

  1. Установлено ли на портале приложение.

  2. Запущен ли модуль на сервере.

  3. Внутренний номер в профиле сотрудника на портале: указан и совпадает с тем, который заведен на телефонном аппарате (сип-фоне) пользователя.

  4. Приложение “Интеграция с Asterisk” выбрано в качестве “приложения по умолчанию” для исходящих: на портале идём Телефония → Настройки телефонии → Общие настройки, в поле “Номер для исходящего звонка по-умолчанию” указано: “Приложение: Интеграция с Asterisk”. В том числе у конкретного пользователя: Телефония → Пользователи. Настройка этого этапа есть в инструкции

  5. В коробочном битриксе в закрытом контуре установлен обработчик.

Если версия битрикс 23.300.0 и выше - нужен код описанный в данной статье

Данный код актуален только для версий Битрикс24 до 23.300.0, в версиях выше его не должно быть в dbconn.php

Проверяем, добавлен ли код из инструкции по интеграции в файл dbconn.php

if($_REQUEST['COMMAND'] === 'startCallViaRest' || $_SERVER['REQUEST_URI'] === '/rest/voximplant.call.startViaRest.json') { define('BITRIXREST_URL', '#asterisk ip-address#:8077'); }

Где #asterisk ip-address# – адрес вашего Asterisk с установленным модулем.

6. В консоли Asterisk проверяем, что такой пир есть и он работает. asterisk -rx 'sip show peer 123' Где 123 – внутренний номер сотрудника

7. Убедимся, что запрос доходит до модуля.

По умолчанию в настройках модуля(раздел Asterisk) указано использование протокола SIP, если у вас используется протокол PJSIP нужно указать это в строке Шаблон канала.

Открываем лог модуля /var/log/itgrix_bx.log, перемещаемся в конец лога нажатием Shift+g, ищем снизу вверх по слову Originate, если запрос выполнился видим успешный ответ от Астериска:

?originate
{"_ts":"2022-07-26 13:01:03 +05:00","call_stage":"aster","command":"Originate","level":"info","msg":"Originate succeeded from: 101, to: 89021234567"}
  • Если ничего не найдено, значит запрос на вызов вообще не поступил на модуль.

    • Тогда проверим, приходит ли запрос на сервер. Запускаем tcpdump: tcpdump port 8077 После этого делаем вызов кликом из Битрикс24.

      • Если не появился вывод команды, то проблема может заключаться в следующем:

        • Не проброшен порт (модуль за NAT) либо проблема в с2с-сервере;

        • Б24 отправляет данные на другой адрес/порт – проверяем настройки модуля;

        • Б24 не отправляет запрос;

      • Если ответ есть, значит запрос пришел на порт, но не был передан модулю. Тогда проверяем настройки файервола.

Если в лог приходит сообщение "User has no phone" значит у пользователя в Битрикс24 не указан внутренний номер в профиле пользователя.

8. Если ответ на Originate приходит с ошибкой вида:

{"_ts":"2022-07-27 15:34:46 +05:00","call_stage":"aster","command":"Originate",
"level":"info","msg":"Originate failed from: 101, to: 73431234567. 
AMI replied: Extension does not exist."}

Нужно проверить правильный ли контекст указан в настройках модуля в разделе Asterisk, для этого узнаем какой контекст указан в настройках АТС у данного внутреннего номера:

asterisk -r
sip show peer 101              // если используется PJSIP - sip show endpoint 101
* Name       : 101
  Description  :
  Secret       : <Set>
  MD5Secret    : <Not set>
  Remote Secret: <Not set>
  Context      : from-internal // название контекста

Выполнение Originate запросов можно проверить напрямую через консоль Астериска:

Пробуем выполнить Originate напрямую в Астериск, с полученными параметрами (звонок с 123 на 81234567890): # asterisk -rvvvvv > channel originate SIP/123 extension 81234567890@from-internal

В случае успеха будет следующий отклик: == Using SIP RTP TOS bits 184 == Using SIP RTP CoS mark 5 -- Called 123 -- SIP/123-00001a5e is ringing

а) Если контекст указан неверный, увидим сообщение: WARNING[9975][C-00004504]: pbx.c:4461 __ast_pbx_run: Channel 'SIP/123-00001a62' sent to invalid extension but no invalid handler: context,exten,priority=bad-context,81234567890,1

б) Если отсутствует номер: [2018-12-21 17:47:52] ERROR[10555]: chan_pjsip.c:2458 request: Unable to create PJSIP channel - endpoint '123' was not found

в) Неверный тип канала:[2018-12-21 17:47:37] WARNING[10527]: channel.c:6083 request_channel: No channel type registered for 'PSSIP'

Если статья не помогла решить проблему, обратитесь в техподдержку.

Last updated