# Обновление полей сущности

**Кастомизация полей сущности (лида/контакта) доступна начиная с версии 2.15.0**\
\&#xNAN;**(в предыдущих версиях была кастомизация только для лидов).**

По умолчанию мы передаем в CRM стандартную информацию о звонке:

* номер телефона клиента;
* номер ответившего –> определяет того, кто станет ответственным за дело/звонок;
* направление звонка (входящий/исходящий) – подпадает в название дела;
* источник звонка.

Но возникают ситуации, когда требуется подкорректировать эти данные. Например, можно:

* добавить комментарий в лид/контакт;
* указать в поле "дополнительно об источнике", на какой транк поступил звонок.

По завершению звонка есть возможность изменить/обновить поля в сущности CRM.

{% hint style="warning" %}
Для версий начиная с 3.10.0 модуль запускает эту кастомизацию на каждый звонок.
{% endhint %}

#### **Как реализовать**

В веб-интерфейсе настройки модуля (`http://<Asterisk IP>:8077/config`):

1. Установите галочку **"Включить кастомизацию"**.
2. Установите галочку на пункте **"полей сущности"**.

![](/files/-MLbpQKt6RcKTV6ofei-)

2\. Отредактируйте файл кастомизации.

{% hint style="info" %}
Кастомизация настраивается в файле **/opt/itgrix\_bx/customizer/actions/customize\_entity.php.**

Для версий ДО 3.4.0 этот файл находится в каталоге **/opt/itgrix\_bx/custom/**
{% endhint %}

Параметры сущности, которые можно изменять, [описаны в статье](/custom_bx.md#2-customize_entity).

#### **Пример кастомизации:**

Пишем в название номер клиента, направление звонка (исходящий/входящий), если он **пропущен** – дополнительно напишем это.\
И в поле "**Дополнительно об источнике**" укажем транк, на который звонили.

#### С версии 3.10.0

<pre class="language-php" data-overflow="wrap"><code class="lang-php">// Для версий начиная с 3.10.0 модуль запускает эту кастомизацию на каждый звонок, обновляем поля только у новых сущностей.

// Нужно вернуть массив [обновляемое_поле = значение]
$newFields = array();

if ($params['call_full']['entity']['is_new']) {

// Пример: изменяем имя лида
$type = 'Входящий ';
$number = isset($params['call_full']['channel']['from']['custom'])
    ? $params['call_full']['channel']['from']['custom']
    : $params['call_full']['channel']['from']['original'];
$trunk = isset($params['call_full']['channel']['trunk']['custom'])
    ? $params['call_full']['channel']['trunk']['custom']
    : $params['call_full']['channel']['trunk']['original'];

// 2 - incoming, 3 - outgoing
if ($params['call_full']['channel']['type'] == 'outgoing') {
    $type = 'Исходящий ';
<strong>    $number = isset($params['call_full']['channel']['to']['custom'])
</strong>        ? $params['call_full']['channel']['to']['custom']
        : $params['call_full']['channel']['to']['original'];
}

if (! $params['call_full']['channel']['was_answered']) { // пропущенный звонок
    $type .= 'пропущенный ';
}

$newFields = array(
    'NAME' => $number . ' - ' . $type . 'звонок', //изменяем название
    'SOURCE_DESCRIPTION' => $trunk, //изменяем поле Дополнительно об источнике
);

} else {
$this->logDebug(sprintf(
"Entity is not new (type: '%s', ID: '%s'), do nothing",
$params['call_full']['entity']['type'], $params['call_full']['entity']['id']));
}

return array(
    'state' => 'success',
    'data'  => $newFields,
);
</code></pre>

```php
// Нужно вернуть массив [обновляемое_поле = значение]

$newFields = array();

// Пример: изменяем имя лида
$type = 'Входящий ';
$number = $params['call']['from'];
$trunk = $params['call']['trunk'];

// 2 - incoming, 3 - outgoing
if ($params['call_full']['channel']['type'] == 'outgoing') {
    $type = 'Исходящий ';
    $number = isset($params['call_full']['channel']['to']['custom'])
       ? $params['call_full']['channel']['to']['custom']
       : $params['call_full']['channel']['to']['original'];
}

if (! $params['call_full']['channel']['was_answered']) { // пропущенный звонок
    $type .= 'пропущенный ';
}

$newFields = array(
    'NAME' => $number . ' - ' . $type . 'звонок', //изменяем название
    'SOURCE_DESCRIPTION' => $trunk, //изменяем поле Дополнительно об источнике
);

return array(
    'state' => 'success',
    'data'  => $newFields,
);
```

Описание полей **лида** в [**API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_fields.php)**.**\
Описание полей **контакта** в [**API Битрикс24**](https://dev.1c-bitrix.ru/rest_help/crm/contacts/crm_contact_fields.php)**.**


---

# 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/update-entity-fields.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.
