К списку статей

Изменения номера\контекста для вызова в астериск

Проблема инициализации звонка из СРМ, может быть по причине того что телефонный номер в СРМ начинается с символа "+" или правилами астериск настроен особый набор номера, например звонить можно через 9.

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

Для настройки кастомизации необходимо подключить файл кастомизатора в настроки модуля.

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
    );

Бывает появляется необходимость звонить через разные контексты. В примере ищем внутренний номер в списке. В случае если не находим, звонок пойдет через стандартный контекст, указанный в настройках:

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