Изменение номера\контекста для вызова в астериск
Инициализация звонка из 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
);