ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы и их решения Asterisk как такового

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

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

Сообщение bazhutyan » 21 мар 2011, 14:15

Добрый день!

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

Может есть другой вариант сделать нужный мне функционал?
bazhutyan
 
Сообщений: 4
Зарегистрирован: 21 мар 2011, 11:46

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

Сообщение ded » 21 мар 2011, 14:28

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

[macro-check-balance]
exten => s,1,AGI(check_debts.pl)
ded
 
Сообщений: 15830
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение bazhutyan » 21 мар 2011, 15:14

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'ы разные.
Мне же хотелось внести минимум изменений, а именно везде вставить одну строчку в самое начало.
Начинаю уже думать, что это не осуществимо так просто...
bazhutyan
 
Сообщений: 4
Зарегистрирован: 21 мар 2011, 11:46

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

Сообщение ded » 21 мар 2011, 18:03

Всё осуществимо, но!
Вы используете гиперцитирование предыдущего поста (оверквоттинг). Это первый инфернальный признак.
Он говорит о многом.
Никакой помощи от меня уже не будет.
ded
 
Сообщений: 15830
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение bazhutyan » 22 мар 2011, 02:01

Ответ прост на мой взгляд - в Астериск нет возможности простого перехода на следующий exten при завершении предыдущего.
bazhutyan
 
Сообщений: 4
Зарегистрирован: 21 мар 2011, 11:46

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

Сообщение Aven » 22 мар 2011, 02:37

А чем плох Goto ?
Решения телефонии на базе Asterisk || http://it-need.ru
Аватар пользователя
Aven
 
Сообщений: 798
Зарегистрирован: 28 янв 2011, 17:20

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

Сообщение bazhutyan » 22 мар 2011, 09:38

я заранее не знаю exten или метку на который делать переход, поэтому не могу применить Goto.
bazhutyan
 
Сообщений: 4
Зарегистрирован: 21 мар 2011, 11:46


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH