Изменение параметров при click-to-call

Инициализация звонка из CRM может не сработать по следующим причинам:

  • Телефонный номер в CRM начинается с символа "+";

  • На Asterisk настроен особый набор номера, например звонить можно только через 9.

Логика такой доработки будет следующая: будем получать последние 10 символов (для России) и прибавлять к полученному результату нужный префикс. В примере префиксом будет цифра 8.

Для настройки кастомизации необходимо подключить файл кастомизатора в настройки модуля. Редактируем файл /opt/bx24asterisk/custom/process_originate_params.php.

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

Подробно параметры описаны в статье.

//имена параметров как в конфиге
$phone = &$params['extension'];
//Получаем в $match последние 10 цифр номера
if(preg_match('~(\d{10})$~', $phone, $match)){
//Добавляем к найденому префикс
$phone = '8' . $match[1];
}
return array(
'state' => 'success',
'data' => $params
);

Разные контексты

Бывает появляется необходимость звонить через разные контексты. В примере: звонки с номеров (161, 162, 163) пойдут через контекст custom-context-1; с номеров (141, 140) через контекст custom-context-2; остальные звонки пойдут через стандартный контекст, указанный в настройках.

//имена параметров как в конфиге
$phone = &$params['extension'];
$channel = explode('/', $params['channel']);
$contexts = array(
'custom-context-1' => array(161, 162, 163),
'custom-context-2' => array(141, 140),
);
foreach($contexts as $context => $phones){
if(in_array($channel[1], $phones)){
$params['context'] = $context;
break;
}
}
return array(
'state' => 'success',
'data' => $params
);