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

Сценарий: филиалы в разных городах. Сотрудник из города А с номером 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
);