Na última quinta-feira, apresentei minha palestra “Using Asterisk and XMPP to provide greater tools to your customers and your users” (Usando Asterisk e XMPP para prover melhores ferramentas para seus clientes e usuários) na AstriCon 2016.
Foi uma ótima experiência, e, como prometido durante a apresentação, este post contém todos os recursos (planos de discagem e links) das minhas demonstrações.
Primeiro, eu quero compartilhar o link do Slideshare, onde publiquei os slides da apresentação. Baixem e usem à vontade (somente mantenham os créditos, por favor 🙂 ).
Bem, vou iniciar então tratando da identificação antecipada de chamada.
O primeiro exemplo demonstrado foi uma identificação antecipada de chamada básica que pode ser realizada desde o Asterisk versão 1.4:
exten => 1000,1,NoOp(Earlier callerd identification - send message to JID) ; You can use an AGI to obtain the caller id name (from a database, for example) ; and then set it in the CALLERID(name) variable same => n,agi(getCallerIdName.agi) ; The next AGI gets the JID (jabber identification) associated with the extension ; and then set it in the XMPP_DST variable same => n,agi(getJID.agi) same => n,JabberSend(${XMPP_RESOURCE},${XMPP_DST},Call from ${CALLERID(all)}) same => n,Answer() same => n,Wait(1) same => n,Playback(thanks_for_call) same => n,Dial(SIP/1000,10) ; You need to adapt the Dial to your own scenario same => n,Hangup
Como pode-se observar, são utilizadas duas variáveis neste exemplo: ${XMPP_RESOURCE} é o nome do recurso associado com seu Asterisk no arquivo xmpp.conf. Já ${XMPP_DST} é o JID (jabber identification) do usuário XMPP que deve estar associado com o ramal SIP. Você pode fazer essa associação adicionando uma coluna na tabela SIP do seu DB.
Os AGI não serão publicados aqui pois são específicos para cada cenário.
O próximo exemplo é outra identificação antecipada de chamada mas agora os dados são enviados para uma sala de conferência (MUC) e isso requer Asterisk versão 1.8 ou superior:
exten => 2000,1,NoOp(Earlier callerd identification - send message to MUC) ; You can use AGI to obtain the caller id name (from a database, for example) ; and then set it in the CALLERID(name) variable same => n,agi(getCallerIdName.agi) same => n,JabberJoin(${XMPP_RESOURCE},${XMPP_CHATROOM},Asterisk) same => n,JabberSendGroup(${XMPP_RESOURCE},${XMPP_CHATROOM},Call from ${CALLERID(all)},Asterisk) same => n,Answer() same => n,Wait(1) same => n,Playback(thanks_for_call) same => n,Dial(SIP/2000,10) ; You need to adapt the Dial to your own scenario same => n,Hangup
Trata-se de um plano de discagem similar, mas não é necessário obter o JID do usuário, pois a mensagem é enviada para uma sala de conferência. Mas, é preciso identificar o JID da sala de conferência, que está representada no plano de discagem pela variável ${XMPP_CHATROOM}. Será algo como minhasala@conference.meudominio.com.br.
Ok, agora algo mais avançado. Faremos uso de uma URA e enviaremos a mensagem somente para os agentes logados na fila.
exten => 3000,1,NoOp(IVR PoC Support - first example) same => n,Set(IVR=example1) same => n,goto(myivr,ivr,1)
Claro que não se trata somente dessas 3 linhas e, agora, é utilizado AEL para controlar a URA. Para tornar o post mais legível, aqui está o link do arquivo AEL.
Não esqueça de adicionar a seguinte linha ao arquivo extensions.ael:
#include "/etc/asterisk/extensions_ivr_astricon2016.ael"
Novamente os AGIs não serão publicados pois são muito específicos. Mas, de fato, tratam-se de simples consultas ao banco de dados.
O último plano de discagem é basicamente o usado anteriormente, mas com outro valor na variável IVR, que faz com que no AEL um novo AGI seja chamado para obter os 5 últimos tíquetes da fila de seu cliente no Request Tracker.
exten => 4000,1,NoOp(IVR PoC Support - second example using RT) same => n,Set(IVR=example2) same => n,goto(myivr,ivr,1)
Esses foram os exemplos que mostraram como usar a identificação antecipada de chamada para prover seus agentes e usuários com informações valiosas e algum tempo precioso. Usando essa abordagem, seus agentes podem se preparar para falar com os clientes, e, consequentemente, estes terão uma experiência melhor e mais eficiente.
PoCs
As PoCs apresentadas na palestra tem páginas específicas:
Se você tiver quaisquer dúvidas ou quiser discutir novas ideias, você pode me contatar diretamente (informações estão nos slides da apresentação).
Até!