# Полезные кастомизации itgrix\_bx (Битрикс24)

{% hint style="info" %}
**Данная статья актуальна для версий коннектора 3.13.\***

Для предыдущих версий можно воспользоваться "исторической" версией статьи: [Полезные кастомизации itgrix\_bx (Битрикс24) \[С историей\]](/custom_bx/custom_bx_history.md)
{% endhint %}

{% hint style="info" %}
Дополнительные кастомизации описаны в разделе [Полезные кастомизации (любая CRM)](/custom_common.md).
{% endhint %}

## Схема обработки звонка модулем интеграции Itgrix

<figure><img src="/files/0ptRy3JLsYzSg4pz8FBY" alt=""><figcaption><p>Кастомизации версий 3.10+</p></figcaption></figure>

"Сущность" в логике коннектора – это контакт или лид.\
Запрос разговора – это начало дозвона на внутреннем номере.\
В одном звонке может быть несколько разговоров (в случае перевода звонка, группы, очереди и т.п.).

## Отмена запросов

Кастомизации, запускаемые непосредственно перед выполнением запросов к CRM, позволяют отменить отправку соответствующего запроса.\
Для этого нужно вернуть пустой объект `data`.

Пример данных для отмены запроса:

```json
{
  "data": {},
  "state": "success"
}
```

Кроме значения `{}`, также допустимы варианты `[]` и `null`.

Отмена запроса отмечается в логе текстом `"cancelled by customization"` и не считается ошибкой, но отсутствие данных, которые ожидалось получить в ответе на запрос, может привести к ошибкам последующих шагов обработки звонка и должно быть учтено в остальных кастомизациях.

## **Краткое описание кастомизаций**

| №  | <p>Файл кастомизации<br>(по алфавиту)</p>                              | Описание                                                                                                                                                   |
| -- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | [customize\_activity.php](#1-customize_activity)                       | Обновление полей дела (в конце звонка).                                                                                                                    |
| 2  | [customize\_entity.php](#2-customize_entity)                           | Обновление полей сущности (в конце звонка).                                                                                                                |
| 3  | [need\_registration.php](#3-need_registration)                         | <p>Нужна ли регистрация звонка?<br>Можно сделать черные/белые списки по внутреннему номеру/транку.</p>                                                     |
| 4  | [process\_client\_phone.php](#4-process_client_phone)                  | <p>Изменение номера телефона перед регистрацией в CRM:<br>Можно сменить формат телефонного номера (+7, 8...).</p>                                          |
| 5  | [process\_final\_params.php](#5-process_final_params)                  | Изменение данных завершения звонка.                                                                                                                        |
| 6  | [process\_originate\_params.php](#6-process_originate_params)          | <p>Изменение параметров при инициализации звонка из CRM.<br>Можно позвонить через другой транк, через другой контекст, сменить формат номера и прочее.</p> |
| 7  | [process\_record\_file\_path.php](#7-process_record_file_path)         | Кастомизация пути до файла записи разговора.                                                                                                               |
| 8  | [process\_registration\_params.php](#8-process_registration_params)    | Изменение параметров регистрации звонка.                                                                                                                   |
| 9  | [process\_task\_creation\_params.php](#9-process_task_creation_params) | Кастомизация создания задач по пропущенным звонкам.                                                                                                        |
| 10 | [process\_user\_phone.php](#10-process_user_phone)                     | Изменение номера пользователя перед поиском пользователя в Б24.                                                                                            |
| 11 | [customize\_autodistribution.php](#11-customize_autodistribution)      | Изменение внутреннего номера при автораспределении входящего звонка.                                                                                       |
| 12 | [post\_registration.php](#12-post_registration)                        | Действие после регистрации звонка.                                                                                                                         |
| 13 | [customize\_show\_call\_card.php](#13-customize_show_call_card)        | Изменение параметров отображения карточки звонка.                                                                                                          |
| 14 | [customize\_attach\_record\_url.php](#14-customize_attach_record_url)  | Изменение параметров прикрепления записи.                                                                                                                  |
| 15 | [process\_originate\_response.php](#15-process_originate_response)     | При получении результата Click-to-Call (событие OriginateResponse) от Asterisk. Позволяет выполнить дополнительные действия при успехе/ошибке Originate.   |
| 16 | [customize\_recording\_query.php](#16-customize_recording_query)       | Изменение запроса поиска записи звонка.                                                                                                                    |
| 17 | [customize\_record\_conversion.php](#17-customize_record_conversion)   | Кастомизация параметров конвертации записи звонка.                                                                                                         |
| 18 | [process\_rejected\_call\_event.php](#18-process_rejected_call_event)  | Кастомизация для игнорируемых событий звонка, которые намеренно не обрабатываются стандартной логикой.                                                     |

## Входные и выходные параметры кастомизаций

### **1)** customize\_activity

Обновление полей дела в конце звонка.

**Примеры:** [Обновление полей дела](/custom_bx/update-activity-fields.md).

**Вход:**

```json
{
  "activity": {
    "id": "<ID дела>",
    "is_new": <Всегда false>,
    "name": "<Название дела (из поля SUBJECT)>",
    "phones": [<Всегда пустой массив>],
    "raw": {Поля дела как в Битрикс24},
    "responsible": {<Данные ответственного пользователя>},
    "responsible_id": "<ID ответственного пользователя>",
    "type": "activity"
  },
  "call_full": {<Полный набор данных о звонке>}
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

{% hint style="warning" %}
В объекте `raw` присутствуют только поля с непустым/ненулевым значением.
{% endhint %}

**Вернуть:**

```json
{
  "data": {
    "<Название поля дела в Битрикс>": "<Значение этого поля>",
    ...
  },
  "state": "success"
}
```

Подробное описание полей **дела** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/crm/rest_activity/crm_activity_fields.php/)**.**\
Запрос обновления дела не будет выполнен, если вернуть пустой объект `data`.

### **2) customize\_entity**

**Примеры:** [Обновление полей сущности](/custom_bx/update-entity-fields.md).

**Вход:**

```json
{
  "call_full": {<Полный набор данных о звонке>},
  <Остальные поля временно сохранены для обратной совместимости: call_registration, entity, entity_type, entity_id, entity_new>
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

{% hint style="warning" %}
Часть полей в корне входных данных кастомизации считаются устаревшими и будут убраны в будущих версиях коннектора.\
Вместо них рекомендуется использовать актуальные поля внутри объекта `call_full`:

* `call_registration` → `call_full.registration`
* `entity` → `call_full.entity`
* `entity_type` → `call_full.entity.type`
* `entity_id` → `call_full.entity.id`
* `entity_new` → `call_full.entity.is_new`
  {% endhint %}

**Вернуть:**

```json
{
  "data": {
    "<Название поля сущности в Битрикс>": "<Значение этого поля>",
    ...
  },
  "state": "success"
}
```

Подробное описание полей **лида** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_fields.php/)**.**\
Подробное описание полей **контакта** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_fields.php/)**.**\
Запрос обновления сущности не будет выполнен, если вернуть пустой объект `data`.

### **3) need\_registration**

Используется для реализации функционала чёрных/белых списков по номерам, транкам и прочим более сложным условиям.

{% hint style="info" %}
Базовая настройка черного/белого списка для внутренних номеров и транков доступна [из админки (интерфейса настройки) коннектора](/custom_common/black-white-list.md#nastroika-cherez-interfeis-modulya).
{% endhint %}

**Примеры:** [Черный/белый список для транков](/custom_common/black-white-list.md#chernyi-belyi-spisok-dlya-trankov)*.*

**Вход:**

```json
{
  "call_full": {<Полный набор данных о звонке>},
  "call_stage": "<Стадия звонка. Для данной кастомизации один из вариантов:
     conversation_requested - запрос разговора;
     conversation_accepted  - ответ;
     conversation_ended     - завершение разговора;
     call_ended             - завершение звонка>"
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

**Вернуть:**

```json
{
  "data": {
    "result": <true - регистрируем; false - игнорируем>
  },
  "state": "success"
}
```

### **4) process\_client\_phone**

Преобразование телефонных номеров клиентов перед отправкой запросов в Битрикс24.

{% hint style="info" %}
Доступна [автозамена номеров](/for-admins/autoreplacement.md), она запускается ДО выполнения кастомизации.
{% endhint %}

**Примеры** в статье [Изменение номера телефона перед отправкой данных в CRM](/custom_common/client-phone-number.md).

**Вход:**

<pre class="language-json"><code class="lang-json">{
<strong>  "phone": "&#x3C;номер>",
</strong><strong>  
</strong><strong>  "call_full": {&#x3C;Полный набор данных о звонке>},
</strong>  "call_stage": "&#x3C;Стадия звонка. Для данной кастомизации один из вариантов:
     call_started           - начало звонка;
     conversation_requested - запрос разговора;
     conversation_accepted  - ответ;
     conversation_ended     - завершение разговора;
     call_ended             - завершение звонка;
     forward &#x3C;id> - автораспределение звонка>"
}
</code></pre>

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

**Вернуть:**

```json
{
  "data": {
    "phone": “<Кастомизированный номер>”
  },
  "state": "success"
}
```

### **5) process\_final\_params**

Кастомизация параметров завершения регистрации звонка.

**Примеры:** [Разные ответственные за пропущенные за разные транки](/custom_bx/default-resp-for-trunks.md).

**Вход:**

```json
{
  "ADD_TO_CHAT": <[0/1] Добавить ли сообщение о звонке в бизнес чат.
                  По умолчанию 1>,
  "CALL_ID": "<ID звонка в Битрикс24. Не рекомендуется изменять!>",
  "DURATION": <Длительность звонка в секундах>,
  "STATUS_CODE": "<Статус звонка в Битрикс24>",
  "USER_ID": <ID пользователя Битрикс24, ответственного за разговор>,
    
  "call_full": {<Полный набор данных о звонке>},
  <Остальные поля временно сохранены для обратной совместимости: call_registration, entity, entity_type, entity_id, entity_new>
}
```

Статусы звонка в Битрикс24 описаны в [статье Детальные статусы звонка](/faq/detalnye-statusy-zvonka.md#bitrix24).

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

{% hint style="warning" %}
Часть полей в корне входных данных кастомизации считаются устаревшими и будут убраны в будущих версиях коннектора.\
Вместо них рекомендуется использовать актуальные поля внутри объекта `call_full`:

* `call_registration` → `call_full.registration`
* `entity` → `call_full.entity`
* `entity_type` → `call_full.entity.type`
* `entity_id` → `call_full.entity.id`
* `entity_new` → `call_full.entity.is_new`
  {% endhint %}

**Вернуть:**

```json
{
  "data": {
    "ADD_TO_CHAT": <[0/1] Добавить ли сообщение о звонке в бизнес чат>,
    "CALL_ID": "<ID звонка в Битрикс24. Не рекомендуется изменять!>",
    "DURATION": <Длительность звонка в секундах>,
    "STATUS_CODE": "<Статус звонка>",
    "USER_ID": <ID пользователя Битрикс24, ответственного за разговор>
  },
  "state": "success"
}
```

Подробное описание параметров **завершения звонка** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/scope_telephony/telephony/telephony_externalcall_finish.php)**.**\
Запрос завершения регистрации звонка можно отменить, вернув пустой объект `data`.

### **6) process\_originate\_params**

Изменение параметров при инициализации звонка из Битрикс24.

Подробное описание с примерами в статье [Изменение параметров при click-to-call](/custom_common/c2c.md).

### **7) process\_record\_file\_path**

Преобразование пути до файла записи разговора.

Подробное описание с примерами в статье [Кастомизация имени файла аудиозаписи](/custom_common/filepath.md).

{% hint style="info" %}
В версиях Itgrix\_bx ниже 3.13.0 эта кастомизация использовалась для конвертации файлов записей разговоров в формат mp3 перед отправкой в Битрикс24.

Начиная с версии 3.13.0, конвертация записей выполняется [основной логикой коннектора](/blog/mp3-conversion.md), а кастомизация process\_record\_file\_path служит только для изменения пути до файла записи перед конвертацией.
{% endhint %}

### **8) process\_registration\_params**

Используется для кастомизации параметров регистрации начала звонка.

**Примеры:**

* [Добавление кода города в зависимости от города оператора](/custom_bx/dobavlenie-koda-goroda-v-zavisimosti-ot-goroda-operatora.md)
* [Изменение первого ответственного за лид/контакт](/custom_bx/first-resp-for-call.md)
* [Создавать лид для каждого входящего звонка](/custom_bx/always-create-lead-on-incoming.md)

**Вход:**

```json
{
  "CALL_START_DATE": "<Дата-время начала звонка>",
  "CRM_CREATE": <[0/1] Создавать или нет новый лид (если номер не найден в CRM)>,
  "CRM_SOURCE": "<STATUS_ID источника из справочника источников>",
  "LINE_NUMBER": "<Номер внешней линии в Битрикс24, через который совершался звонок>",
  "PHONE_NUMBER": "<Номер для поиска сущности в битрикс>",
  "SHOW": <[0/1] Показывать ли карточку звонка при регистрации>,
  "TYPE": <Направление звонка: 1 - исходящий, 2 - входящий>,
  "USER_ID": <ID пользователя>,
    
  "call_full": {<Полный набор данных о звонке>},
  "call_stage": "<Стадия звонка. Для данной кастомизации один из вариантов:
    conversation_requested - запрос разговора;
    call_ended             - завершение звонка>"
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

{% hint style="info" %}
Номера внешних линий в Битрикс24 (`LINE_NUMBER`) соответствуют транкам в настройках коннектора Itgrix.

Коннектор регистрирует номера транков как внешние линии в Битрикс24 при запуске, при этом каждой линии можно задать название в настройках.
{% endhint %}

{% hint style="warning" %}
Показ карточки звонка вынесен в отдельный запрос, и кастомизируется отдельной кастомизацией [customize\_show\_call\_card](#13-customize_show_call_card), поэтому **параметр `SHOW` всегда равен `0`.**

Это позволяет настроить момент показа карточки звонка отдельно от регистрации звонка: при дозвоне или при ответе.
{% endhint %}

**Вернуть:**

```json
{
  "data": { 
    "CALL_START_DATE": "<Дата-время начала звонка>",
    "CRM_CREATE": <[0/1] Создавать или нет новый лид (если номер не найден в CRM)>,
    "CRM_SOURCE": "<STATUS_ID источника из справочника источников>",
    "LINE_NUMBER": "<Номер внешней линии в Битрикс24, через который совершался звонок>",
    "PHONE_NUMBER": "<Номер для поиска сущности в битрикс>",
    "SHOW": <[0/1] Показывать ли карточку звонка при регистрации>,
    "TYPE": <Направление звонка: 1 - исходящий, 2 - входящий>,
    "USER_ID": <ID пользователя>
  },
  "state": "success"
}
```

Подробное описание параметров **регистрации звонка** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/scope_telephony/telephony/telephony_externalcall_register.php)**.**\
Запрос регистрации можно отменить, вернув пустой объект `data`.

### **9) process\_task\_creation\_params**

Кастомизация параметров создания задачи (при пропущенном входящем звонке или неотвеченном исходящем).

{% hint style="info" %}
Данная кастомизация работает, только если создание задач включено в настройках коннектора: [Настройка задачи по пропущенному через админку](/settings/additional/parametry-sozdaniya-zadach.md).

При этом сначала применяются настройки, описанные в статье, а затем выполняется данная кастомизация.
{% endhint %}

**Пример:** [Кастомизация задач по пропущенным звонкам](/custom_bx/task-for-missed-call.md) (начиная с версии [3.4.0](https://docs.itgrix.ru/pages/-M0SZwZn5pERjpAzqeP-#3.4.0) это можно [делать через веб-интерфейс настройки модуля](/settings/additional/parametry-sozdaniya-zadach.md)).

**Вход:**

```json
{
  "fields": {
    "CREATED_BY": <ID постановщика>,
    "DEADLINE": "<Крайний срок исполнения>",
    "RESPONSIBLE_ID": <ID сотрудника, ответственного за задачу>,
    "TITLE": "<Заголовок задачи>",
    "UF_CRM_TASK": ["<ID сущности в специальном формате:
                      <Тип сущности>_<ID>.
                      Типы сущности:
                        лид      - L
                        контакт  - C,
                        компания - CO,
                        дело     - D.
                      Пример: L_11201 для лида с ID 11201 >"]
  },

  "call_full": {<Полный набор данных о звонке>}
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

**Вернуть:**

```json
{
  "data": {
    "fields": {
      "<Название поля задачи в Битрикс>": "<Значение этого поля>"
      ...
    }
  },
  "state": "success"
}
```

Подробное описание полей **задачи** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/tasks/fields.php)**.**\
Запрос создания задачи можно отменить, вернув пустой объект `data`.

### **10) process\_user\_phone**

Изменение номера пользователя перед поиском пользователя Битрикс24.

{% hint style="info" %}
Доступна [автозамена номеров](/for-admins/autoreplacement.md), она запускается ДО выполнения кастомизации.
{% endhint %}

**Пример:** [Несколько внутренних номеров у сотрудника](/custom_bx/neskolko-vnutrennikh-nomerov-u-sotrudnika.md).

**Вход:**

<pre class="language-json"><code class="lang-json">{
  "phone": "&#x3C;номер>",
  
<strong>  "call_full": {&#x3C;Полный набор данных о звонке>},
</strong>  "call_stage": "&#x3C;Стадия звонка. Для данной кастомизации один из вариантов:
    conversation_requested - запрос разговора;
    conversation_accepted  - ответ;
    conversation_ended     - завершение разговора;
    call_ended             - завершение звонка;
    forward &#x3C;id> - автораспределение звонка>"
}
</code></pre>

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

**Вернуть:**

```json
{
  "data": {
    "phone": "<кастомизированный_номер>"
  },
  "state": "success"
}
```

### **11) customize\_autodistribution**

**Вход:**

```json
{
  "number": "<номер пользователя, на которого распределять звонок>",
  "name":   "<имя пользователя, на которого распределять звонок>",

  "from": "<номер, с которого пришёл звонок>",
  "trunk": "<номер транка>",
  "user": {
    "id":       <ID пользователя числом>,
    "phones":   ["<список номеров пользователя>"],
    "name":     "<Полное имя пользователя>",
    "email":    "<email пользователя>",
    "position": "<должность пользователя>"
  },
  "entity": {
    "type":           "<Тип сущности текстом, например lead, contact>",
    "id":             <ID сущности числом>,
    "name":           "<Имя сущности>",
    "responsible_id": <ID ответственного пользователя числом>
  },
  "request_data": {<Параметры запроса>},
  "call_full": {<Полный набор данных о звонке>},
  "error": "<текст ошибки>"
}
```

**Вернуть:**

```json
{
  "data": {
    "number": "<Номер пользователя, на которого распределять звонок>",
    "name":   "<Имя пользователя, на которого распределять звонок, лимит 20 символов>"
  },
  "state": "success"
}
```

{% hint style="warning" %}
`name` - текст, который появится в CallerID и будет отображен в телефоне (или софтфоне) оператора.

**Должен быть не более 20 символов (ограничение Asterisk)!**
{% endhint %}

{% hint style="info" %}
Поля `from`, `user`, `entity` и `error` - только для чтения и присутствуют только когда не пустые.

Они будут автоматически удалены, даже если вернуть их в объекте `data`.
{% endhint %}

### 12) post\_registration

Данная кастомизация дает возможность выполнить какие-либо действия после регистрации звонка.

Может быть вызвана в разные моменты в зависимости от типа звонка:

* Для звонков кликом (click-to-call, c2c) кастомизация будет вызвана в начале обработки стадии Запрос разговора (Conversation requested).

{% hint style="info" %}
При звонках кликом Битрикс24 сам регистрирует звонок в момент клика и передает данные о регистрации коннектору, т.е. ещё до инициализации звонка в Asterisk.

Поэтому звонки кликом коннектор сам НЕ регистрирует, а только заканчивает, как и все остальные звонки.
{% endhint %}

* Пропущенные звонки на IVR регистрируются и завершаются на стадии Завершение звонка (Call ended).
* Для всех остальных звонков кастомизация будет вызвана после выполнения запроса регистрации звонка в Битрикс24 на стадии Запрос разговора (Conversation requested).

**Вход:**

```json
{
  "call_full": {<Полный набор данных о звонке>},
  "call_stage": "<Стадия звонка. Для данной кастомизации один из вариантов:
    conversation_requested - запрос разговора;
    call_ended             - завершение звонка>",
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

**Вернуть:**

Нужно вернуть только `state`, остальное игнорируется:

```json
{
  "state": "success"
}
```

### 13) customize\_show\_call\_card

Используется для кастомизации параметров отображения карточки звонка.

**Вход:**

```json
{
  "CALL_ID": <ID зарегистрированного звонка в Битрикс24>,
  "USER_ID": <ID пользователя>,
  
  "call_full": {<Полный набор данных о звонке>},
  "call_stage": "<Стадия звонка. Для данной кастомизации один из вариантов:
    conversation_requested - запрос разговора;
    conversation_accepted  - ответ;
    conversation_ended     - завершение разговора;
    call_ended             - завершение звонка>"
 }
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

**Вернуть:**

```json
{
  "data": { 
    "CALL_ID": <ID зарегистрированного звонка в Битрикс24>,
    "USER_ID": <ID пользователя>
  },
  "state": "success"
}
```

Подробное описание параметров **показа карточки** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/scope_telephony/telephony/telephony_externalcall_show.php)**.**\
Запрос показа карточки звонка можно отменить, вернув пустой объект `data`.

### 14) customize\_attach\_record\_url

Кастомизация прикрепления ссылки на запись звонка. Запускается только если настроено прикрепление ссылки на запись вместо файла записи звонка.

По умолчанию в описание дела записывается HTML-код аудиоплеера (тег `audio`) со ссылкой на запись звонка.

**Вход:**

<pre class="language-json"><code class="lang-json">{
  "DESCRIPTION": "&#x3C;Описание дела с аудиоплеером и ссылкой на запись звонка>",
<strong>  "DESCRIPTION_TYPE": &#x3C;Тип содержания в виде целого числа, по умолчанию 3, т.е. HTML>,
</strong>
  "activity": {
    "id": "&#x3C;ID дела>",
    "is_new": &#x3C;Всегда false>,
    "name": "&#x3C;Название дела (из поля SUBJECT)>",
    "phones": [&#x3C;Всегда пустой массив>],
    "raw": {Поля дела как в Битрикс24},
    "responsible": {&#x3C;Данные ответственного пользователя>},
    "responsible_id": "&#x3C;ID ответственного пользователя>",
    "type": "activity"
  },
  "call_full": {&#x3C;Полный набор данных о звонке>},
  "record_url": "&#x3C;URL записи звонка>",
  "old_description": "&#x3C;Описание дела до кастомизации>"
 }
</code></pre>

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).

{% hint style="warning" %}
В объекте `raw` присутствуют только поля с непустым/ненулевым значением.
{% endhint %}

**Вернуть:**

```json
{
  "data": {
    "<Название поля дела в Битрикс>": "<Значение этого поля>",
      ...
  },
  "state": "success"
}
```

Подробное описание полей **дела** в [**документации REST API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/crm/rest_activity/crm_activity_fields.php/)**.**\
Запрос обновления дела не будет выполнен, если вернуть пустой объект `data`.

### 15) process\_originate\_response

Кастомизация результата Click-to-Call. Запускается при получении события OriginateResponse от Asterisk после выполнения запроса Click-to-Call. Позволяет выполнить дополнительные действия при успехе/ошибке Originate.

**Вход:**

```json
{
  "originate_params": {<Параметры запроса Click-to-Call>},
  "originate_response": {<Поля события AMI OriginateResponse>},
  "request_id": <ID запроса Click-to-Call>,
  "call_full": {<Полный набор данных о звонке>}
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).\
Поле `call_full` может быть пустым, если на момент получения события OriginateResponse звонок отсутствует в кэше коннектора.

**Вернуть:**

```json
{
  "state": "success"
}
```

### 16) customize\_recording\_query

Кастомизация запроса поиска записи звонка. Запускается перед поиском записи звонка в таблице CDR. Позволяет модифицировать запрос поиска.

**Вход:**

```json
{
  "query": "<SQL-запрос поиска записи звонка>",

  "callID":        "<ID звонка>",
  "from_variants": ["<Список вариантов номера источника звонка>"],
  "to_variants":   ["<Список вариантов номера получателя звонка>"],
  "call_full":     {<Полный набор данных о звонке>}
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).\
Запрос поиска записи звонка можно отменить, вернув пустой объект `query`.

**Вернуть:**

```json
{
  "data": {
    "query": "<SQL-запрос поиска записи звонка>"
  },
  "state": "success"
}
```

### 17) customize\_record\_conversion

Кастомизация параметров конвертации записи. Запускается перед конвертацией записи в mp3. Позволяет изменить настройки конвертации записи для данного звонка.

**Вход:**

```json
{
  "IN":                               "<Путь к исходному файлу записи>",
  "OUT":                              "<Путь к конечному файлу записи>",
  "recording_converter_path":         "<Путь программы для конвертации записи>",
  "recording_converter_args":         "<Аргументы запуска программы конвертации записи>",
  "recording_converter_timeout_msec": <Таймаут выполнения конвертации записи в миллисекундах>,
  "overwrite_cdr_recordingfile":      <true - обновлять путь к записи в таблице CDR; false - не обновлять>,
  "initial_cdr_recordingfile":        "<Исходный путь к записи в таблице CDR>",
  "updated_cdr_recordingfile":        "<Конечный путь к записи в таблице CDR>",
  "delete_original_recordings":       <true - удалить исходный файл записи после конвертации; false - не удалять>,

  "call_full": {<Полный набор данных о звонке>}
}
```

Полный набор данных о звонке описан в статье [Данные о звонке (call\_full) в кастомизациях](/custom_common/dannye-o-zvonke-call_full-v-kastomizaciyakh.md).\
Поле `call_full` может быть пустым, если на момент выполнения конвертации записи звонок отсутствует в кэше коннектора.\
Выполнение конвертации записи можно отменить, вернув пустой объект `data`.

Входные значения соответствуют [настройкам конвертации записи](/blog/mp3-conversion.md).

**Вернуть:**

```json
{
  "data": {
    "IN":                               "<Путь к исходному файлу записи>",
    "OUT":                              "<Путь к конечному файлу записи>",
    "recording_converter_path":         "<Путь программы для конвертации записи>",
    "recording_converter_args":         "<Аргументы запуска программы конвертации записи>",
    "recording_converter_timeout_msec": <Таймаут выполнения конвертации записи в миллисекундах>,
    "overwrite_cdr_recordingfile":      <true - обновлять путь к записи в таблице CDR; false - не обновлять>,
    "initial_cdr_recordingfile":        "<Исходный путь к записи в таблице CDR>",
    "updated_cdr_recordingfile":        "<Конечный путь к записи в таблице CDR>",
    "delete_original_recordings":       <true - удалить исходный файл записи после конвертации; false - не удалять>
  },
  "state": "success"
}
```

Поля `initial_cdr_recordingfile` и `updated_cdr_recordingfile` используются для формирования SQL-запроса обновления записи в таблице CDR следующего вида:\
`UPDATE CDR SET CDR.recordingfile = '<updated_cdr_recordingfile>' WHERE CDR.recordingfile = '<initial_cdr_recordingfile>'`

### 18) process\_rejected\_call\_event

Кастомизация игнорируемых событий звонка. Запускается когда событие звонка намеренно не обрабатывается стандартной логикой, например при звонке между сотрудниками или звонке неопределенного типа.

**Вход:**

```json
{
  "call_full": {<Полный набор данных о звонке>},
  "call_stage": "<Стадия звонка. Для данной кастомизации один из вариантов:
    "call_started"           - начало звонка;
    "conversation_requested" - запрос разговора;
    "conversation_accepted"  - ответ;
    "conversation_ended"     - завершение разговора;
    "call_ended"             - завершение звонка>",
  "rejection_reason": "<Причина отклонения события звонка>"
}
```

Возможные значения поля `rejection_reason`:

* `"no active conversation"` - событие разговора без указания ID разговора;
* `"local conversation"` - событие разговора между сотрудниками;
* `"unknown conversation type"` - событие разговора неопределенного типа;
* `"self conversation type"` - событие разговора с совпадающими номерами `from` и `to`;
* `"conversation processed earlier"` - событие разговора уже обработано ранее;
* `"invalid event name"` - неизвестное событие звонка;
* `"local call"` - звонок между сотрудниками;
* `"unknown call type"` - звонок неопределенного типа;
* `"self call type"` - звонок с совпадающими номерами `from` и `to`;
* `"call processed earlier"` - звонок уже обработан ранее.

**Вернуть:**

```json
{
  "state": "success"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.itgrix.ru/custom_bx.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
