<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
span.EstiloDeEmail18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EstiloDeEmail19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1114517961;
        mso-list-type:hybrid;
        mso-list-template-ids:1513883480 68550657 68550659 68550661 68550657 68550659 68550661 68550657 68550659 68550661;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=PT-BR link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Pessoal<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Ninguém? Nada?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Nem link nem nada? Caminho? Já procurei e não sei o que estes valores dizem.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Um abraço<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Ribeiro<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:PT-BR'>De:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:PT-BR'> asteriskbrasil-bounces@listas.asteriskbrasil.org [mailto:asteriskbrasil-bounces@listas.asteriskbrasil.org] <b>Em nome de </b>Ribeiro<br><b>Enviada em:</b> quarta-feira, 6 de junho de 2012 00:22<br><b>Para:</b> asteriskbrasil@listas.asteriskbrasil.org<br><b>Assunto:</b> [AsteriskBrasil] AMI - Queue Status<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Pessoal<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Acabei a primeira parte de minha integração Asterisk/Aplicação.<o:p></o:p></p><p class=MsoNormal>Perguntei a um tempo atrás o caminho e já cheguei no primeiro hotel.. <span style='font-family:Wingdings'>J</span><o:p></o:p></p><p class=MsoNormal>Mas vamos lá... Documentação extremamente superficial.<o:p></o:p></p><p class=MsoNormal>Funcionando está, mas não consegui ainda entender algumas informações que eu estou recebendo.<o:p></o:p></p><p class=MsoNormal>Aconselho aos que usam fila, pois tem alguns dados bem interessantes, mesmo que não façam uso de AMI ou sejam desenvolvedores.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Estou utilizando AJAM (AMI Web).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Solicitação de status da fila:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'><response type='object' id='unknown'><generic response='Success' message='Queue status will follow' /></response><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US>Beleza! Sucesso na carga. </span>Recebi 3 eventos diferentes: QueueParams (Dados da fila), QueueMember (Membros da fila) e QueueEntry (Ligações na fila e ainda não atendidas).<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'><generic event='QueueParams' queue='50' max='0' strategy='ringall' calls='1' holdtime='11' talktime='122' completed='23' abandoned='6' servicelevel='60' servicelevelperf='95.7' weight='0' /><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'>Estes são os dados da fila:<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Queue=’50’ – Numero da fila – O número que disco para entrar na fila<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Max=’0’ – Quantidade máxima de pessoas que podem ficar na fila – Está ilimitada.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Strategy=’ringall’ – Estratégia... Sem problema... Bem documentado isso.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Calls=’1’ – Ligações na fila e ainda não atendidas. Me parece perfeito. Testado e não encontrei problemas.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>HoldTime=’11’ – Aqui começa meu problema... Pelo que entendi são 11 segundos “em média” que uma pessoa espera. Fiz o diversos testes com diversos tempos altos e o valor não altera. Esta média é de quantas ligações? Todas as feitas até hoje? Não é, pois o valor já mudou sem muita lógica... Me iluminem aqui...<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>TalkTime=’122’ – Este é irmão do HoldTime pelo que eu entendi. É a média não explicada do tempo de ligação, ou seja, 00:02:02 de média do telefone falando. Também preciso de ajuda.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Completed=’23’ – Outro... Este não tem nada a ver com os dois de cima. É a quantidade de ligações que foram atendidas. Mas quando que iniciou? Alguém para me ajudar aqui?<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Abandoned=’6’ – Abandonadas pelo cliente antes de serem atendidas. Tem tudo a ver com o completed. Mas a mesma pergunta. Abandonadas na última hora? No último dia? Ajuda aqui também.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>ServiceLevel=’60’ – Haaaa.... Este é o cara? Não. Eu achava que era ele, mas não é. No Elastix está escrito assim: “Used for service level statistics (calls answered within service level time frame)”. Como está 60 segundos, não vou nem tentar explicar os números de cima. Pensando e pesquisando, acho que entendi.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>ServiceLevelPerf=’95.7’ – Este número e o nome das tags me levaram a entender uma coisa legal... Este não é o TMA e sim o percentual de ligações atendidas em 60 segundos. É isso mesmo?<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Weight=’0’ – Pelo que entendi é o peso desta fila em relação a outros “canais”, ou seja, quanto maior o número, sua prioridade será maior para atendimento. Alguém poderia me explicar o que seria este “canal”? Não entendo como duas filas se cruzariam.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'><response type='object' id='unknown'><generic event='QueueMember' queue='50' name='Fixo' location='Local/10@from-queue/n' membership='dynamic' penalty='0' callstaken='11' lastcall='1338677447' status='2' paused='0' /></response><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'>Estes são os dados dos membros da fila:<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Queue=’50’ – Mesmo do de cima. Usado para vincular um ao outro.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Name=’Fixo’ – Nome do ramal (Extensão) informado na criação do mesmo.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Location=’Local/10@from-queue/n’ – Nome interno do ramal. Coisa do Arterisk. Usei ele depois para duas coisas, sendo uma na gambiarra e outra correta. Digo mais abaixo e se alguém quiser explicar melhor, seja com link, agradeço.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Membership=’dynamic’ – Se o ramal é estático ou dinâmico. Um dinâmico entra na fila com ‘<Numero da fila>*’, que neste caso seria ‘50*’ e sai com ‘50**’. Pelo que eu entendi um estático faz parte da fila e pronto e um dinâmico pode entrar e sair. Porém a mensagem diz que meu ramal estático saiu da fila com ‘50**’ e na verdade não saiu. Uso Elastix e entendo que é falta de carinho com o código de quem o fez.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Penalty=’0’ – O nome é estranho, mas eu entendi que quanto maior, menor a prioridade de tocar. Por exemplo um estagiário. Se tem alguém com Penalty menor, a ligação é enviada para ele antes. Só quando não tem ninguém menor disponível é que o estagiário atende. Entendo que dependa da estratégia, mas não sei qual. Seria bom saber.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>CallsTaken=’11’ – Ligações atendidas por este membro. Entendo que ele atendeu 11 ligações. Porém a soma dos membros não é igual ao completed da parte de cima. Muito estranho isso... Alguém poderia me explicar?<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>LastCall=’1338677447’ – No primeiro momento me pareceu ser o número do telefone de quem fez a última ligação, mas não é. Me parece ser o “UniqueID”, sem o “.” e os 3 números no final. Não me pareceu útil mesmo e não tenho certeza se é isso mesmo. Alguém me confirma?<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Status=’2’ – Diz se o ramal está ocupado, tocando, em uso, etc. Peguei a tabela completa no código fonte do Asterisk. Sem problemas.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'>Paused=’0’ – Se o ramal está em pausa. Em pausa, ele não faz parte da fila. Seria igual a um membro dinâmico pressionar ‘50**’ e sair, mas neste caso ele permanece na fila e você consegue visualizar.<o:p></o:p></p><p class=MsoNormal style='text-autospace:none'><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:green'><response type='object' id='unknown'><generic event='QueueEntry' queue='50' position='1' channel='SIP/10-000000a6' uniqueid='1338791132.268' calleridnum='10' calleridname='Pedido:Fixo' connectedlinenum='unknown' connectedlinename='unknown' wait='10' /></response><o:p></o:p></span></p><p class=MsoNormal>Estes estão na fila ainda sem atendimento:<o:p></o:p></p><p class=MsoNormal>Queue=’50’ – Mesma coisa. Eles estão na fila ‘50’ neste caso. O mesmo dos de cima.<o:p></o:p></p><p class=MsoNormal>Position=’1’ – Posição na fila. Perfeito e entendido. Este é o próximo a ser atendido. Atendido este, o ‘2’ vira ‘1’ e os demais descem.<o:p></o:p></p><p class=MsoNormal>Channel=’SIP/10-000000a6’ – O canal que a ligação está passando para chegar a fila. Coisas de Asterisk. Entendo que seja este canal que está relacionado ao Weight.<o:p></o:p></p><p class=MsoNormal>UniqueID='1338791132.268' – Identificação única deste canal. Eu conseguiria achar esta ligação entre outras por este número. É isso mesmo?<o:p></o:p></p><p class=MsoNormal>CallerIDNum=’10’ – Este é o cara que eu procurava... O número de telefone do ligador.<o:p></o:p></p><p class=MsoNormal>CallerIDName=’Fixo’ – Este é o nome do ligador. Nos EUA e outros países, a operadora envia o numero do telefone e o nome da pessoa. Aqui no Brasil, o sistema inovador e proprietário envia somente o número do telefone. De qualquer forma, tem como colocar um nome aqui por AGI ou outras formas até mais fáceis. No Elastix (FreePBX) chama-se “CallerID Lookup Sources”.<o:p></o:p></p><p class=MsoNormal>ConnectedLineNum=’unknown’ – Ramal de quem atendeu.<o:p></o:p></p><p class=MsoNormal>ConnectedLineName=’unknown’ – Nome do ramal de quem atendeu. O mesmo que o Name do members acima.<o:p></o:p></p><p class=MsoNormal>Wait=’10’ – Tempo de espera na fila: 10 segundos.<o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:green'><o:p> </o:p></span></p><p class=MsoNormal>Isso foi o que eu descobri e não descobri. Ajuda outros o que eu descobri e me ajudem a entender o que eu não entendi. Detalhado, vou editar e colocar no Wiki, mas preciso da ajuda de vocês.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Problemas: Não estou usando evento. Os eventos são disparados quando alguma coisa acontece e se nada acontecer, não recebo nada. Isso eu entendi.<o:p></o:p></p><p class=MsoNormal>Mas não estou usando por uns motivos técnicos. Meu servidor com a aplicação está “nas nuvens” e na DMZ. Meu servidor Asterisk está protegido com um Firewall e não é acessível da “rua”. Desta forma, estou com um serviço interno rodando, pegando os dados do Arterisk e replicando para o outro servidor “nas nuvens” por um protocolo proprietário e mesmo invadido, não ajuda muito a ninguém. Não se tem controle de nada.<o:p></o:p></p><p class=MsoNormal>E este mesmo programa já é usado para trafegar dados e se fosse usar eventos, teria que duplicar o canal de comunicação ou fazer uma coisa bem mais complexa. Segui sem o evento.<o:p></o:p></p><p class=MsoNormal>Vou explicar o que eu já tenho: Pausar e Despausar membros. Funciona perfeitamente. Tenho todos os dados nesta resposta. Preciso do Location citado aqui, que lá chama-se Interface (Isso é horrível, pois o cada hora o nome muda), o Queue e se é para Pausar ou Despausar. Perfeito!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Mas como nem tudo na vida são flores... Eu preciso do CallerID de quem liga DEPOIS que o membro da fila atendeu. Isso não rola. A informação fica por 1 segundo e depois some... É preenchido o ConnectedLineNum e o ConnectedLineName, se mantém por 1 segundo e depois some e eu preciso disso. O que eu fiz?<o:p></o:p></p><p class=MsoNormal>Recupei pelo Status, que retona todas as ligações em andamento. Mas não tem como vincular uma coisa na outra, ou seja, o ramal do membro com a ligação. Eu teria que carregar outros dados, como os ramais para poder vincular e não estava a fim. Não sei onde. Seria procurar uma agulha em um palheiro. Então fiz o seguinte:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]>Retirei o “/n” do final do Location e armazenei em uma variável.<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]>Comparei se o começo do Channel do Status é igual a variável que eu criei.<o:p></o:p></p><p class=MsoListParagraph><o:p> </o:p></p><p class=MsoListParagraph>Isso me retorna duas linhas. Aparentemente uma do telefone do ligador para a fila e outro da fila para o ramal. Pelo menos foi o que me pareceu.<o:p></o:p></p><p class=MsoListParagraph><o:p> </o:p></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]>Então eu fico com a linha que tem ‘ChannelState=6’ e ‘Extension=s’. Não sei o que estes dois significam, mas funcionou.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Se alguém tiver uma forma melhor de fazer isso ou mais correta, me informe. Seria de boa ajuda.<o:p></o:p></p><p class=MsoNormal>Conto com a ajuda de todos.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Um abraço<o:p></o:p></p><p class=MsoNormal>Ribeiro<o:p></o:p></p></div></body></html>