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

Добавление кода города в зависимости от города оператора

Сценарий: филиалы в разных городах. Сотрудник из города А с номером 102 на стационарном телефоне набирает номер клиента без кода города (шестизначный 224466). Номер короткий, но в CRM хочется видеть с кодом города (1234 для А и 4321 для Б).

ДО версии 2.15.0 добавляем код в файл /opt/bx24asterisk/custom/process_search_params

Для версии 2.15.0 и выше добавляем код в файл /opt/bx24asterisk/custom/process_registration_params

$townCodeToUserList = array(
    '1234' => array('102', '103'), // Код города A и список сотрудников для города A
    '4321' => array('788', '789'), // Код города B и список сотрудников для города B
);

// Считаем, что короткий номер - 6 цифр
if (strlen($params['PHONE_NUMBER']) == 6) {
    // Получаем внутренний номер, исходя из направления звонка (входящий/исходящий)
    $userNumber = $params['conversation'][ $params['TYPE'] == 2 ? 'from' : 'to' ];

    // Перебираем города для поиска сотрудника, чтобы получить код
    // Если сотрудник не будет найден, номер не изменится
    foreach ($townCodeToUserList as $code => $users) {
        if (in_array($userNumber, $users)) {
            $params['PHONE_NUMBER'] = $code . $params['PHONE_NUMBER'];
        }
    }
    
}

return array(
    'state' => 'success',
    'data' => $params
);