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 Exemplo da ação:
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"
}
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.