Identificar o WhatsApp do contato no Sub-Bot

Bom dia pessoal,

Estou tendo um problema para identificar o numero do WhatsApp do contato dentro do meu sub-Bot. Já encontrei em outros tópicos soluções para isso, mas não resolveu 100%.

Dentro de um bloco no sub-bot faço uma requisição HTTP desse tipo:

Acontece que o {{contact.identity}} me retorna um Id muito doido… do tipo:

b8288c64-6114-4b0a-80cc-3cdc0d557569@tunnel.msging.net

Pelo que li em outros tópicos isso acontece porque estou usando um router e esse seria a identificação do túnel. Minha dúvida é, com esse ID do túnel eu consigo fazer uma requisição para conseguir o numero do WhatsApp do contato que está no router??

Vi em um topico para ativar o compartilhamento de contexto do router, mas isso me criou outro problema que é ter que replicar todas minhas Intenções para o bot-router.

Estou tentando o GET CONTACT, mas tb não estou conseguindo. Não sei se estou usando ele da forma correta… o mais longe que consegui chegar foi essa requisição. Alguem sabe me dizer se é assim que deve ser usado?

Obrigado,
Lucas Dumont

1 curtida

Hey Blipper!

Eu recomendaria usar o Contexto de Roteador mesmo, pois acredito que futuramente você irá se deparar com outras coisa que necessitem dessa funcionalidade. Entretanto, caso ainda queira prosseguir posso sugerir uma outra solução, que é enviar um json como conteúdo enviado entre um serviço e outro, como na imagem a baixo:

1 curtida

Ei @fadoaglauss,

Obrigado pela sugestão, mas acho que ficou um pouco confuso essa sobre o json. Você quis dizer para eu redirecionar o serviço do Sub-Bot para o bot-router enviar um json com o {{identity.contact}} e depois voltar para o o sub-bot?

Hey @Lucas_Queiroz_Dumont!

Eu conversei sobre o seu problema com o Bruno Fonseca e a primeira coisa que me disse foi que nessa solução estamos reinventando a roda e que o melhor mesmo seria utilizar Contexto de Roteador.

Mas de qualquer forma a ideia proposta por ele é utilizar o commands a baixo com a Key do Roteador para recuperar o {{contact.identity}} registrado nele para um usuário específico.

URL: https://msging.net/commands
Method: POST
Body:

{  
  "id": "{{$guid}}",
  "to": "postmaster@tunnel.msging.net",
  "method": "get",
  "uri": "/tunnels/{{contact.identity}}" //Lembrando que esse contact.identity é o do túnel. Ex.: bbb30978-bfaf-4fa1-9d9a-ccfca021853b@tunnel.msging.net
}

Response:

{
    "type": "application/vnd.iris.tunnel+json",
    "resource": {
        "owner": "router@msging.net",
        "originator": "5158ea5b-2590-4573-89cd-10b6bb969c95.router@0mn.io",
        "destination": "main@msging.net"
    },
    "method": "get",
    "status": "success",
    "id": "5697eafa-932b-4c06-9cc0-29bbaa5367da",
    "from": "postmaster@tunnel.msging.net/#iris-hosted-2",
    "to": "forumrouter@msging.net/!iris-hosted-2-ck3b8rjf",
    "metadata": {
        "#command.uri": "lime://forumrouter@msging.net/tunnels/bbb30978-bfaf-4fa1-9d9a-ccfca021853b@tunnel.msging.net",
        "uber-trace-id": "1cd74b91bcd1e478%3Aadb7813600b6a25b%3A1cd74b91bcd1e478%3A1"
    }
}

Assim, o teremos o número do usuário(ou também identificador) no response.resource.originator, que no meu caso de exemplo é 5158ea5b-2590-4573-89cd-10b6bb969c95.router@0mn.io. Agora que você já tem o valor do {{contact.identity}} do usuário (e não do túnel) você poderá armazená-lo em uma variável a sua escolha. Lembrando que esse processo terá que ser realizado para cada sub-bot em que você precise do {{contact.identity}} do usuário, porque não temos o Contexto de Roteador ativado.

3 curtidas

@fadoaglauss,

Funcionou perfeito!! Obrigado!

3 curtidas