Несколько аккаунтов у одного провайдера.
Несколько аккаунтов у одного провайдера.
Сообщений: 11
|
Несколько аккаунтов у одного провайдера.
Возможно данный вопрос здесь уже поднимался. Но я ответов пока найти не смог.
Имеем:
провайдер выдал несколько логинов 200, 201, 202, 203 со своими паролями.
каждый логин имеет свой номер в городской телефонной сети XXXXXX0, XXXXXX1, XXXXXX2, XXXXXX3.
Имеем телефонную станцию на базе * с внутренними телефонами порядка 50 абонентов с номерами 1XXX.
Задача:
Внутренний абонент набирая прямой городской номер XXXXXXX (без 0 и 9 перед номером), попадал бы в город, притом, чтобы следующий абонент в случае занятости первой линии попадал бы в город через следующую линию (а еще лучше как нибудь рандомно выбирать линию), а набирая внутренний номер абонента (четырехзначный) попадал бы на внутреннего абонента.
Благодарен буду также за ссылки на похожие темы в данном или других форумах.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Несколько аккаунтов у одного провайдера.
exten => _XXXXXXX,1,dial(SIP/prov200/${EXTEN})
exten => _XXXXXXX,n,dial(SIP/prov201/${EXTEN})
exten => _XXXXXXX,n,dial(SIP/prov202/${EXTEN})
|
Сообщений: 11
|
Re: Несколько аккаунтов у одного провайдера.
switch: exten => _XXXXXXX,1,dial(SIP/prov200/${EXTEN})
exten => _XXXXXXX,n,dial(SIP/prov201/${EXTEN})
exten => _XXXXXXX,n,dial(SIP/prov202/${EXTEN})
В этом случае если заканчивается неудачей первый разговор (типа BUSY) то начинает звонить следующий prov201. И пока не переберет все линии или пока не дозвонится.....
|
Откуда: Уфа
Сообщений: 5856
|
Re: Несколько аккаунтов у одного провайдера.
анализировать статус никто не запрещал, дерзайте!
|
Сообщений: 11
|
Re: Несколько аккаунтов у одного провайдера.
switch: анализировать статус никто не запрещал, дерзайте!
А может есть способ рандомно их выбрать? Иначе на первом аккаунте всегда будут быстро заканчиваться деньги.
Может можно их все объединить в группу, а потом как-то из группы выбрать случайным образом?
|
Откуда: Уфа
Сообщений: 5856
|
Re: Несколько аккаунтов у одного провайдера.
Можно и рандомно
можно вообще отслеживать кол-во минут и равномерно загружать. Но это все нужно реализовывать самостоятельно.
|
Сообщений: 11
|
Re: Несколько аккаунтов у одного провайдера.
switch: Можно и рандомно
можно вообще отслеживать кол-во минут и равномерно загружать. Но это все нужно реализовывать самостоятельно.
Естественно самостоятельно.
А можно пример как в предыдущем случае?
|
Откуда: AST
Сообщений: 280
|
Re: Несколько аккаунтов у одного провайдера.
http://support.freepbx.org/forum/freepbx/users/new-trunk-balancing-module-for-freepbx
или
*CLI> core show function RAND
*CLI>
-= Info about function 'RAND' =-
[Synopsis]
Choose a random number in a range.
[Description]
Choose a random number between <min> and <max>. <min> defaults to '0', if
not specified, while <max> defaults to 'RAND_MAX' (2147483647 on many
systems).
Example: Set(junky=${RAND(1,8)}); Sets junky to a random number between
1 and 8, inclusive.
[Syntax]
RAND([min][,max])
|
Сообщений: 80
|
Re: Несколько аккаунтов у одного провайдера.
первый аргумент это строка типа XXX-YYY-ZZZ
где XXX, YYY и ZZZ это разные аккаунты
второй аргумент это номер на который нужно звонить
[macro-outbound-group1]
exten => s,1,Set(trunks=${ARG1})
exten => s,n,Set(called_number=${ARG2})
exten => s,n,Set(index=1)
exten => s,n,Set(nb_trunks=${FIELDQTY(trunks|-)}) ; count number of trunks in "trunks" string
exten => s,n,GotoIf($[${nb_trunks} < 1]?done) ; if trunks is incorrecte, end macro
exten => s,n,While($[${index} <= ${nb_trunks}]) ; else, start while
exten => s,n,Set(curr_trunk=${CUT(trunks,-,${RAND(1,nb_trunks)})}) ; rand trunk
exten => s,n,Dial(Sip/${curr_trunk}/${called_number}) ; try to call via this trunk
exten => s,n,GotoIf($["${DIALSTATUS}"="BUSY"]:done) ; stop if busy
exten => s,n,Set(index=$[${index} + 1])
exten => s,n,EndWhile
exten => s,n(done),Congestion
|
Сообщений: 11
|
Re: Несколько аккаунтов у одного провайдера.
mbyte: первый аргумент это строка типа XXX-YYY-ZZZ
где XXX, YYY и ZZZ это разные аккаунты
второй аргумент это номер на который нужно звонить
[macro-outbound-group1]
exten => s,1,Set(trunks=${ARG1})
exten => s,n,Set(called_number=${ARG2})
exten => s,n,Set(index=1)
exten => s,n,Set(nb_trunks=${FIELDQTY(trunks|-)}) ; count number of trunks in "trunks" string
exten => s,n,GotoIf($[${nb_trunks} < 1]?done) ; if trunks is incorrecte, end macro
exten => s,n,While($[${index} <= ${nb_trunks}]) ; else, start while
exten => s,n,Set(curr_trunk=${CUT(trunks,-,${RAND(1,nb_trunks)})}) ; rand trunk
exten => s,n,Dial(Sip/${curr_trunk}/${called_number}) ; try to call via this trunk
exten => s,n,GotoIf($["${DIALSTATUS}"="BUSY"]:done) ; stop if busy
exten => s,n,Set(index=$[${index} + 1])
exten => s,n,EndWhile
exten => s,n(done),Congestion
Я думаю мне это подойдет.
А нельзя это организовать с помощью очередей?
|
|