Skip to main content

Olá!



Desde que passamos a utilizar a estrutura de roteador em nossos bots vimos a necessidade de poder transferir os clientes entre os sub-bots do roteador. Infelizmente, isso ainda não é possível nativamente.



Mas encontrei uma solução que acredito que pode ajudar mais pessoas 😉



A solução consiste em utilizar tags de encerramento para indicar quais tickets devem ser transferidos para qual lugar. Segue:



1. O primeiro passo é criar as tags. No bot de origem, criei tags para cada fluxo que eu desejo direcionar o contato no bot destino:





2. No bloco seguinte ao bloco de atendimento humano, criei condições de saída que verificam a tag atribuída (através da variável ´input.content@tags´) e direcionam para o bloco responsável por encerrar o ticket no bot origem e direcionar o contato ao bot destino:





3. Nos blocos responsáveis por transferir o contato, criei as seguintes ações, cada com uma responsabilidade:





3.1. Get ticket data: Requisição HTTP para obter os dados do ticket



POST: https://http.msging.net/commands


Content-Type: application/json


Authentication:

{



"id": "{{random.guid}}",

"to": "[email protected]",

"method": "get",

"uri": "/tickets?$filter=(status%20eq%20'open'%20or%20status%20eq%20'waiting')%20and%20(CustomerIdentity%20eq%20'{{tunnel.identity}}')&$skip=0&$take=100"



}



Exemplo da ação:




3.2. Obter o Ticket ID: Essa execução de script formata a resposta da requisição acima, e retorna somente o ID do ticket



Script:





try {



let ticket = JSON.parse(body);

let ID = ticket.resource.itemse0].id;

return ID;



} catch (error) {



return 'script error';



}



}



3.3. Fechar o ticket: Essa ação fecha o ticket no bot atual através de uma requisição HTTP



{



"id": "{{$guid}}",

"to": "[email protected]",

"method": "set",

"uri": "/tickets/change-status",

"type": "application/vnd.iris.ticket+json",

"resource": {

"id": "{{respTicketID}}", //Essa variável deve ser o ID do ticket obtido através do script anterior.

"status": "Closed"}



}



3.4 Direcionar ao bot desejado: Utilizando a ação Direcionar a Serviço, determino o nome do bot destino, e uma mensagem a ser enviada ao bot.




4.0 No bot destino, conseguimos capturar a mensagem enviada acima e direcionar o contato no fluxo que desejamos. No meu caso, direcionei a um bloco do meu fluxo para o cliente responder algumas perguntas antes de ir para o atendimento humano.



5.0 Agora, basta os atendentes utilizarem as tags desejadas para direcionar o cliente aos fluxos construídos:





Pronto, com algumas etapas se torna possível transferir tickets entre bots do mesmo roteador 😃



Espero que isso ajude alguém e fico a disposição em caso de dúvidas.

Bom dia!

Estou tentando implementar essa transferência e me surgiram algumas dúvidas!

 

4.0 No bot destino, conseguimos capturar a mensagem enviada acima e direcionar o contato no fluxo que desejamos. No meu caso, direcionei a um bloco do meu fluxo para o cliente responder algumas perguntas antes de ir para o atendimento humano.

 

 

  1. Como você fez essa captura no bot destino?
    Seria uma condição de saída no bloco início ou por estarem dentro de chaves seria um “comando”?
     
  2. Se for um comando, qual documentação que envolve esses comandos, suas aplicações e explicações?
     
  3. Adicionando, os scripts que efetuam a captura do ticket e encerramento, por qual motivo isso se faz necessário uma vez que o atendente encerra o ticket com a tag de transferencia?

Comente