Как можно передать ID или имя IVR из FreePBX в поле Битрикс24?

Здравствуйте! <br/> У меня есть развернутая система FreePBX 17 / Asterisk 20, которая связана через Integrix с Битрикс24. В нашей телефонии имеется значительное количество IVR, и клиент, проходя через них, в конечном итоге попадает к оператору. Бизнесу необходимо отслеживать путь, по которому прошел клиент через IVR, и фиксировать эту информацию в кастомном поле в Битриксе. Однако в CDR отображается только первая IVR, а после нее идут эски. Таким образом, возникает вопрос: как можно получать ID IVR? <br/> Стоит ли добавлять после каждой IVR misc app для записи данных в базу или делать запрос в Битрикс? Или, возможно, можно реализовать это через код в override для соответствующих IVR? Или, может быть, существует возможность сделать это с помощью AGI? <br/> <br/> Буду признателен за помощь и готов вознаградить за рабочий вариант.
  • 7 ноября 2024 г. 8:33
Ответы на вопрос 1
Для решения вашей задачи и передачи информации о пути клиента через IVR в Битрикс24, вы можете использовать несколько подходов. Рассмотрим наиболее подходящие:

### 1. Использование AGI скрипта

AGI (Asterisk Gateway Interface) позволяет выполнять пользовательские скрипты на языке программирования (например, PHP, Python и т.д.) во время работы звонка. Вы можете создать AGI скрипт, который будет записывать информацию о каждом IVR в базу данных или отправлять ее в Битрикс24 через API.

Примерно это будет выглядеть так:

1. **Создание AGI скрипта:** Ваш скрипт будет получать ID или имя IVR, а также другие параметры, такие как номер телефона клиента.
   
2. **Отправка данных в Битрикс24:** Используя REST API Битрикс24, отправляйте данные о пути клиента в необходимое поле.

3. **Подключение AGI скрипта в вашей IVR:** В каждом контексте IVR добавьте вызов AGI скрипта.

### 2. Использование Misc Application

Если вы не хотите использовать AGI, вы можете добавить `Misc Application` после каждого IVR. В этом случае вам нужно:

1. После каждой IVR добавьте `Misc Application`, который будет выполнять вашу задачу (например, запись в базу данных или отправка запроса в Битрикс).

2. В настройках `Misc Application` можете использовать `Set` для задания переменной с ID или именем IVR, после чего передать ее в ваше кастомное поле.

### 3. Использование Dialplan

Если вы хотите обойтись без AGI и `Misc Application`, можете настроить корректный маршрутизатор в вашем Asterisk Dialplan:

1. В дополнение к стандартной записи CDR, вы можете создавать собственные переменные для хранения информации о прохождении через IVR.
   
2. В процессе передачи вызова к оператору передайте всю необходимую информацию через Dialplan. Например:
   ```
   exten => s,n,Set(__IVR_PATH=${IVR1_NAME}|${IVR2_NAME}) ; Замените на реальный путь
   exten => s,n,Set(CDR(custom_ivr)= ${IVR_PATH})
   ```

3. После этого информация о пути клиента будет сохранена в CDR, и вы сможете использовать ее для передачи в Битрикс24.

### 4. Использование Integrix

Поскольку вы уже используете Integrix для интеграции с Битрикс24, вы можете использовать возможности этого инструмента для агрегирования данных:

1. Настройте агент Integrix для мониторинга звонков и определите, что ему нужно делать с данными из Asterisk.

2. Используйте гибкие механизмы передачи данных через вебхуки для передачи информации о клиентах непосредственно в Битрикс24.

### Заключение

Наиболее универсальным и мощным вариантом является использование AGI, так как это дает больше возможностей для обработки данных в реальном времени. Однако промежуточные решения с `Misc Application` или изменениями в Dialplan также будут эффективными. 

Выберите подходящий для вас вариант и настройте тестовое окружение, чтобы удостовериться, что будете получать правильные данные в Битрикс24. Удачи!
Похожие вопросы