[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