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

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

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

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

Ответить
bazhutyan
Сообщения: 4
Зарегистрирован: 21 мар 2011, 10:46

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

Сообщение 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'ов в имеющихся юзерских контекстах продолжалась?

Может есть другой вариант сделать нужный мне функционал?
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

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

[macro-check-balance]
exten => s,1,AGI(check_debts.pl)
bazhutyan
Сообщения: 4
Зарегистрирован: 21 мар 2011, 10:46

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

Сообщение 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'ы разные.
Мне же хотелось внести минимум изменений, а именно везде вставить одну строчку в самое начало.
Начинаю уже думать, что это не осуществимо так просто...
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

Всё осуществимо, но!
Вы используете гиперцитирование предыдущего поста (оверквоттинг). Это первый инфернальный признак.
Он говорит о многом.
Никакой помощи от меня уже не будет.
bazhutyan
Сообщения: 4
Зарегистрирован: 21 мар 2011, 10:46

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

Сообщение bazhutyan »

Ответ прост на мой взгляд - в Астериск нет возможности простого перехода на следующий exten при завершении предыдущего.
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

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

Сообщение Aven »

А чем плох Goto ?
Решения телефонии на базе Asterisk || http://it-need.ru
bazhutyan
Сообщения: 4
Зарегистрирован: 21 мар 2011, 10:46

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

Сообщение bazhutyan »

я заранее не знаю exten или метку на который делать переход, поэтому не могу применить Goto.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH