Перейти к содержимому

Изменение тарифа и маршрутизации после аутентификации

Этот перевод выполнен автоматически и ещё не вычитан. Читать английскую версию

Правило аутентификации может переопределить тариф и группу маршрутизации аккаунта, но только для звонков, которые оно аутентифицирует. Звонки зарегистрированных устройств, которые входят через SIP digest, и звонки, которые приходят через DID Pool (пул DID), никогда не проходят через правило аутентификации аккаунта. Правила после аутентификации закрывают этот пробел: они применяются, когда аккаунт уже известен, как бы он ни был найден, и выбирают звонки по удалённому IP-адресу, CLI и CLD. В этом руководстве вы направите звонки одного аккаунта в Великобританию через отдельную группу маршрутизации и тариф. Заложите около 20 минут.

Аккаунт из примера office-pbx (ID 3092) регистрируется с digest-учётными данными. Его звонки на номера, которые начинаются с 44, должны использовать тариф UK premium (ID 12) и группу маршрутизации UK premium (ID 7).

  • Тариф и группа маршрутизации существуют, и вы знаете их ID: i_tariff и i_routing_group в URL панели, когда вы их открываете, или из API.
  • Вы можете вызывать XML-RPC API, как описано в разделе Обзор API. В примерах используется вспомогательная функция call() из раздела Вызов API из Python.

После того как коммутатор аутентифицировал звонок и применил правила трансляции правила аутентификации, он ищет правило после аутентификации аккаунта, которое совпадает со звонком:

Поле Сопоставляется с Синтаксис шаблона
remote_ip IP-адрес, с которого приходит звонок точное совпадение
cli Номер звонящего подстановочные символы
cld Набранный номер подстановочные символы

Правилу нужно хотя бы одно из трёх полей; поле, которое вы оставляете пустым, совпадает с любым звонком. В cli и cld:

  • * соответствует любой последовательности символов: 0038* совпадает с 0038943794.
  • ? соответствует одному символу: 0?7834 совпадает с 007834 и 017834.
  • [1-5] соответствует одному символу из диапазона, [^p] — одному символу, который не является p.
  • \ делает следующий символ буквальным: \* — это звёздочка.

abc?_[1-5][2]0* совпадает с abcd_1201234567, но не с abcde_1201234567.

Когда правило совпадает, звонок получает тариф и группу маршрутизации правила вместо настроек аккаунта, а правила трансляции CLI и CLD этого правила переписывают номера. Собственные правила трансляции аккаунта выполняются после этого. Полный порядок см. в разделе Трансляция номеров.

Результат: вы знаете, какие поля заполнить для своего случая.

Вызовите addPostAuthRule с аккаунтом и шаблоном CLD:

call("addPostAuthRule", {
"i_account": 3092,
"cld": "44*",
"i_tariff": 12,
"i_routing_group": 7,
})
response
{"result": "OK", "i_post_auth_rule": 418}

Добавьте "remote_ip": "198.51.100.20", чтобы применять правило только к звонкам с IP-адреса офиса. Добавьте "cld_translation_rule" или "cli_translation_rule", когда новая группа маршрутизации ожидает другой формат номера, например s/^44/0/.

Результат: у аккаунта есть правило после аутентификации с ID 418.

  1. Вызовите listPostAuthRules с {"i_account": 3092} и проверьте поля правила.
  2. Сделайте тестовый звонок с устройства, зарегистрированного как office-pbx, на номер, который начинается с 44.
  3. Откройте Reports → Call Records (CDRs) (записи о звонках) и детали звонка. I-Post-Auth-Rule (ID правила после аутентификации) в разделе Call Authentication (аутентификация звонка) показывает 418, а цена и вендор берутся из UK premium.
  4. Сделайте звонок на другое направление. I-Post-Auth-Rule пустое, и применяются тариф и группа маршрутизации аккаунта.

Чтобы позже изменить правило, вызовите updatePostAuthRule с i_post_auth_rule и полями, которые вы меняете; чтобы удалить его, вызовите deletePostAuthRule.