Инициализация звонка из CRM может не сработать по следующим причинам:
Телефонный номер в CRM начинается с символа "+";
На Asterisk настроен особый набор номера – например, звонить можно только через 9.
Логика такой доработки будет следующая: будем получать последние 10 символов (для России) и прибавлять к полученному результату нужный префикс. В примере префиксом будет цифра 8.
Кастомизация настраивается в файле process_originate_params.php, он находится в каталоге:
Параметр request_data содержит все данные запроса от CRM. Он будет удалён перед выполнением Originate.
Пример содержимого request_data при запросе от Bitrix24:
К возвращаемому массиву данных "data" можно добавить переменные "codecs" и "variables":
"codecs": “<codecs>”,"variable": “<variable>”,
Добавлем префикс
//имена параметров как в конфиге$phone =&$params['extension'];//Получаем в $match последние 10 цифр номераif(preg_match('~(\d{10})$~', $phone, $match)){//Добавляем к найденому префикс $phone ='8'. $match[1];}returnarray('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; }}returnarray('state'=>'success','data'=> $params);