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

SIP-переадресации 3xx

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

Некоторые вендоры отвечают на INVITE переадресацией вместо того, чтобы соединить звонок: «попробуйте вместо этого этот адрес». По умолчанию FlySIP обрабатывает ответ 3xx как любую другую ошибку и переходит к следующей записи маршрутизации. Если на подключении вендора включено Accept 3xx Redirects (принимать переадресации 3xx), коммутатор сам выполняет переадресацию и отправляет звонок на адрес из заголовка Contact.

  1. Коммутатор отправляет INVITE на подключение с включённым Accept 3xx Redirects (вкладка Advanced Parameters (дополнительные параметры), только для SIP-подключений; по умолчанию выключено).
  2. Вендор отвечает переадресацией с заголовком Contact:
    • 301 Moved Permanently или 302 Moved Temporarily: коммутатор берёт первый URI из Contact.
    • 300 Multiple Choices: коммутатор берёт все URI из Contact и сортирует их по параметру q, от наибольшего. URI без q считается имеющим 1.0.
  3. Коммутатор отправляет новый INVITE на первый URI. Имя пользователя из URI становится CLD точно в том виде, в каком оно получено: никакое правило трансляции к нему не применяется. Новое плечо получает Call-ID исходного плеча с добавленными -1, -2 и так далее или случайный Call-ID, если включено Random Call-Id (случайный Call-ID).
  4. Если эта попытка не удаётся, коммутатор пробует следующий URI из ответа 300. Если переадресованное назначение отвечает ещё одним 3xx, коммутатор выполняет и эту переадресацию.
  5. Redirect Depth Limit (лимит глубины переадресации) (от 1 до 20, по умолчанию 1) ограничивает количество попыток переадресации для одной записи маршрутизации: учитываются и цепочки переадресаций, и URI из ответа 300. Когда лимит достигнут или URI закончились, коммутатор переходит к следующей записи маршрутизации, как после любой ошибки.

Каждая попытка переадресации использует тайм-ауты исходной записи маршрутизации: Reply Timeout (тайм-аут ответа) подключения и 1xx Timeout и 2xx Timeout маршрута, как если бы каждый URI был отдельной записью. См. Тайм-ауты звонков. Когда переадресованная попытка завершается одним из Huntstop SIP Codes (SIP-коды huntstop) подключения, звонок, как обычно, останавливается.

Каждая попытка записывает CDR вендора с исходным подключением и тем же маршрутом терминации, поэтому она тарифицируется по цене вендора для исходного префикса, даже если новый CLD имеет другой префикс.

Screenshot "admin-panel/connection-advanced-parameters" has not been generated yet — see scripts/screenshots/screens.yml.
  • Connection (подключение) — маршрут к вендору (SIP-хост, порт, протокол, кодеки), по которому маршрутизация отправляет звонки.
  • Hunting (перебор маршрутов) — попытка следующего маршрута после неудачной попытки.
  • Termination route (маршрут терминации) — прайс-лист префиксов вендора, по которому звонки маршрутизируются к этому вендору; хранится как набор направлений.
  • CDR (запись о звонке) — Call Detail Record: одна строка на звонок со временем, длительностью, направлением, стоимостью и причиной разъединения.

Вендор отвечает:

Contact: <sip:000111111111111@192.0.2.5>;q=0.99, <sip:111111111111@192.0.2.4>;q=1.00, <sip:299111111111111@192.0.2.6>;q=0.98

Если Accept 3xx Redirects включено, а Redirect Depth Limit равен 3 или больше, коммутатор сначала пробует 192.0.2.4 с CLD 111111111111, затем 192.0.2.5 с 000111111111111, затем 192.0.2.6 с 299111111111111. С лимитом по умолчанию 1 он пробует только 192.0.2.4, а затем переходит к следующей записи маршрутизации.

Вендор переадресует звонки третьей стороне, за которую вы не хотите платить

Заголовок раздела «Вендор переадресует звонки третьей стороне, за которую вы не хотите платить»

Оставьте Accept 3xx Redirects выключенным. Тогда 3xx считается ошибкой, и коммутатор переходит к следующей записи группы маршрутизации.