> For the complete documentation index, see [llms.txt](https://docs.itgrix.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.itgrix.ru/how-to-fix/kak-pochinit-click-to-call.md).

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

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

1. Делаем вызов из Битрикса (кликаем на номер телефона в CRM).
2. Команда на выполнение звонка (originate) поступает на модуль.
3. Модуль составляет запрос и отправляет в Asterisk.
4. После этого звонит ваш ip-телефон или сипфон (номер, которого указан в профиле пользователя).
5. Когда пользователь поднимает трубку, звонок уходит на телефон клиента.

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

1. **Установлено ли** на портале **приложение**.\
   [Как установить](https://docs.itgrix.ru/how-to-fix/pages/-M0MCmZ0Tov0i9sSKevx#id-1.1.-ustanovka-prilozheniya)
2. **Запущен ли модуль** на сервере.\
   Проверить статус приложения можно с помощью [команд](/for-admins/poleznye-komandy.md).
3. **Внутренний номер в профиле** сотрудника на портале: **указан** и совпадает с тем, который заведен на телефонном аппарате (сип-фоне) пользователя.\
   [Настроить внутренние номера в профиле](https://docs.itgrix.ru/how-to-fix/pages/-M0MAS1SYZAQu981Rnrm#id-2.-nastroika-profilei-polzovatelei-bitriks24)
4. Если при исходящем звонке кликом вы слышите женский голос, который предлагает пополнить баланс телефонии Битрикс24, значит запрос с2с ушел не на приложение, а внутреннюю телефонию Битрикса.\
   \
   Для фикса **повторно выберите** Приложение “Интеграция с Asterisk - Itgrix” в качестве **"приложения по умолчанию для исходящих"**, в том числе у конкретного пользователя. Настройка этого этапа есть в [инструкции](https://docs.itgrix.ru/how-to-fix/pages/-M0MAS1SYZAQu981Rnrm#id-1.-zadat-prilozhenie-po-umolchaniyu-dlya-iskhodyashikh-zvonkov).
5. В коробочном битриксе **в закрытом контуре установлен обработчик**.

{% hint style="danger" %}
Если версия битрикс 23.300.0 и выше - нужен код описанный в [данной статье](/settings/click-to-call/osobennosti-nastroiki-posle-obnovleniya-bitriks24-23.300.0.md)
{% endhint %}

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

Проверяем, добавлен ли [код из инструкции по интеграции ](/settings/click-to-call.md)в файл 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 – внутренний номер сотрудника.\
Если не работает, то проверить подключение аппарата пользователя к Asterisk.

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

Открываем лог модуля `/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 отправляет данные на другой адрес/порт – проверяем [настройки модуля](/settings/click-to-call.md);
      * Б24 не отправляет запрос;
    * Если ответ есть, значит запрос пришел на порт, но не был передан модулю.\
      Тогда проверяем настройки файервола.

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

**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 // название контекста

```

{% hint style="info" %}
По умолчанию в настройках модуля (раздел Asterisk) указано использование протокола SIP, если у вас используется протокол PJSIP нужно указать это в строке Шаблон канала.
{% endhint %}

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

Пробуем выполнить Originate напрямую в Астериск, с полученными параметрами (звонок с 123 на 71234567890):\
`# asterisk -rvvvvv`\
`> channel originate SIP/123 extension 71234567890@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,71234567890,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'`

Если статья не помогла решить проблему, [обратитесь в техподдержку](/contacts.md).
