2006/10/13, Claudio Polegato Junior &lt;<a href="mailto:cpolegatojr.asterisk@gmail.com">cpolegatojr.asterisk@gmail.com</a>&gt;:<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>&gt; Claudio, obrigado pelo retorno, mas estou precisando fazer em canais<br>&gt; SIP, tipo, tenho 3 contas SIP, a chamada sainte pegar as contas<br>&gt; aleatórias, nunca sair pela mesma conta sequencialmente. Obrigado
<br>Interessante...<br><br>&nbsp;&nbsp; E se usar probabilidade com o comando Random, exemplo:<br><br>exten =&gt; _X.,n,Random(67:outros) ; 67% de chance de pular para &quot;outros&quot; e 33% de passar<br>exten =&gt; _X.,n,Dial(SIP/provedor1)
<br>exten =&gt; _X.,n,Goto(terminado)<br>exten =&gt; _X.,n(outros),Random(50:ultimo) ; 50% (33,5% do total) de chance de pular para &quot;ultimo&quot; e 50% de passar<br>exten =&gt; _X.,n,Dial(SIP/provedor2)<br>exten =&gt; _X.,n,Goto(terminado)
<br>exten =&gt; _X.,n(ultimo),Dial(SIP/provedor3)<br>exten =&gt; _X.,n,Goto(terminado)<br>...<br>exten =&gt; _X.,n(terminado),...<br>...<br><br>Não tenho como testar agora, mas vou testar...<br></blockquote></div><br>Olá,
<br><br>&nbsp; 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>&nbsp; Segue o contexto:<br><br>[aleatorio]<br>;------------------&nbsp; ALEATORIO -----------------------------------------<br>; Rotina para obter: 33,0% de chance de discar pelo primeiro canal<br>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33,5% de chance de discar pelo segundo&nbsp; canal
<br>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33,5% de chance de discar pelo terceiro canal<br>; Caso o canal escolhido esteja ocupado,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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 &quot;Hangup&quot;.<br><br>;------------------&nbsp; INICIO&nbsp; ---------------------------------<br>; 67% de chance de ir para a prioridade &quot;outros&quot;<br>exten=&gt;_X.,1,Random(67:outros)
<br><br>; 33% de chance de discar via canal 1<br>exten=&gt;_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 &quot;primeiro_ocupado&quot;
<br>exten=&gt;_X.,n,Random(50:primeiro_ocupado)<br><br>; 50% de chance de discar via canal 2<br>exten=&gt;_X.,n,Dial(Zap/2/${EXTEN})<br><br>; Se o canal 2 estiver ocupado, passa a discar via canal 3<br>exten=&gt;_X.,n,Dial(Zap/3/${EXTEN})
<br><br>; Se todos estiverem ocupados, sai com &quot;Hangup&quot;<br>exten=&gt;_X.,n,Hangup<br><br>; 50% de chance de discar via canal 3<br>exten=&gt;_X.,n(primeiro_ocupado),Dial(Zap/3/${EXTEN})<br><br>; Se o canal 3 estiver ocupado, passa a discar via canal 2
<br>exten=&gt;_X.,n,Dial(Zap/2/${EXTEN})<br><br>; Se todos estiverem ocupados, sai com &quot;Hangup&quot;<br>exten=&gt;_X.,n,Hangup<br><br><br>;------------------&nbsp; OUTROS&nbsp; ---------------------------------<br>; 67% de chance de vir para cá (&quot;outros&quot;)
<br>; 50% de chance de ir para a prioriodade &quot;ultimo&quot;<br>; Corresponde a 33,5% (50% de 67%) do plano total<br>exten=&gt;_X.,n(outros),Random(50:ultimo)<br><br>; 33,5% de chance do plano total de discar via canal 2
<br>exten=&gt;_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 &quot;outros_ocupado&quot;<br>exten=&gt;_X.,n,Random(50:outros_ocupado)
<br><br>; 50% de chance de discar via canal 1<br>exten=&gt;_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se o canal 1 estiver ocupado, passa a discar via canal 3<br>exten=&gt;_X.,n,Dial(Zap/3/${EXTEN})<br><br>; Se todos estiverem ocupados, sai com &quot;Hangup&quot;
<br>exten=&gt;_X.,n,Hangup<br><br>; 50% de chance de discar via canal 3<br>exten=&gt;_X.,n(outros_ocupado),Dial(Zap/3/${EXTEN})<br><br>; Se o canal 3 estiver ocupado, passa a discar via canal 3<br>exten=&gt;_X.,n,Dial(Zap/1/${EXTEN})
<br><br>; Se todos estiverem ocupados, sai com &quot;Hangup&quot;<br>exten=&gt;_X.,n,Hangup<br><br>;------------------&nbsp; ULTIMO&nbsp; ---------------------------------<br>; 33,5% de chance do plano total de vir aqui (&quot;ultimo&quot;)
<br>; 33,5% de chance de discar via canal 3<br>exten=&gt;_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 &quot;ultimo_ocupado&quot;
<br>exten=&gt;_X.,n,Random(50:ultimo_ocupado)<br><br>; 50% de chance de discar via canal 1<br>exten=&gt;_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se o canal 1 estiver ocupado, passa a discar via canal 2<br>exten=&gt;_X.,n,Dial(Zap/2/${EXTEN})
<br><br>; Se todos estiverem ocupados, sai com &quot;Hangup&quot;<br>exten=&gt;_X.,n,Hangup<br><br>; 50% de chance de discar via canal 2<br>exten=&gt;_X.,n(ultimo_ocupado),Dial(Zap/2/${EXTEN})<br><br>; Se o canal 2 estiver ocupado, passa a discar via canal 1
<br>exten=&gt;_X.,n,Dial(Zap/1/${EXTEN})<br><br>; Se todos estiverem ocupados, sai com &quot;Hangup&quot;<br>exten=&gt;_X.,n,Hangup<br><br>;------------------&nbsp; FINAL&nbsp; ----------------------------------<br><br><br><br><br clear="all">
<br>-- <br>Atenciosamente<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Claudio Polegato Junior<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engenheiro Autônomo - Ribeirão Preto e Região<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mestre em Física Aplicada à Medicina e Biologia - USP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engenheiro Computacional - USP
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engenheiro Eletrônico - USP<br><br>Um peregrino de problemas; Um pergaminho de soluções!