Change State User não redireciona para o bloco escolhido no fluxo (Canal de WhatsApp)

Bom dia pessoal, tudo bem com vcs?

Tenho o seguinte cenário: Envio mensagens para contatos utilizando a API do Builder através do canal de WhatsApp utilizando a seguinte documentação: https://help.blip.ai/hc/pt-br/articles/360057514334

Só que tenho um problema pois preciso redirecionar este contato para um bloco específico do meu chatbot e conforme estudos verifiquei que preciso utilizar o Change State User, pois bem faço todos os passos e na hora de testar verifico que o contato não esta sendo redirecionado para o bloco no qual defini, segue abaixo todo o fluxo da minha implementação para ajudar na compreensão dos amigos:

Primeiro eu verifico o número do Contato:
POST para https://http.msging.net/commands

*  {
*     "method" : "get",
*     "id" : "967f04fa-b449-440e-95ff-b0adab1be30d",
*     "to" : "postmaster@wa.gw.msging.net",
*     "uri" : "lime://wa.gw.msging.net/accounts/+{{telefone_do_contato}}"
*  }

Depois eu envio a mensagem de acordo com um template pré definido do WhatsApp (Mensagem de Quick-reply onde o contato escolhe uma das opções disponiveis):
POST para https://http.msging.net/messages

* {
*      "id" : "2676126f-eaf0-4c92-8fae-de122cb4d912",
*      "to" : "{{alternative_account}}",
*      "type" : "application/json",
*      "content" : {
*		  "type" : "template",
*		  "template" : {
*			 "name" : "notifica_sessao_quick",
*			 "namespace" : "{{namespace_do_meu_template}}",
*			 "language" : {
*				"code" : "pt_BR",
*				"policy" : "deterministic"
*			 },
*			 "components" : [
*				{
*					"type" : "body",
*					"parameters" : [
*						{
*							"type" : "text",
*							"text" : "Erik Santos"
*						}, 
*						{
*							"type" : "text",
*							"text" : "Dayane Teste"
*						}, 
*						{
*							"type" : "text",
*							"text" : "08/07"
*						}, 
*						{
*							"type" : "text",
*							"text" : "Quarta-feira"
*						}, 
*						{
*							"type" : "text",
*							"text" : "18:00"
*						}
*					]
*				}, 
*				{
*                  "type" : "button",
*                  "sub_type" : "quick_reply",
*                  "index" : 0,
*                  "parameters" : [
*						   {
*							"type" : "payload",
*							"payload" : "1|0001"
*						   }
*					]
*				},
*				{
*                  "type" : "button",
*                  "sub_type" : "quick_reply",
*                  "index" : 1,
*                  "parameters" : [
*						  {
*							"type" : "payload",
*							"payload" : "2|0001"
*						  }
*					]
*				}
*			]
*		}
*   }
*}

E por último faço a requisição para o Change State User no intuito de redirecionar o contato para o bloco especifico do meu chatbot:
POST para https://http.msging.net/commands

* {
*     "id": "700fcf4f-a5a2-44fc-813e-2ef798edf42d",
*     "to": "postmaster@msging.net",
*     "method": "set",
*     "uri": "/contexts/{{user_identity}}/stateid%40{{flow_id}}",
*     "type": "text/plain",
*     "resource": "{{codigo_do_bloco_de_redirecionamento}}"
*  }

Espero que alguém possa me ajudar pois sinceramente não sei mais o que fazer.
Não sei se na última requisição o valor do {{user_identity}} esta correto pois estou recolhendo o mesmo da chamada que verifica o contato através do campo resourse.identity.

Agradeço a atenção de todos.
Atenciosamente, Erik Urbanski.

Olá @Erik_Urbanski tudo bem?

A princípio tudo parece correto, mas vamos verificar uns pontos para ter certeza;

  1. Os IDS das requisições que você está enviando, são todos únicos e mudam a cada requisição?

  2. A forma como você está pegando o ID (se for fora do Builder) é assim mesmo, mas por via das dúvidas, pode conferir se o valor está correto?

  3. O valor de flow_id está correto?

  4. Você usa a opção de Expiração de Sessão no seu bot?

1 Curtida

[EDIT]

@Erik_Urbanski estou eu estava com o mesmo problema!

Segui o mesmo documento que você citou acima e não funcionou.

Aqui, eu consegui fazer funcionar mas como não está documentado, não tenho certeza se é a solução correta, fiz testes usando o BlipChat e o Whatsapp e o meu cenário é o mesmo descrito na postagem inicial deste tópico, o atendente inicia o atendimento e a resposta do usuário deverá ser tratada por um bloco específico.

Além do que está documentado, alterei também a variável de contexto master-state com o Id do bot que irá atender o usuário e ativei a opção Utilizar contexto do roteador do bot que irá atender o usuário.

Usei o mesmo comando que altera o state do usuário (https://docs.blip.ai/?http#change-user-state) para atualizar o valor do master-state, apenas alterando o nome da variável de contexto no final da URi:

{
  "id": "{{$guid}}",
  "to": "postmaster@msging.net",
  "method": "set",
  "uri": "/contexts/{{user-identity}}/master-state",
  "type": "text/plain",
  "resource": "{{bot-id}}"
}

Ativação do uso do contexto do roteador (No bot que irá atender):

Acredito que a documentação esteja cobrindo apenas fluxos que utilizem um único bot (Eu testei esse cenário e funciona conforme a documentação), quando há vários, apenas adicionar o state no contexto do usuário não é suficiente, pois o master state muda conforme o usuário avança no fluxo de atendimento, no meu caso, os usuário serão redirecionados para o bot principal no final do fluxo.

@Bruno, faz sentido ou deveria funcionar conforme a documentação para ambos os cenários?

Dos pontos que você listou, eu validei nos meus bots e o 1,2 e 3 estão corretos! O 4, a opção de Expiração de Sessão não está ativa em nenhum bot. Fiz um teste ativando e também não vi diferença.
Se puder validar, confirmar ou corrigir o que eu sugeri acima, seria muito útil pra mim.

3 Curtidas

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