Retorno de redirecionamento de subbot

Ao conversar com o chatbot que possui router definido, há um fluxo de redirecionamento de bot

No router o nome dos Serviços são:
Bot Principal = B2C
Bot Secundário = OndeEncontrar

Ao iniciar o fluxo pelo bot B2C e selecionar as opções para redirecionar para OndeEncontrar é feito corretamente pela primeira vez. Contudo no OndeEncontrar ao redirecionar de volta para B2C e em seguida seguir as opções para entrar novamente no OndeEncontrar apresenta exceção.

Video que mostra o comportamento
https://drive.google.com/file/d/1I6lKLvfLhsUzbs4tD-MmCUDcLd66svkK/view?usp=drivesdk

Não é possível debugar o router para entender o que acontece, mas o CustomerSupport Business já me esclareceu que é necessário trabalhar com o tempo de “Expiração da Sessão” em cada um dos bots separadamente.

Isso me fez pensar se seria possível executar o comando Reset User State do bot anterior usando alguma das variáveis

tunnel.destination
tunnel.identity
tunnel.originator
tunnel.owner

E obter um resultado melhor do que usar apenas o tempo de Expiração da Sessão.

Referência:

Criando um bot router com 3 subbots

Builder - Router - Redirecionamento dinâmico para o Bot anterior

1 Curtida

No fluxo, quando você volta para um bot que ja esteve, o memo não se inicia pelo bloco “Inicio” e sim pelo de “Exceção”.

Ja tive este problema, somente precisa fazer uma regra no bloco de exceção para mandar para o bloco que deseja

@Mauricio_Peres certeza quanto desse comportamento? Pois no bloco de exceção temos uma mensagem

Até conforme o vídeo que inclui, no momento que retorna a conversa para o bot principal não é apresentado o conteúdo do bloco de exceção

Fiz um teste e inclui a seguinte ação de saída no bloco de inicio do Builder com objetivo de executar o comando de Reset User State do Bot que originou o redirecionamento

to: postmaster@msging.net
method: delete
uri: /contexts/{{contact.identity}}/stateid%40{{tunnel.originator}}

Sim, no meu caso quando acontecia isso. eu so colocava as condições de saida do bloco de exceção e ja funcionava normal o chat, tanto que eu não uso o bloco de erro padrão.

Vou fazer alguns testes considerando o que já foi postado em:

Ou seja, tentar usar uma das sugestões, talvez usar uma variável no Extras do Contato

Entendi de certa maneira o que afirma.

No caso está caindo na saída padrão pelo visto, já que não existe condição definida para a mensagem "Olá"

Fiz um ajuste nas condições de saída no bloco de exceção, mas não tive sucesso. Ao tentar entrar novamente no bot OndeEncontrar do Router apresenta erro


Estou publicando aqui os bots para que alguém possa me auxiliar no comando de Reset User State

Pois não estou conseguindo obter um resultado que funcione!

Router: Example - Router

SubBot 1
Arquivo do Builder: sanavitaexsubbot1.json (14,1,KB)

No último bloco, em ação de saída foi incluso o processar comando, mas estou supondo que contact.identity não possui o valor que é necessário para resetar a sessão do usuário.

/contexts/{{contact.identity}}/stateid%40c415a48a-cdc6-460f-9e3b-858b9c3ed129

SubBot 2
Arquivo do Builder: sanavitaexsubbot2.json (14,5,KB)

No bloco de início foi colocado o comando para mostrar o status do contact.identity e é exibido o valor do resultado no chat

Mas o comando de Reset User State não foi executado pelos testes.

Será que alguém consegue ajudar a indicar o que está errado ou faltando?

Importante, está definido “Utilizar Contexto do Roteador”

Depois de conversar com o atendimento ficou claro a questão, em que é necessário incluir uma condição de saída no bloco da ação de redirecionamento

Ex: Bot Principal tem Bloco que em Ação de Entrada realiza o redirecionamento para um SubBot

No SubBot ao redirecionar para o Bot Principal, a mensagem enviada no bloco deve ser considerada nas condições de saída do Bloco de Redirecionamento do Bot Principal, pois a conversa parou ali.

Parece simples agora, mas não estava até pouco tempo atrás. Por não ter condição especificada a saída padrão é o Bloco de Exceção do Builder

Outra opção que utilizamos foi executar o comando de reset user state no bloco de inicio do bot, para o identificador do fluxo do bot anterior (quem redirecionou).

Para isso foi utilizado uma variável extra do contato, que é ajustada logo após o reset user state com o valor que está gravado na mesma variável.

Para garantir, foi usado uma variável de configuração flowIdentifier já que não identifiquei variável na biblioteca que armazena esse valor

Segue os cenários utilizando ambos os conceitos, onde o SubBot2 tem sua sessão resetada pelo SubBot1 e no SubBot1 há Condição de Saída no Bloco de Redirecionamento

sanavitaexsubbot1.json (16,2,KB)
sanavitaexsubbot2.json (16,0,KB)

1 Curtida

Pessoal, pelo que analisei essa solução também pode ser resolvida conforme a forma que eu identifiquei nesse tópico:

É uma forma mais fácil e obviamente, depende da sua necessidade. Mas fica a dica para todos! :wink:

Valeu @Bruno por reabrir o tópico pra eu lançar essa mensagem. ABraços!

2 Curtidas

Este tópico foi fechado automaticamente 7 dias depois da úlima resposta. Novas respostas não são mais permitidas.