Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Есть 3 SIP провайдера, как сделать dialplan чтоб набор шел циклически по кругу

1

т.е. первый вызов от абонента направляется к первому SIP провайдеру, второй на второго провайдера, 3-тий вызов на 3 провайдера, 4 - снова попадает на первого.

сейчас у меня вот такой вот extensions

exten => _8XXXXXXXXXX,1, NoOp
exten => _8XXXXXXXXXX,n, Dial(SIP/${EXTEN}@sipnet,,tT)
exten => _8XXXXXXXXXX,n, Dial(SIP/${EXTEN}@sipgate,,tT)
exten => _8XXXXXXXXXX,n, Dial(SIP/${EXTEN}@arinos,,tT)
exten => _8XXXXXXXXXX,n, Hangup

Сейчас все уходит в сипнет...

удалить закрыть спам изменить тег редактировать

спросил 2011-09-25 18:36:21 +0400

elvis56 Gravatar elvis56
21 1 1 5

обновил 2011-09-26 08:07:41 +0400

alexcr Gravatar alexcr
3124 10 9 51
http://asterisk-service.c...

1 Ответ

3

Вариант с циклическим обзвоном , с проверкой ключа в базе.

[context]
exten => _X.,1,ExecIF($["${DB_EXISTS(dial/count)}" = "0"]?Set(DB(dial/count)=0))
exten => _X.,n,Set(DB(dial/count)=${IF($[${DB(dial/count)} > 2]?1:$[${DB(dial/count)} +1])})
exten => _X.,n,ExecIF($["${DB(dial/count)}" = "1"]?Dial(SIP/${EXTEN}@sipgate,,tT))
exten => _X.,n,ExecIF($["${DB(dial/count)}" = "2"]?Dial(SIP/${EXTEN}@arinos,,tT))
exten => _X.,n,ExecIF($["${DB(dial/count)}" = "3"]?Dial(SIP/${EXTEN}@sipnet,,tT))
exten => _X.,n,Hangup
ссылка удалить спам редактировать

ответил 2011-09-25 20:19:10 +0400

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

обновил 2011-09-25 20:55:06 +0400

Comments

[Sep 25 20:55:21] WARNING[94399]: ast_expr2.fl:449 ast_yyerror: If you have questions, please refer to doc/tex/channelvariables.tex. [Sep 25 20:55:21] WARNING[94399]: ast_expr2.fl:445 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected '+', expecting $end; Input: +1 ^ [Sep 25 20:55:21] WARNING[94399]: ast_expr2.fl:449 ast_yyerror: If you have questions, please refer to doc/tex/channelvariables.tex. [Sep 25 20:55:21] WARNING[94399]: func_logic.c:188 acf_if: Syntax IF(<expr>?[<true>][:<false>]) (expr must be non-null, and either <true> or <false> must be non-null) [Sep 25 20:55:21] WARNING[94399]: func_logic.c:189 acf_if: In this case, <expr>='', <true>='0', and <false>='' elvis56 ( 2011-09-25 20:40:10 +0400 )редактировать
Поправил первую строку. Остальное проверил , нормально работает. zzuz ( 2011-09-25 20:44:18 +0400 )редактировать
вариант с проверкой переменной. zzuz ( 2011-09-25 20:54:04 +0400 )редактировать
жалуется на символы > + такая же ошибка что и выше, его и пробовал, на первую строку не жалуется elvis56 ( 2011-09-25 21:06:41 +0400 )редактировать
у меня не жалуется , код проверен на астериске 1.6.0.28. В других версиях аналогично должно работать. У вас копипаст видимо сломался. zzuz ( 2011-09-25 21:25:00 +0400 )редактировать
хмм, мой 1.6.2.17.2, странно, спасибо, буду читать как победить. О результате сообщу elvis56 ( 2011-09-25 21:27:31 +0400 )редактировать
:-) копи паст делал через блокнот, сейчас попробую написать elvis56 ( 2011-09-25 21:32:27 +0400 )редактировать
Огромнейшее Вам спасибо, заработало. Действительно копипаст "зло" elvis56 ( 2011-09-25 22:03:45 +0400 )редактировать
шикарно, +1 cvieri ( 2011-09-26 12:36:45 +0400 )редактировать
еще такой вопрос, а если какой-либо из провайдеров по какой-то причине не принимает звонок, можно его сразу отправить на следующего по счету в цикле? я понял надо смотреть DIALSTATUS а вот как его сюда прикрутить? elvis56 ( 2011-09-27 21:19:21 +0400 )редактировать
Смотря , как отбивает звонок провайдер. А так можете посылать на DIALSTATUS и если нужно , возвращать на context,_X.,1 , он там и посчитает следующего. zzuz ( 2011-09-27 22:31:26 +0400 )редактировать
zzuz - ${DIALSTATUS}"="NOANSWER" при не ответе, куда добавить Dialstatus, можете поправить ваш ответ с данным условием? к сожалению у меня не получилось elvis56 ( 2011-09-29 13:15:20 +0400 )редактировать
перед exten => _X.,n,Hangup пишите exten => _X.,n,GotoIF($[ ${DIALSTATUS}"="NOANSWER"]?1) . только не забудьте выставить таймаут при звонке . zzuz ( 2011-09-29 13:32:02 +0400 )редактировать
(Dial(SIP/${EXTEN}@sipgate,10,tT)) здесь тайм аут? elvis56 ( 2011-09-29 14:11:03 +0400 )редактировать
да. zzuz ( 2011-09-29 17:05:52 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2011-09-25 18:36:21 +0400

Просмотрен: 931 раз

Обновлен: Sep 26 '11

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.