Comment on page
Изменение параметров при 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/ |
Вход:
{
"params": {
"caller_id": “<caller_id>”,
"channel": “<channel>”,
"context": “<context>”,
"extension": “<extension>”,
"priority": “<priority>”,
"request_data": “<request_data>”
}
}
Вернуть:
{
"data": {
"caller_id": “<caller_id>”,
"channel": “<channel>”,
"context": “<context>”,
"extension": “<extension>”,
"priority": “<priority>”
}
}
Параметр
request_data
содержит все данные запроса от CRM. Он будет удалён перед выполнением Originate.
Пример содержимого request_data
при запросе от Bitrix24:{
"action": "make_call",
"auth": {
"access_token": "0000000001111111111111122222222222333333334444444444445555555",
"application_token": "aaaaaaaabbbbbbbbbbbccccccccddddddddddd",
"client_endpoint": "https:\/\/example.bitrix24.ru\/rest\/",
"domain": "example.bitrix24.ru",
"expires": "1645749061",
"expires_in": "3600",
"member_id": "eeeeeeffffffffffgggggggggg",
"scope": "crm,entity,user,telephony,im,task,call,department,imopenlines",
"server_endpoint": "https:\/\/oauth.bitrix.info\/rest\/",
"status": "L",
"user_id": "1"
},
"code": "0",
"data": {
"CALL_ID": "externalCall.abcdefg123456789.1645744511",
"CALL_LIST_ID": "0",
"CRM_ENTITY_ID": "12345",
"CRM_ENTITY_TYPE": "LEAD",
"EXTENSION": "111",
"IS_MOBILE": "0",
"LINE_NUMBER": "",
"PHONE_NUMBER": "89120000000",
"PHONE_NUMBER_INTERNATIONAL": "+79120000000",
"USER_ID": "1"
},
"event": "ONEXTERNALCALLSTART",
"portal": "example.bitrix24.ru",
"ts": "1645745461"
}
Пример содержимого
request_data
при запросе от amoCRM:{
"action": "make_call",
"code": "0",
"data": {
"id": "12345678",
"type": "contact"
},
"phone": "89120000000",
"portal": "itgro.amocrm.ru",
"target": "https://apix.itgrix.ru:9004/v1/amo/make_call",
"user_id": "1"
}
К возвращаемому массиву данных
"data"
можно добавить переменные "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
);