Asterisk e XMPP AstriCon

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é!

English version

AstriCon 2016 – Utilizando Asterisk e XMPP
Tags:             
Social Media Widget Powered by Acurax Web Development Company
%d blogueiros gostam disto:
Visit Us On FacebookVisit Us On TwitterCheck Our FeedVisit Us On Linkedin