# Черно/белые списки для версии до 2.15.0

### Черный/белый список (фильтрация по внутреннему номеру):

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

Для отмены регистрации звонков на определенные внутренние номера, например, 111, 112 и 113, редактируем файл **/opt/bx24asterisk/custom/process\_final\_params.php**.

Если папки /opt/bx24asterisk/custom нет, редактируем файл **/opt/bx24asterisk/customizer.php** после строки **case 'process\_final\_params'.** Пример кода:

```
$action = 'register';

//$white_list = array('111', '112', '113'); 
$black_list = array('111', '112', '113'); 
	
// узнаём тип звонка
// 2 = incoming
$key = $params['conversation']['type'] == 2 ? 'to' : 'from'; 

// Условие для белого списка
//if (!in_array($params['conversation'][$key], $white_list)) {

// Условие для черного списка
if (in_array($params['conversation'][$key], $black_list)) {
	$action = 'delete';
}

return array(
	'state' => 'success',
       	'data' => $params,
	'action' => $action // эта строка должна присутствовать
);
```

При отмене регистрации звонка будет удалены дело и лид, если для этого звонка был создан новый лид.

Подробно параметры[ описаны в статье](https://docs.itgrix.ru/custom_bx/..#5-process_final_params).

### Черный и белый список (фильтрация по транку):

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

Есть варианты настройки данной логики:

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

Для первого варианта (полностью игнорируем звонки) необходимо указать в файле конфигурации (**/etc/bx24asterisk/config.json**) для параметра "**customize\_search\_params**" значение **TRUE** и написать код в файле **/opt/bx24asterisk/custom/process\_search\_params.php**.

Если папки /opt/bx24asterisk/custom нет, редактируем файл **/opt/bx24asterisk/customizer.php** после строки **case 'process\_search\_params'**. Пример кода:

```
$action = 'register';

if ($params['TYPE'] === 2) {
    $trunks = array('2723033');

    $key = array_key_exists('conversation', $params)
                ? 'conversation'
                : array_key_exists('call', $params)
                    ? 'call'
                    : false;

    // Условие для белого списка
    if (!in_array($params[$key] ['trunk'], $trunks)) {
    // Для черного списка условие будет таким:
    // if (in_array($params[$key] ['trunk'], $trunks)) {
        $action = 'ignore';
    }
 }

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

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

* указать в файле конфигурации (**/etc/bx24asterisk/config.json**) для параметра "**customize\_final\_params**" значение **TRUE**
* отредактировать код файла кастомизатора (**/opt/bx24asterisk/custom/process\_final\_params.php**).
* если папки /opt/bx24asterisk/custom нет, то редактируем файл **/opt/bx24asterisk/customizer.php** после строки **case 'process\_final\_params'**:

```
$action = 'register';
$black_list = array(111, 112, 113);

// Реализация черного списка
if(!empty($params['conversation']['trunk']) && in_array($params['conversation']['trunk'], $black_list)) {
// При реализация белого списка, условие будет такое
//if(empty($params['conversation']['trunk']) || !in_array($params['conversation']['trunk'], $black_list)) {
    $action = 'delete';
}

return array(
    'state' => 'success',
    'data' => $params,
    'action' => $action // эта строка должна присутствовать
);
```
