[AsteriskBrasil] RES: AMI - Queue Status

Mike Tesliuk mike em tesliuk.com
Quarta Junho 6 17:03:23 BRT 2012


outra coisa, a fila possui posições, você pode listar as posições das 
pessoas que estão na fila na tela (seguido dos numeros) e também pode se 
for o caso , no asterisk 1.6 e 1.4 ele permite você especificar uma AGI 
para a queue, você pode gerar algum parametro la, mas não usei isso, em 
todo caso.

  * In Asterisk 1.4, the optional AGI parameter will setup an AGI script
    to be executed on the calling party's channel once they are
    connected to a queue member.


No asterisk 1.4 , a opção AGI irá executar um script AGI para o usuário 
uma vez que ele esteja conectado a um membro da fila, ou seja, na hora 
que alguém atender, ele roda o agi, este agi pode ser utilizado para 
alimentar alguma infromação na interface.



Em 06-06-2012 16:51, Ribeiro escreveu:
>
> Pessoal
>
> Ninguém? Nada?
>
> Nem link nem nada? Caminho? Já procurei e não sei o que estes valores 
> dizem.
>
> Um abraço
>
> Ribeiro
>
> *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.. J
>
> Mas 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 fila
>
> Max='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ço
>
> Ribeiro
>
>
>
> _______________________________________________
> 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/14b25d37/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil