extension=s é o extension que ele esta no contexto.
se ele esta dentro do queue pode ser o como o queue trata ele
com relação ao channelstatus de uma olhada aqui:
http://www.asterisk.org/doxygen/trunk/channelstate_8h.html#03585bc87e5bbd0f4d11bc789734c660
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-boun...@listas.asteriskbrasil.org
[mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] *Em nome de
*Ribeiro
*Enviada em:* quarta-feira, 6 de junho de 2012 00:22
*Para:* asteriskbrasil@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@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@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: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para
asteriskbrasil-unsubscr...@listas.asteriskbrasil.org
_______________________________________________
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: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para
asteriskbrasil-unsubscr...@listas.asteriskbrasil.org