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