К списку статей

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

Для настройки кастомизации необходимо подключить файл кастомизатора в настроки модуля.

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

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

Для отмены регистрации звонков, на определенные внутреннего номера, например 111, 112 и 113, необходимо изменить метод кастомизатора 'process_final_params'. Пример кода:

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 // эта строка должна присутствовать
    	);

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

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

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

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

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

Для первого варианта (полностью игнорируем звонки), необходимо указать в файле конфигурации (/etc/bx24asterisk/config.json), параметру "customize_search_params" значение TRUE, а также в файле кастомизатора (/opt/bx24asterisk/customizer.php) изменить код блока "process_search_params" на следующий:

    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 (!$key || !in_array($params[$key] ['trunk'], $trunks)) {
            // Для черного списка условие будет таким:
            // if ($key && 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/customizer.php), блока "process_final_params":
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 // эта строка должна присутствовать
    );