> For the complete documentation index, see [llms.txt](https://itgro-aly.gitbook.io/test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itgro-aly.gitbook.io/test-docs/black-white-list.md).

# black white list

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

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

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

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

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

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

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

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

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) в кастомизациях](broken://pages/42fe7db34ee8b77fe105cb232a04c45c45a513a8#parametry-razgovora-conversation).

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

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

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

{% hint style="info" %}
Начиная с версий [itgrix\_bx 3.0.7](file:///1659967/changelog-bx.md#3.0.7) и [itgrix\_amo 2.2.0](file:///1659967/changelog-amo.md#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
    ),
);
```
