Изменение параметров при click-to-call
Инициализация звонка из CRM может не сработать по следующим причинам:
  • Телефонный номер в CRM начинается с символа "+";
  • На Asterisk настроен особый набор номера – например, звонить можно только через 9.
Логика такой доработки будет следующая: будем получать последние 10 символов (для России) и прибавлять к полученному результату нужный префикс. В примере префиксом будет цифра 8.
Кастомизация настраивается в файле process_originate_params.php, он находится в каталоге:
itgrix_bx (Битрикс24)
itgrix_amo (amoCRM)
/opt/itgrix_bx/customizer/actions/
/opt/itgrix_amo/customizer/actions/
Для более ранних версий:
itgrix_bx (Битрикс24) ДО версии 3.4.0
itgrix_amo (amoCRM) ДО версии 2.6.0
/opt/itgrix_bx/custom/
/opt/itgrix_amo/custom/

Параметры

Вход:
1
{
2
"params": {
3
"caller_id":<caller_id>,
4
"channel":<channel>,
5
"context":<context>,
6
"extension":<extension>,
7
"priority":<priority>
8
}
9
}
Copied!
Вернуть:
1
{
2
"data": {
3
"caller_id":<caller_id>,
4
"channel":<channel>,
5
"context":<context>,
6
"extension":<extension>,
7
"priority":<priority>
8
}
9
}
Copied!
К этому массиву данных можно добавить переменные "codecs" и "variables":
1
"codecs":<codecs>,
2
"variable":<variable>,
Copied!

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

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

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

Бывает, появляется необходимость звонить через разные контексты. В примере звонки с номеров 161, 162, 163 пойдут через контекст custom-context-1; а с номеров 141, 140 через контекст custom-context-2; остальные звонки пойдут через стандартный контекст, указанный в настройках.
1
//имена параметров как в конфиге
2
$phone = &$params['extension'];
3
$channel = explode('/', $params['channel']);
4
5
$contexts = array(
6
'custom-context-1' => array(161, 162, 163),
7
'custom-context-2' => array(141, 140),
8
);
9
10
foreach($contexts as $context => $phones){
11
if(in_array($channel[1], $phones)){
12
$params['context'] = $context;
13
break;
14
}
15
}
16
17
return array(
18
'state' => 'success',
19
'data' => $params
20
);
Copied!
Last modified 6mo ago