2006/10/13, Claudio Polegato Junior <<a href="mailto:cpolegatojr.asterisk@gmail.com">cpolegatojr.asterisk@gmail.com</a>>:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Rafael Augusto escreveu:<br>> Claudio, obrigado pelo retorno, mas estou precisando fazer em canais<br>> SIP, tipo, tenho 3 contas SIP, a chamada sainte pegar as contas<br>> aleatórias, nunca sair pela mesma conta sequencialmente. Obrigado
<br>Interessante...<br><br> E se usar probabilidade com o comando Random, exemplo:<br><br>exten => _X.,n,Random(67:outros) ; 67% de chance de pular para "outros" e 33% de passar<br>exten => _X.,n,Dial(SIP/provedor1)
<br>exten => _X.,n,Goto(terminado)<br>exten => _X.,n(outros),Random(50:ultimo) ; 50% (33,5% do total) de chance de pular para "ultimo" e 50% de passar<br>exten => _X.,n,Dial(SIP/provedor2)<br>exten => _X.,n,Goto(terminado)
<br>exten => _X.,n(ultimo),Dial(SIP/provedor3)<br>exten => _X.,n,Goto(terminado)<br>...<br>exten => _X.,n(terminado),...<br>...<br><br>Não tenho como testar agora, mas vou testar...<br></blockquote></div><br>Olá,
<br><br> Fiz alguns aperfeiçoamentos e criei um contexto contento uma forma de pegar canais aleatórios. Ela está pronta para 3 canais Zap, mas para 3 canais SIP muda-se pouquíssimas coisas, basicamente trocar Zap por SIP com as opções dos canais. A partir dele é possível expandir a idéia para se usar com vários outros canais.
<br><br> Segue o contexto:<br><br>[aleatorio]<br>;------------------ ALEATORIO -----------------------------------------<br>; Rotina para obter: 33,0% de chance de discar pelo primeiro canal<br>; 33,5% de chance de discar pelo segundo canal
<br>; 33,5% de chance de discar pelo terceiro canal<br>; Caso o canal escolhido esteja ocupado,<br> fazer com que se tenha 50% de escolhar um dos outros dois.<br>; Se este segundo canal escolhido estiver ocupado, utilizar o terceriro.
<br>; Se todos estiverem ocupados, termina com "Hangup".<br><br>;------------------ INICIO ---------------------------------<br>; 67% de chance de ir para a prioridade "outros"<br>exten=>_X.,1,Random(67:outros)
<br><br>; 33% de chance de discar via canal 1<br>exten=>_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se o canal 1 estiver ocupado, passa para a prioridade abaixo<br>; 50% de chance de ir para a prioridade "primeiro_ocupado"
<br>exten=>_X.,n,Random(50:primeiro_ocupado)<br><br>; 50% de chance de discar via canal 2<br>exten=>_X.,n,Dial(Zap/2/${EXTEN})<br><br>; Se o canal 2 estiver ocupado, passa a discar via canal 3<br>exten=>_X.,n,Dial(Zap/3/${EXTEN})
<br><br>; Se todos estiverem ocupados, sai com "Hangup"<br>exten=>_X.,n,Hangup<br><br>; 50% de chance de discar via canal 3<br>exten=>_X.,n(primeiro_ocupado),Dial(Zap/3/${EXTEN})<br><br>; Se o canal 3 estiver ocupado, passa a discar via canal 2
<br>exten=>_X.,n,Dial(Zap/2/${EXTEN})<br><br>; Se todos estiverem ocupados, sai com "Hangup"<br>exten=>_X.,n,Hangup<br><br><br>;------------------ OUTROS ---------------------------------<br>; 67% de chance de vir para cá ("outros")
<br>; 50% de chance de ir para a prioriodade "ultimo"<br>; Corresponde a 33,5% (50% de 67%) do plano total<br>exten=>_X.,n(outros),Random(50:ultimo)<br><br>; 33,5% de chance do plano total de discar via canal 2
<br>exten=>_X.,n,Dial(Zap/2/${EXTEN})<br><br>; Se o canal 2 estiver ocupado, passa para a prioridade abaixo<br>; 50% de chance de ir para a prioridade "outros_ocupado"<br>exten=>_X.,n,Random(50:outros_ocupado)
<br><br>; 50% de chance de discar via canal 1<br>exten=>_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se o canal 1 estiver ocupado, passa a discar via canal 3<br>exten=>_X.,n,Dial(Zap/3/${EXTEN})<br><br>; Se todos estiverem ocupados, sai com "Hangup"
<br>exten=>_X.,n,Hangup<br><br>; 50% de chance de discar via canal 3<br>exten=>_X.,n(outros_ocupado),Dial(Zap/3/${EXTEN})<br><br>; Se o canal 3 estiver ocupado, passa a discar via canal 3<br>exten=>_X.,n,Dial(Zap/1/${EXTEN})
<br><br>; Se todos estiverem ocupados, sai com "Hangup"<br>exten=>_X.,n,Hangup<br><br>;------------------ ULTIMO ---------------------------------<br>; 33,5% de chance do plano total de vir aqui ("ultimo")
<br>; 33,5% de chance de discar via canal 3<br>exten=>_X.,n(ultimo),Dial(Zap/3/${EXTEN})<br><br>; Se o canal 3 estiver ocupado, passa para a prioridade abaixo<br>; 50% de chance de ir para a prioridade "ultimo_ocupado"
<br>exten=>_X.,n,Random(50:ultimo_ocupado)<br><br>; 50% de chance de discar via canal 1<br>exten=>_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se o canal 1 estiver ocupado, passa a discar via canal 2<br>exten=>_X.,n,Dial(Zap/2/${EXTEN})
<br><br>; Se todos estiverem ocupados, sai com "Hangup"<br>exten=>_X.,n,Hangup<br><br>; 50% de chance de discar via canal 2<br>exten=>_X.,n(ultimo_ocupado),Dial(Zap/2/${EXTEN})<br><br>; Se o canal 2 estiver ocupado, passa a discar via canal 1
<br>exten=>_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se todos estiverem ocupados, sai com "Hangup"<br>exten=>_X.,n,Hangup<br><br>;------------------ FINAL ----------------------------------<br><br><br><br><br clear="all">
<br>-- <br>Atenciosamente<br><br><br> Claudio Polegato Junior<br><br> Engenheiro Autônomo - Ribeirão Preto e Região<br> Mestre em Física Aplicada à Medicina e Biologia - USP<br> Engenheiro Computacional - USP
<br> Engenheiro Eletrônico - USP<br><br>Um peregrino de problemas; Um pergaminho de soluções!