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

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

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

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

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

Кастомизация настраивается в файле process_originate_params.php, он находится в каталоге:

itgrix_bx (Битрикс24)

itgrix_amo (amoCRM)

/opt/itgrix_bx/custom/

/opt/itgrix_amo/custom/

Параметры

Вход:

{
"params": {
"caller_id":<caller_id>,
"channel":<channel>,
"context":<context>,
"extension":<extension>,
"priority":<priority>
}
}

Вернуть:

{
"data": {
"caller_id":<caller_id>,
"channel":<channel>,
"context":<context>,
"extension":<extension>,
"priority":<priority>
}
}

К этому массиву данных можно добавить переменные "codecs" и "variables":

"codecs":<codecs>,
"variable":<variable>,

Добавлем префикс

//имена параметров как в конфиге
$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
);