Страница 1 из 1

Отработка двух extensions в одном контексте

Добавлено: 23 мар 2026, 18:02
AlexeyFatnev
Здравствуйте, все.

Asterisk 18, модуль chan_sip.

Заметил странную вещь.

Есть контекст для исходящих звонков. В этом контексте два exten:

exten => _[12]XX,1,NoOp(----------------Usual Internal calls-------------------)
same => n,Dial(SIP/${EXTEN},60)
exten => 105,1,NoOp(105 Begins)


Exten 105 пустой, был создан для каких-то тестов ранее.
При вызове 105 отрабатывается сначала exten 105, затем шаблон _[12]XX
В CEL вижу сообщения:

105 Begins
---------------Usual Internal calls-------------------
И далее, по контекстуу

Если в exten 105 добавить какие-то действия (hangup, dial) отрабатывается только этот exten.

Я предполагал, что при наличии двух подпадающих под номер exten отрабатывается ТОЛЬКО более точный, в данном случае 105, второй (шаблон) игнорируется.

Вопрос, видимо, реторический, но все-таки хотелось бы понимать работу механизма.

Re: Отработка двух extensions в одном контексте

Добавлено: 24 мар 2026, 08:46
AlexeyFatnev
P.S.
Если в exten 105 добавить какие-то несущественные функции, типа noop() или set(), второй exten также будет обработан.

Re: Отработка двух extensions в одном контексте

Добавлено: 24 мар 2026, 12:36
Glukinho
Ну да, механизм такой, что астериск будет пытаться отработать все возможные подходящие под шаблон экстеншены, так что ставьте Hangup в самом конце обработки и звонок не пойдет по диалплану дальше нужного.

Re: Отработка двух extensions в одном контексте

Добавлено: 24 мар 2026, 12:43
Glukinho
Почитайте вот тут: https://docs.asterisk.org/Configuration ... n-matching

Там внизу прямо указано, с примером:

> Please be aware that because of the way auto-fallthrough works, if Asterisk can't find the next priority number for the current extension or pattern match, it will also look for that same priority in a less specific pattern match.
> ...
> We strongly recommend you make the Hangup() application be the last priority of any extension to avoid this behaviour

Re: Отработка двух extensions в одном контексте

Добавлено: 27 мар 2026, 09:24
AlexeyFatnev
Glukinho,

Спасибо, теперь все ясно.

Re: Отработка двух extensions в одном контексте

Добавлено: 27 мар 2026, 09:27
AlexeyFatnev
Добавлю, на всякий случай.

Не проверял, но видимо, если в параметрах Dial стиот постобработка звонка после отключения, второй exten обработается и после него (если не найдется hungup).

Так что hungup() всегда обязателен.