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

как продолжить работу в следующем exten-шаблоне

Добавлено: 21 мар 2011, 13:15
bazhutyan
Добрый день!

Предположим есть в одном контексте такие exten'ы:

exten => _X.,1,AGI(check_debts.pl)
...

exten => 100,1,Dial(SIP/${EXTEN},90)
...

Есть-ли возможность как-то перейти после обработки первого exten'а к следующему, ну то есть вот если бы в конце поставить не
exten => _X.,n,Hungup(), а exten => _X.,n,Continue()

Нужно это для следующей задачи - есть работающий астериск с кучей клиентов. Понадобился функционал проверки баланса клиента, и в случае отрицательного - говорить клиенту это при попытке звонка, ну а положительно, соответственно дать ему звонить. У клиентов совершенно различные контексты. Я предполагал пройтись по всем и вставить вначале каждого контекста вставить include с функциями проверки баланса. Проблема в том, что если у клиента баланс положительный, то я не могу понять, как сделать, чтобы обработка exten'ов в имеющихся юзерских контекстах продолжалась?

Может есть другой вариант сделать нужный мне функционал?

Re: как продолжить работу в следующем exten-шаблоне

Добавлено: 21 мар 2011, 13:28
ded
Есть.
Используйте макросы. Макрос после выполнения возвращает выполнения диалплана в ту точку, откуда был вызван.
Вам нужно использовать примерно так:
exten => _X.,1,Macro(check-balance)
exten => _X.,n,Dial(SIP/trunk/${EXTEN})

[macro-check-balance]
exten => s,1,AGI(check_debts.pl)

Re: как продолжить работу в следующем exten-шаблоне

Добавлено: 21 мар 2011, 14:14
bazhutyan
ded писал(а):Есть.
Используйте макросы. Макрос после выполнения возвращает выполнения диалплана в ту точку, откуда был вызван.
Вам нужно использовать примерно так:
exten => _X.,1,Macro(check-balance)
exten => _X.,n,Dial(SIP/trunk/${EXTEN})

[macro-check-balance]
exten => s,1,AGI(check_debts.pl)
Не подходит. Дело в том, что у пользователей уже есть контексты и большинство из них не одинаковые. Т.е.
поставить exten => _X.,n,Dial(SIP/trunk/${EXTEN}) я не могу, т.к. у многих есть спец.наборы и соответственно exten'ы разные.
Мне же хотелось внести минимум изменений, а именно везде вставить одну строчку в самое начало.
Начинаю уже думать, что это не осуществимо так просто...

Re: как продолжить работу в следующем exten-шаблоне

Добавлено: 21 мар 2011, 17:03
ded
Всё осуществимо, но!
Вы используете гиперцитирование предыдущего поста (оверквоттинг). Это первый инфернальный признак.
Он говорит о многом.
Никакой помощи от меня уже не будет.

Re: как продолжить работу в следующем exten-шаблоне

Добавлено: 22 мар 2011, 01:01
bazhutyan
Ответ прост на мой взгляд - в Астериск нет возможности простого перехода на следующий exten при завершении предыдущего.

Re: как продолжить работу в следующем exten-шаблоне

Добавлено: 22 мар 2011, 01:37
Aven
А чем плох Goto ?

Re: как продолжить работу в следующем exten-шаблоне

Добавлено: 22 мар 2011, 08:38
bazhutyan
я заранее не знаю exten или метку на который делать переход, поэтому не могу применить Goto.