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

Диалплан: Балансировка и цикл между транками. [закрыт]

1

Доброго дня! Есть 3 iax транка. На данный момент описано так:

[gate]
exten => _7XXXXXXXXXX,1,Set(ID=${RAND(1,3)})
exten => _7XXXXXXXXXX,2,Dial(IAX2/manager${ID}/${EXTEN})
exten => _7XXXXXXXXXX,n,Hangup()

Подскажите, как сделать цикл? т.е. при попадании звонка в manager1, по недоступности или занятости, необходимо, чтобы звонок уходил в manager2, при тех же условиях там, уходит в manager3 и соответственно для manager3 резервом будет manager1.

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

спросил 2012-02-04 21:49:02 +0400

v0ip Gravatar v0ip flag of Russian Federation
239 29 8 20
http://v0ip.tk/

обновил 2013-03-18 21:45:40 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

2 Ответа

4
[gate];начальный контекст
exten => _7XXXXXXXXXX,1,Set(num=${EXTEN})
exten => _7XXXXXXXXXX,2,Goto(gate_variants,${RAND(1,6)},1)
[gate_variants];все допустимые варианты
exten => 1,1,Set(DO=1-2-3)
exten => 2,1,Set(DO=1-3-2)
exten => 3,1,Set(DO=2-1-3)
exten => 4,1,Set(DO=2-3-1)
exten => 5,1,Set(DO=3-1-2)
exten => 6,1,Set(DO=3-2-1)
exten => _[1-6],2,goto(s,1)

exten => s,1,Set(i=0); делаем цикл(я это не писал, это у меня стандартная заготовка ;) )
exten => s,n(loop),Set(i=$[ i + 1]) ; смотрим по номеру
exten => s,n,Set(do_now=${CUT(DO,-,${i}) ; берем и-тый номер.
exten => s,n,GotoIF($[ "${do_now}" == "" ]?end); номера кончилися ((
exten => s,n,Dial(IAX2/manager${do_now}/${num},,g) ; звоним
exten => s,n,Goto({DIALSTATUS},1); проверяем результат
exten => s,n(end),Hangup; больше нет номеров

exten => BUSY,1,Goto(s,loop); повторяем
exten => CONGESTION,1,Goto(s,loop)
exten => FAIL,1,Goto(s,loop)
exten => NOANSWER,1,Goto(s,loop)

exten => ANSWER,1,Hangup;это не повторям, вроде дозвонилися.
exten => ANSWERED,1,Hangup
ссылка удалить спам редактировать

ответил 2012-02-05 03:55:20 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

а если транков много, можно сделать красивы скриптик который запоминает в переменных какие тарнки "посещалися". но это сами подумайте ;)

meral ( 2012-02-05 04:18:42 +0400 )редактировать
1

Ну и сделать еще раз ID2=RAND(1,3), далее проверку на совпадение с ID, GotoIf на себя еще раз если повтор.. Ну а третий раз ID3=6-${ID}-${ID2}..

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

ответил 2012-02-05 02:14:00 +0400

Zavr2008 Gravatar Zavr2008 flag of Russian Federation
2886 11 9 40
http://mh.otx.ru/

Comments

ого как сложно)

meral ( 2012-02-05 03:43:55 +0400 )редактировать

ну ты народу давай хоть немного домысливать самим=)))

Zavr2008 ( 2012-02-05 13:16:56 +0400 )редактировать

А в чем смысл данного действия?

v0ip ( 2012-02-05 13:52:51 +0400 )редактировать

если народу не давать аздачки на развитие, они спокойно будут раотаь в своих областях, и обращатсья к експертам когда на до чтото посложнее. и все давольны,не?

meral ( 2012-02-05 17:22:25 +0400 )редактировать

и запускать свои эластиксы большинство будет продолжать.. ставлю за вопрос +1, может хоть кто-то перечитает О'Рейли =)))

Zavr2008 ( 2012-02-05 23:54:43 +0400 )редактировать

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

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

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

Статистика

Задан: 2012-02-04 21:49:02 +0400

Просмотрен: 5,946 раз

Обновлен: Feb 05 '12

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