[AsteriskBrasil] RES: AMI - Queue Status
Hudson Cardoso
hudsoncardoso em hotmail.com
Quarta Junho 6 16:55:28 BRT 2012
Resume teu problema, quem sabe eu entenda...por que isso que ta ai embaixa ta meio confuso pra mim...
Hudson
048 8413 7000048 3039 8899 opcao 2www.easyteltelecom.com.br
Para quem nao cre, nenhuma prova converte,Para aquele que cre, nenhuma prova precisa.
From: asterisk em aquidolado.com.br
To: asteriskbrasil em listas.asteriskbrasil.org
Date: Wed, 6 Jun 2012 16:51:18 -0300
Subject: [AsteriskBrasil] RES: AMI - Queue Status
Pessoal Ninguém? Nada?Nem link nem nada? Caminho? Já procurei e não sei o que estes valores dizem. Um abraçoRibeiro De: asteriskbrasil-bounces em listas.asteriskbrasil.org [mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Ribeiro
Enviada em: quarta-feira, 6 de junho de 2012 00:22
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [AsteriskBrasil] AMI - Queue Status Pessoal Acabei a primeira parte de minha integração Asterisk/Aplicação.Perguntei a um tempo atrás o caminho e já cheguei no primeiro hotel.. JMas vamos lá... Documentação extremamente superficial.Funcionando está, mas não consegui ainda entender algumas informações que eu estou recebendo.Aconselho aos que usam fila, pois tem alguns dados bem interessantes, mesmo que não façam uso de AMI ou sejam desenvolvedores. Estou utilizando AJAM (AMI Web). Solicitação de status da fila: <response type='object' id='unknown'><generic response='Success' message='Queue status will follow' /></response>Beleza! Sucesso na carga. Recebi 3 eventos diferentes: QueueParams (Dados da fila), QueueMember (Membros da fila) e QueueEntry (Ligações na fila e ainda não atendidas). <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' />Estes são os dados da fila:Queue=’50’ – Numero da fila – O número que disco para entrar na filaMax=’0’ – Quantidade máxima de pessoas que podem ficar na fila – Está ilimitada.Strategy=’ringall’ – Estratégia... Sem problema... Bem documentado isso.Calls=’1’ – Ligações na fila e ainda não atendidas. Me parece perfeito. Testado e não encontrei problemas.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...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.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?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.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.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?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. <response type='object' id='unknown'><generic event='QueueMember' queue='50' name='Fixo' location='Local/10 em from-queue/n' membership='dynamic' penalty='0' callstaken='11' lastcall='1338677447' status='2' paused='0' /></response>Estes são os dados dos membros da fila:Queue=’50’ – Mesmo do de cima. Usado para vincular um ao outro.Name=’Fixo’ – Nome do ramal (Extensão) informado na criação do mesmo.Location=’Local/10 em 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.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.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.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?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?Status=’2’ – Diz se o ramal está ocupado, tocando, em uso, etc. Peguei a tabela completa no código fonte do Asterisk. Sem problemas.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. <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>Estes estão na fila ainda sem atendimento:Queue=’50’ – Mesma coisa. Eles estão na fila ‘50’ neste caso. O mesmo dos de cima.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.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.UniqueID='1338791132.268' – Identificação única deste canal. Eu conseguiria achar esta ligação entre outras por este número. É isso mesmo?CallerIDNum=’10’ – Este é o cara que eu procurava... O número de telefone do ligador.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â€.ConnectedLineNum=’unknown’ – Ramal de quem atendeu.ConnectedLineName=’unknown’ – Nome do ramal de quem atendeu. O mesmo que o Name do members acima.Wait=’10’ – Tempo de espera na fila: 10 segundos. 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. 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.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.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.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! 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?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: · Retirei o “/n†do final do Location e armazenei em uma variável.· Comparei se o começo do Channel do Status é igual a variável que eu criei. 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. · Então eu fico com a linha que tem ‘ChannelState=6’ e ‘Extension=s’. Não sei o que estes dois significam, mas funcionou. Se alguém tiver uma forma melhor de fazer isso ou mais correta, me informe. Seria de boa ajuda.Conto com a ajuda de todos. Um abraçoRibeiro
_______________________________________________
KHOMP Inova��o: External Board Series
M�dulos de 1/2 rack e 1U para todas as interfaces e solu��es Asterisk e FreeSWITCH.
Tenha a External Series Experience na sua aplica��o. Visite�www.khomp.com
_______________________________________________
DIGIVOICE Fabricante de Placas de Voz e Channel Bank
20 anos de experi�ncia com E1(R2/ISDN), FXS, FXO e GSM
Centro Treinamento - Curso de PABX IP - Asterisk - Site www.digivoice.com.br
________
YEALINK: Telefones IP e V�deoPhones IP com o melhor custo/benef�cio do mercado.
email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20120606/445343a3/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil