Mudar do flow/sub-bot "A" para o flow/sub-bot "B", resource/bloco "X"

Boa tarde!

Trabalho com vários bots dentro de um router, e em determinado momento (dependendo de ações externas à plataforma), preciso mudar o usuário de um sub-bot (flow) para outro, e que ele comece nesse novo fluxo a partir de um determinado bloco (resource).

Uma vez que dependo de uma condição externa à plataforma, faço por um segundo sistema via requisição HTTP e usando a extensão do Builder para mudança de status do usuário (https://docs.blip.ai/#change-user-state).

Acontece nessa sequência:
1 envio uma requisição alterando do flow “A” para o flow “B”
2 defini nessa requisição para começar no bloco “X”
3 envio uma mensagem com quick-reply (Sim ou Não)

Um exemplo do que espero:
• o usuário se cadastrou no flow “A” (o bot agradeceu etc)
• o sistema processou o cadastro do usuário (e autorizou)
• o sistema muda o usuário para o flow “B” (dos “confirmados”)
• o sistema notifica (Sim/Não) para emitir a confirmação (um qrCode)
• ao clicar Sim, o usuário vai direto para o bloco “X”, que faz essa ação

Resultado esperado:
• que o usuário altere do flow “A” para o “B”
• que o usuário ao clicar (ou digitar) “Sim” desencadeie a ação do bloco “X”

Resultado percebido:
• o usuário permanece no flow “A”
• ao interagir com a mensagem ativa (Sim/Não) é levado às exceções do flow “A”

Pergunta: porque nada está acontecendo, e o usuário permanece no flow “A”.

As requisições http retornam dentro do esperado (200), e as variáveis estão todas corretas.
Usando o endpoint (https://http.msging.net/commands) e a chave de autenticação corretos.

Ressalto, também, que os serviços (bots) estão devidamente cadastrados no bot router.
O sub-bot do flow “A” é padrão no router (main chatbot), e a expiração está desativada.

Código usado para trocar do flow “A” para o flow “B” (bloco “X”):

{
   "id":"#meu_id##",
   "to":"postmaster@msging.net",
   "method":"set",
   "uri":"/contexts/#meu_usuario##/stateid%40#meu_fluxo_b##",
   "type":"text/plain",
   "resource":"#meu_bloco_x##"
}

Estou usando o Telegram, e a ideia é oferecer o serviço também por WhatsApp e Messenger.

Alguma sugestão de como resolver?

Obrigado.
Abraços.

Olá @Grupo_TV1 obrigado pelo seu relato e por todos os detalhes, facilita bastante o entendimento do problema :+1:t2:

A resposta é que o change user state serve apenas para mudar o usuário entre blocos (estados) dentro de um mesmo fluxo. Não é possível fazer, via API, o redirecionamento entre bots. Essa ação é feita exclusivamente via Builder, pela ação de redirecionamento.

Certo Bruno, obrigado!

Fica então uma dica para quem encontrar a mesma situação.

Embora não seja possível mudar o usuário de flow/sub-bot a partir de uma requisição http “change-user-state”, é possível (dentro no flow que ele já se encontra) mudá-lo de bloco/resource.

Portanto, minha recomendação para solucionar o problema é criar um bloco com a propriedade de redirecionamento para o flow “B”, dentro do flow “A” (na própria interface gráfica do Builder).

Assim:

Depois, via http, basta mudar o usuário para o bloco/resource do flow “A” que cumprirá a ação de direcionar para o sub-bot desejado. Ainda, pelo que entendo, é possível encaminhar uma variável de contexto que pode “engatilhar” uma ação do sub-bot de destino (flow “B”).

Creio que é isso, se quiser fechar o tópico.

Valeu.
Abraços.

1 Curtida

Boa @Grupo_TV1

Ótima dica! Obrigado por compartilhar.

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