# Черные и белые списки. Как настроить?

{% hint style="info" %}
Начиная с версии [itgrix\_bx (на тот момент bx24asterisk) 2.15.0](/changelog-bx.md) и [itgrix\_amo 1.1.3](/changelog-amo.md) все черные/белые списки реализуются через кастомизацию **need\_registration.**
{% endhint %}

{% hint style="info" %}
Начиная с версий [itgrix\_bx 3.0.7](/changelog-bx.md) и [itgrix\_amo 2.2.0](/changelog-amo.md) настройка черного/белого списка для внутренних номеров доступна сразу из админки (интерфейса настройки) модуля.

Если у вас уже настроена фильтрация по внутреннему номеру в кастомизации, не забудьте отключить их перед настройкой аналогичной функции в админке, иначе нужные звонки могут не зарегистрироваться.
{% endhint %}

## Фильтрация по *внутреннему номеру*

*Черный список* внутренних номеров позволяет не регистрировать в CRM звонок, пришедший на указанный в списке внутренний номер.

*Белый список* внутренних номеров наоборот позволяет регистрировать в CRM только те звонки, в которых участвовал один из заданных внутренних номеров.

### Настройка через интерфейс модуля

Админка находится по адресу **http\://\<Asterisk IP>:8077/config/black\_white\_list**\
\*\*\*\*(где **\<Asterisk IP>** - IP-адрес вашего Asterisk).\
Раздел в админке **Бизнес-логика > Черный/белый списки**.

![Настройка черных/белых списков](/files/-MOfRljuoimyD0pvdQ_H)

1. Нужно выбрать один из режимов.
2. Добавить внутренние номера.
3. Сохранить.

{% hint style="info" %}
При работе модуль проверяет сначала этот список, затем выполняет кастомизацию **need\_registration.**
{% endhint %}

{% hint style="success" %}
**Логика работы списков при переводах**

Если список настроен в Админке модуля - номер 100 не в черном списке, номер 101 в черном списке, звонок приходит на номер 100, сотрудник берет трубку, разговаривает, переводит на номер 101, разговаривает сотрудник с номером 101, звонок не будет зарегистрирован т.к. номер 101 находится в черном списке.

В случае если такая логика не устраивает - нужно делать кастомизацию в коде скрипта (файл [/opt/itgrix\_{crm}/customizer/actions/need\_registration.php](https://docs.itgrix.ru/custom_common/black-white-list#kastomizaciya-need_registration))
{% endhint %}

## Кастомизация need\_registration

{% hint style="info" %}
Кастомизация настраивается в файле **need\_registration.php,** он находится в каталоге:
{% endhint %}

|          itgrix\_bx (Битрикс24)         |           itgrix\_amo (amoCRM)           |
| :-------------------------------------: | :--------------------------------------: |
| **/opt/itgrix\_bx/customizer/actions/** | **/opt/itgrix\_amo/customizer/actions/** |

{% hint style="info" %}
Для более ранних версий:
{% endhint %}

| itgrix\_bx (Битрикс24) ДО версии 3.4.0 | itgrix\_amo (amoCRM) ДО версии 2.6.0 |
| :------------------------------------: | :----------------------------------: |
|       **/opt/itgrix\_bx/custom/**      |     **/opt/itgrix\_amo/custom/**     |

### **Параметры**

**Вход:**

```javascript
{
  <Набор данных о единичном разговоре в звонке>
}
```

Набор данных о разговоре (conversation) описан в статье [Параметры звонка (call) и разговора (conversation) в кастомизациях](/custom_common/call-conversation-parameters.md#parametry-razgovora-conversation).

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

```javascript
{
  "data": {
    "result": “<Булева переменная: true - регистрируем, false - игнорируем>”
  },
  "state": "success"
}
```

### **Примеры для внутренних номеров**

{% hint style="info" %}
Начиная с версий [itgrix\_bx 3.0.7](https://docs.itgrix.ru/custom_common/pages/-M0SZwZn5pERjpAzqeP-#3.0.7) и [itgrix\_amo 2.2.0](https://docs.itgrix.ru/custom_common/pages/-MFFgLMt-w7Eq-gUqvP2#2.2.0) настройка черного/белого списка для внутренних номеров доступна сразу из админки (интерфейса настройки) модуля.
{% endhint %}

**Пример:** Для запрета регистрации звонков на определенные внутренние номера, например 101 и 102, настроим **ЧЕРНЫЙ список:**

```php
$black_list = array('101', '102');

$key = $params['type'] == 2 ? 'to' : 'from'; // 2 = incoming

if (in_array($params[$key], $black_list)) {
    $result = false;  //все кто есть в списке не регистрируются
}

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

**Пример: БЕЛЫЙ список** по внутренним номерам 201 и 202:

```php
$white_list = array('201', '202');

$key = $params['type'] == 2 ? 'to' : 'from'; // 2 = incoming

if (!in_array($params[$key], $white_list)) {
    $result = false;  //все звонки кроме белого списка не будут регистрироваться
}

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

## Черный/белый список *для транков*

Реализуется через кастомизацию **need\_registration** (см. выше).

Работает только для входящих звонков, так как только для них известно значение транка.

```php
$result = true;

if ($params['type'] === 2) {    // входящий
    $trunks = array('123456', '555666');

    // Белый список
    if (!in_array($params['trunk'], $trunks)) {
        $result = false;
    }
    // Черный список
    //if (in_array($params['trunk'], $trunks)) {
    //    $result = false;
    //}
 }

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


---

# 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_common/black-white-list.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.
