Skip to main content

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" : "[email protected]",

* "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": "[email protected]",

* "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?






[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 (Blip Docs | API Reference) para atualizar o valor do master-state, apenas alterando o nome da variável de contexto no final da URi:



{

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

"to": "[email protected]",

"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.



@BrunoC, 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.


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


Comente