prefixkit Вопрос инженеруСпросить EN

Телефония

Проверка шаблонов диалплана

Вставьте правила exten => из extensions.conf или XML-диалплан FreeSWITCH и список номеров: увидите, какое правило сработает, в каком порядке Asterisk проверяет шаблоны, что уйдёт в Dial после ${EXTEN:1} и какие шаблоны опасны.

Как Asterisk выбирает шаблон

Порядок строк в extensions.conf не важен: внутри контекста Asterisk сортирует шаблоны сам. Точное совпадение (112) всегда раньше шаблона. Дальше шаблоны сравниваются символ за символом: на каждой позиции выигрывает тот, у кого меньше вариантов. Цифра — 1 вариант, N — 8 (2–9), Z — 9 (1–9), X — 10, [349] — 3. Точка и «!» в конце проигрывают всему. Поэтому _810X. срабатывает раньше _8XXXXXXXXXX: на второй позиции у него 1, а у соперника 10 вариантов.

Символы шаблонов Asterisk

  • X — любая цифра 0–9; Z — 1–9; N — 2–9.
  • [1-5], [349] — одна цифра из набора.
  • . — один или больше любых символов; ! — ноль или больше, срабатывает сразу.
  • ${EXTEN:1} — номер без первой цифры, ${EXTEN:-4} — последние 4 цифры, ${EXTEN:3:4} — 4 цифры начиная с четвёртой.

FreeSWITCH

В FreeSWITCH правила проверяются по порядку в файле, а номер сравнивается с регулярным выражением в condition field="destination_number". Скобки в выражении попадают в $1, $2… в data действия bridge. Ставьте ^ и $, иначе ^1\d{2} совпадёт и с 1001.

Рядом: генератор SIP-транка, конструктор IVR, разбор SIP-лога.