VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
AlexeyFatnev
Сообщения: 35
Зарегистрирован: 26 май 2022, 18:04

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

Сообщение 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, второй (шаблон) игнорируется.

Вопрос, видимо, реторический, но все-таки хотелось бы понимать работу механизма.
AlexeyFatnev
Сообщения: 35
Зарегистрирован: 26 май 2022, 18:04

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

Сообщение AlexeyFatnev »

P.S.
Если в exten 105 добавить какие-то несущественные функции, типа noop() или set(), второй exten также будет обработан.
Glukinho
Сообщения: 748
Зарегистрирован: 07 янв 2011, 20:05

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

Сообщение Glukinho »

Ну да, механизм такой, что астериск будет пытаться отработать все возможные подходящие под шаблон экстеншены, так что ставьте Hangup в самом конце обработки и звонок не пойдет по диалплану дальше нужного.
Glukinho
Сообщения: 748
Зарегистрирован: 07 янв 2011, 20:05

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

Сообщение 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
Ответить
© 2008 — 2026 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH