A nova aplicação para Agentes

Uma das mudanças mais dramaticas do Asterisk 1.6 é a descontinuação do comando AgentCallBackLogin, este comando serve para logar e deslogar agentes em uma fila permitindo o agente colocar o telefone no gancho sem deslogar (como ocorre com o AgentLogin) e assim receber chamadas vindas de uma fila sem ter que ser um agente exclusivo para receber chamadas.

No Asterisk 1.6 este comando desapareceu com0 um passe de mágica sem ao menos chegar ao ponto de ‘deprecated‘. Isso aconteceu supostamente  porque se podia fazer a mesma coisa com um pouco de programação no Dialplan.

call-centerKevin P. Flemming comenta sobre o assunto na lista:
“We have already been discussing the idea of just turning chan_agent into only ‘always connected’ mode, and removing all support for callback mode. It seems on the surface that everything that chan_agent does in ‘callback’ mode can be accomplished using dialplan logic and dynamic queue members (which did not exist when chan_agent was created).”

Ao meu ver essa mudança não agradou muito uma vez que se escolher o Asterisk para uma solução de call center essa aplicação é fundamental.

Se você utiliza o AgentCallBackLogin no Asterisk 1.4 e deseja migrar para a versão 1.6 deve ler esse documento que explica como fazer a adaptação:
http://svn.digium.com/svn/asterisk/branches/1.4/doc/queues-with-callback-members.txt

Após ter lido a documentação temos que definir como nosso call center vai funcionar.

Existem duas maneiras de um agente trabalhar no Asterisk:

- Agente Permanente: O agente se loga em uma fila e fica com o canal aberto ouvindo uma musica em quanto espera as chamadas. Quando o agente coloca o telefone no gancho é desconectado automaticamente.
Este modo é interessante quando temos um call center dedicado (ex:. uma empresa de monitoramento de carros via satelite) onde os atendentes são exclusivos para atender as chamadas de emergencia ou se temos um alto volume de chamadas. Para este tipo de call center utilizamos o AgentLogin.

- Agente Ocasional: O agente se loga e coloca o telefone no gancho, quando uma chamada entra na fila o telefone do agente começa a ringar, após terminar a chamada o agente pode continuar trabalhando em outras frentes. Para este tipo de call center utilizamos o  AgentCallBackLogin.

Colocando em prática

Agora vamos criar nossos agentes.
Caso optarmos por utilizar agentes ocasionais, então  devemos utilizar a aplicação AgentCallBackLogin e criar um sistema que permita definir um usuario e uma senha independente da maneira que iremos fazer: neste caso iremos utilizar as contas do voicemail.

Iremos criar um contexto [agentes-ocasionais] no arquivo ‘voicemail.conf’:

[agentes-ocasionais]
; login => Senha , Nome completo, Email

6000 => 12345,Nome Agente 6000, agente6000@dominio.com.br
6001 => 54321,Nome Agente 6001, agente6001@dominio.com.br

e assim por diante…

Agora temos 2 agentes (6000 e 6001 com suas respectivas senhas). Sempre defina a senha como numerica pois o agente deverá digita-la em seu telefone.

Criando as filas

No arquivo ‘queues.conf’. Criaremos uma fila simples:

[emergencia]
musicclass=default
announce=fila-emergencia
strategy=linear
timeout=10
retry=5
wrapuptime=10
maxlen=0
; Membros da fila
member=>Local/6000@agentes-ocasionais
member=>Local/6001@agentes-ocasionais

As chamadas irão tocar por 10 segundos em cada agente por 5 vezes.

Programando o DialPlan

Criando o sistema de login e logoff dos agentes para que possam receber chamadas.

Para o agente se logar na fila emergencia ele irá digitar em seu terminal o código *99 e para deslogar *00

No ‘extensions.conf’ escrevemos:

[saintes]

; Aque terá o restante do dilaplan como: chamadas local, ddd, ddi e etc

;————————AGENTE LOGIN———————–

exten=> *99,1,NoOp(** Facilidade Agente Login **)
exten=> *99,n,VMAuthenticate(@agentes-ocasionais|)
exten=> *99,n,AddQueueMember(emergencia|Local/${AUTH_MAILBOX}@agentes-ocasionais/n)
exten=> *99,n,Read(AGENTE|agent-newlocation)
exten=> *99,n,Set(DB(agentes/${AUTH_MAILBOX})=${AGENTE})
exten=> *99,n,Playback(agent-loginok)
exten=> *99,n,Playback(goodbye)
exten=> *99,n,Hangup()

;————————AGENTE LOGOFF———————

exten=> *00,1,NoOp(** Facilidade Agente Logoff  **)
exten=> *00,n,VMAuthenticate(@agentes-ocasionais|)
exten=> *00,n,RemoveQueueMember(emergencia|Local/${AUTH_MAILBOX}@agentes-ocasionais/n)
exten=> *00,n,Set(DEL=${DB_DELETE(agentes/${AUTH_MAILBOX})})
exten=> *00,n,Playback(agent-loggedoff)
exten=> *00,n,Playback(goodbye)
exten=> *00,n,Hangup()

Contexto dos agentes

[agentes]
exten => 6000,1,Set(AGENTE=${DB(agentes/${EXTEN})})
exten => 6000,n,Dial(SIP/${AGENTE})

exten => 6001,1,Set(AGENTE=${DB(agentes/${EXTEN})})
exten => 6001,n,Dial(SIP/${AGENTE})

Agora temos um sistema de login e logoff de agentes em filas.


Related Posts with Thumbnails

Deixe um comentario