Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / выбор транка

выбор транка

изменение последовательность выбора транков
Сообщений: 147

Re: выбор транка

Так и будет ... ) (плюс, к новым вызовам, идет перезапись по диалстатусу ...)
Не будет. Почему - я обяснил постом выше. Про диалстатус - не совсем уловил .. вы про дополнительную нагрузку ?

Ошибка в том, что все вызовы работают с одной, глобальной, переменной. (вместо того, что бы получить из нее значение). А если устранить этот недостаток, то нужно будет отдельно следить, что бы она не вышла за свои пределы. И все равно - не будет гарантии.

Это не ошибка - это изначальная задумка ). Передавать информацию о том, какому следующему оператору нужно звонить, изменяя ее с каждым звонком. Гарантии - это расчет вероятности. Даже если у вас будет 100 звонков в секунду - вероятность изменения переменной менее 1 процента (и чем мощнее сервер - тем меньше вероятность).
Но в корне - он не правильный ...

В чем неправильность ? Приведите пример при какой нагрузке не будет работать мой алгоритм. Только реальность .. мы не берем гипотетический миллион звонков в секунду на одной машине ).

Ваш алгоритм более универсален и в этом его прелесть, но как следствие менее предсказуем и зависит от чужой реализации. Я предпочитаю насколько можно более полно контролировать процесс ).
2010-09-18 18:49

Сообщений: 1573

Re: выбор транка

iye:

Не будет. Почему - я обяснил постом выше.
Будет, вернее - есть. Проверил ...
Не так сильно, как думал - но выходит (при 4 транках выходил до 8). Начинает выходить уже при 50 вызовах ...

iye:

Это не ошибка - это изначальная задумка ).

Я называю ошибкой не планируемые действия системы ... )

Эта "изначальная задумка" приводит к тому, что вызов не обязательно идет через все имеющиеся транки (в случае отказов). Возможна ситуация, когда вызов 4 раза (при 4 имеющихся) стукнется в один и тот же транк! (а он как раз - не пропускает вызов ;) )

Так что - вот так ... !
2010-09-20 12:57

Сообщений: 147

Re: выбор транка

Возможна ситуация, когда вызов 4 раза (при 4 имеющихся) стукнется в один и тот же транк!
У вас возникла такая ситуация ? И не совсем понял - пиковая нагрузка была 50 вызовов в секунду ? Есть ли статистика, какой процент составлял повторный вызов того же оператора в рамках 1 звонка ? Слабо верится, что переход между пунктами диалплана настолько медленный.
И что же тогда получается .. либо ровное распределение, либо отказоустойчивость ... точнее перекос в одну из сторон ... разве нет золотой середины ? )
2010-09-20 13:10

Сообщений: 1573

Re: выбор транка

iye:

У вас возникла такая ситуация ?
Именно такая - не возникла. Возникла, когда 3 раза "стукнулся" в один транк.
Да это видно и так - при анализе этого алгоритма ...

iye:

И не совсем понял - пиковая нагрузка была 50 вызовов в секунду ?

Выход за "максимум" начинается уже при 50 ... Чем выше нагрузка, тем дальше (было 8) выход ...

Проблема в том, что все вызовы (абсолютно) активно! работают с одной переменной!
2010-09-21 03:00

Сообщений: 147

Re: выбор транка

А насколько ровно распределяются при задании первого входящего рандомом ?
(было 8)

Можете дать статистику или это секрет ?
2010-09-21 09:10

Откуда: Minsk
Сообщений: 55

Re: выбор транка

cron333, iye, спасибо вам огромное за такое количество информации и примеров!

Почитав начал пробовать и сразу возник вопрос:
У меня используется TrixBox и мне стало интересно, можно ли как то внедрить эту функцию к уже имеющимся правилам?

Поковырявшись в конфиг файлах, нашел экстеншн outrt-002-outbound, там находятся диалпланы и номера транков, в которые пускать вызов при определенном диалплане.
Т.е. по сути, если я создам экстеншн outrt-002-outbound-custom (к примеру) и опишу в нем те же диалпланы, только с функцией RAND, получиться то что нужно. Не так ли?

Однако есть "но":
1. можно ли "красиво" добавить это правило, что бы к примеру при отключении одного из транков через веб, он бы выпадал из скрипта автоматом.
2. правила с диалпланом у меня выглядят следующим образом:
(отрывок)
[outrt-002-outbound]
include => outrt-002-outbound-custom
exten => _.4xxxxxxxxxx,1,Macro(user-callerid,SKIPTTL,)
exten => _.4xxxxxxxxxx,n,Set(_NODEST=)
exten => _.4xxxxxxxxxx,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,7,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,12,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,10,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,8,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,13,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,4,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,6,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,5,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,11,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,2,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(dialout-trunk,9,${EXTEN:1},,)
exten => _.4xxxxxxxxxx,n,Macro(outisbusy,)

Первый аргумент макроса "dialout-trunk"-номер транка (как я понял).
Возможно ли использовать RAND таким образом, что бы он выдавал числа к примеру с 1-5, и с 8-12? Или же тут нужно использовать нечто иное?
Это на случай если отключить транки 6 и 7.

Можно по идее, при каждом новом вызове генерить число и проверять не является ли оно 6 or 7 и если является, то генерить еще раз или добавить/отнять/разделить..
Но тогда время вызова может довольно возрости.
2010-09-21 12:32

Сообщений: 147

Re: выбор транка

Первый аргумент макроса "dialout-trunk"-номер транка (как я понял).
Зачем гадать. Возьмите да посмотрите текст макроса macro-dialout-trunk.
Возможно ли использовать RAND таким образом, что бы он выдавал числа к примеру с 1-5, и с 8-12? Или же тут нужно использовать нечто иное?
Это на случай если отключить транки 6 и 7.

Вынесите их из середины диапазона в конец и будет вам счастье. И не нужно будет ничего изобретать.
2010-09-21 13:00

Откуда: Minsk
Сообщений: 55

Re: выбор транка

Зачем гадать. Возьмите да посмотрите текст макроса macro-dialout-trunk.
Смотрю :)

Не удобно выносить так транки. Получается копи-пастинг в конфиге. Впринципе если система статична, то это не проблема, а вот если начальство резко решит какой-нибудь транк на другой офис перекинуть, то уже не приятно.
Впринципе это не смертельно, спасибо :)

У меня другой вопрос, вероятно глупый, но все-же:
можно ли макрос (к примеру Macro(dialout-trunk,,,)) использовать как выражение? Т.е. являются ли ответы от него Busy - fals`ом, а Dial - true к примеру?

Спасибо!
2010-09-21 18:59

Сообщений: 147

Re: выбор транка

Обрабатывайте переменную DIALSTATUS после вызова диала и будет вам счастье. И я имел ввиду не копирование транков а изменение порядковых номеров так, чтобы неугодные транки находились на окраине диапазона. Тада Когда нада - сужаете границы рандома, когда не нада - раздвигаете. Дешево и сердито )
2010-09-21 23:27

Откуда: Minsk
Сообщений: 55

Re: выбор транка

Спасибо за вариант :)

Попробовал что то написать, в деле пока не тестировал - возможности не было.
Выношу на суд вариант с двумя транками при наличии других, но отключенных по каким либо соображениям:

exten => _X.,1,Set(COUNT=2)
exten => _X.,n,Set(RET=${COUNT})
exten => _X.,n,Set(GMIN=1) ;номер первого транка
exten => _X.,n,Set(GMAX=2) ;номер последнего транка

exten => _X.,n(rand),Set(GATE=${RAND(${GMIN}|${GMAX})})

exten => _X.,n(noop),Noop(call trying)
exten => _X.,n,GotoIf($[${RET} > 0]?:busy)
exten => _X.,n,Set(RET=$[${RET} - 1])

exten => _.37[0-2]xxxxxxxx,1,Macro(user-callerid,SKIPTTL,)
exten => _.37[0-2]xxxxxxxx,n,Set(_NODEST=)
exten => _.37[0-2]xxxxxxxx,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _.37[0-2]xxxxxxxx,n,Macro(dialout-trunk,${GATE},${EXTEN:1},,)
exten => _.37[0-2]xxxxxxxx,n,Goto(round)
;
exten => _X.,n(round),GotoIf($[${GATE} < ${GMAX}]?add)
exten => _X.,n,Set(GATE=${GMIN})
exten => _X.,n,Goto(noop)
exten => _X.,n(add),Set(GATE=$[${GATE} + 1])
exten => _X.,n,Goto(noop)

exten => _X.,n(busy),Macro(outisbusy,)


Буду благодарен за любые замечания.
С уважением

P.S. возник вопрос, может кто знает как можно поменять "номер" транка?
P.P.S. вообщем что то не работает конфиг. почему, пока не понял..
2010-09-22 16:21

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru