Uzapi

Notificações automáticas para seu negócio

Docy Child

Obtendo o Conteúdo de Mensagens

Leitura estimada: 6 minutos

Obtendo o Conteúdo de Mensagens Enviadas

Webhook de status das mensagens

O webhook da API não retorna o conteúdo da mensagem enviada. Ou seja, o corpo (body) recebido no webhook não contém diretamente o texto utilizado no envio da mensagem.

A API segue um modelo de funcionamento semelhante ao da API oficial da Meta, utilizando o webhook principalmente para notificar eventos e alterações de status relacionados às mensagens.

Entre os principais status associados às mensagens estão:

  • send — mensagem enviada.
  • delivery — mensagem entregue.
  • read — mensagem lida.

Importante: o webhook deve ser utilizado para identificar o evento e o status da mensagem. Para obter o conteúdo da mensagem, é necessário consultar posteriormente o registro correspondente utilizando o ID da mensagem.

Cada mensagem enviada possui um ID único. Esse ID permite relacionar o evento recebido pelo webhook com a mensagem originalmente enviada.

Fluxo recomendado

O fluxo para recuperar o conteúdo de uma mensagem enviada pode ser resumido da seguinte forma:

  1. A aplicação envia uma mensagem pela API.
  2. A API gera um ID exclusivo para a mensagem.
  3. Posteriormente, o webhook recebe uma atualização de status relacionada a essa mensagem.
  4. O webhook informa o ID da mensagem no campo statuses[].id.
  5. A aplicação utiliza esse ID para consultar a mensagem por meio do endpoint de consulta de chats.
  6. A resposta da consulta contém as informações da mensagem, incluindo seu conteúdo.

Por exemplo, ao receber um evento com status delivered, o sistema pode utilizar o valor de statuses[].id para consultar a mensagem correspondente.

Dessa forma, não é necessário esperar que o texto da mensagem seja enviado novamente pelo webhook. O conteúdo pode ser recuperado por meio da consulta utilizando o ID da mensagem.


2. Documentação da API


3. Capturando o conteúdo de uma mensagem

Endpoint

POST {{baseUrl}}/:username/:version/:phone_number_id/chats 

4. Obtendo os parâmetros da API

Antes de realizar a requisição, acesse o painel da sua instância e obtenha os parâmetros necessários para montar a URL e autenticar a requisição.

Parâmetro Exemplo
baseUrl api.uzapi.com.br
username teste
version v1
phone_number_id 84749371xxxxxx
token eyJhbGcxxxxxx
message_id ACB96BCE62812FBD9E2983DA5586E4B6

Observação: o message_id utilizado nas consultas deve ser o ID da mensagem retornado pela API ou posteriormente recebido no webhook, conforme o fluxo da integração.


5. Configurando a autenticação

A API utiliza autenticação do tipo Bearer Token.

No Postman, crie uma variável de ambiente chamada token.

Nome:

token

Valor:

eyJhbGcxxxxxx

Na aba Authorization da requisição, configure:

Campo Valor
Type Bearer Token
Token {{token}}

Dessa forma, o Postman enviará automaticamente o token no cabeçalho Authorization:

Authorization: Bearer {{token}}

6. Recebendo o status da mensagem pelo webhook

Após o envio da mensagem, a aplicação poderá receber uma notificação no webhook configurado.

Um exemplo de payload recebido é:

[
  {
    "headers": {
      "connection": "Upgrade",
      "host": "flowtech.autotic.com.br",
      "content-length": "1251",
      "user-agent": "Go-http-client/1.1",
      "content-type": "application/json",
      "accept-encoding": "gzip"
    },
    "params": {},
    "query": {},
    "body": {
      "object": "whatsapp_business_account",
      "entry": [
        {
          "id": "",
          "changes": [
            {
              "value": {
                "messaging_product": "whatsapp",
                "metadata": {
                  "display_phone_number": "5521979844840",
                  "phone_number_id": "755574361041503"
                },
                "contacts": [
                  {
                    "profile": {
                      "name": ""
                    },
                    "wa_id": "5521993432153"
                  }
                ],
                "statuses": [
                  {
                    "id": "ACB96BCE62812FBD9E2983DA5586E4B6",
                    "status": "delivered",
                    "timestamp": "1787758728",
                    "recipient_id": "",
                    "conversation": {
                      "id": "wamid.DAYwsim1GxznkgJevwqFIRGAto8fP+MbdNIunJr4qhentGt0gERI8b0MdqgjgAg6fj2IettSLvXnQpJh",
                      "origin": {
                        "type": "service"
                      }
                    },
                    "pricing": {
                      "billable": true,
                      "pricing_model": "CBP",
                      "category": "service"
                    }
                  }
                ]
              },
              "field": "messages"
            }
          ]
        }
      ]
    },
    "webhookUrl": "https://flowtech.autotic.com.br/webhook/uzapi",
    "executionMode": "production"
  }
]

Identificando a mensagem

No exemplo acima, o campo:

"statuses": [
  {
    "id": "ACB96BCE62812FBD9E2983DA5586E4B6",
    "status": "delivered"
  }
]

indica que a mensagem possui o ID:

ACB96BCE62812FBD9E2983DA5586E4B6

Esse valor deve ser utilizado para localizar a mensagem correspondente.

O campo status informa o estado atual da mensagem. No exemplo, o valor:

delivered

indica que a mensagem foi entregue.

Importante: o payload do webhook apresentado acima não contém o campo com o texto da mensagem. Para obter esse conteúdo, utilize o ID informado em statuses[].id e faça uma consulta à API.


7. Consultando a mensagem pelo ID

Depois de obter o ID da mensagem no webhook, é possível consultar o registro correspondente utilizando a operação get.

Requisição

{
  "delayMessage": 0,
  "type": "chats",
  "action": "get",
  "chats": {
    "message_id": "ACB96BCE62812FBD9E2983DA5586E4B6"
  }
}

Atenção: utilize no campo message_id o mesmo ID recebido no webhook em statuses[].id.


8. Exemplo de resposta

Uma resposta possível para a consulta é:

[
  {
    "status": "success",
    "data": {
      "data": {
        "Info": {
          "Chat": "152943902851129@lid",
          "Sender": "35682672189672@lid",
          "IsFromMe": true,
          "IsGroup": false,
          "ID": "ACB96BCE62812FBD9E2983DA5586E4B6",
          "Type": "text",
          "PushName": "T",
          "Timestamp": "2026-08-26T15:38:48Z"
        },
        "Message": {
          "Conversation": "Testando novamente",
          "MessageContextInfo": {
            "deviceListMetadata": {
              "senderKeyHash": "5yR/b2vqtw7V8w==",
              "senderTimestamp": 1787755863,
              "recipientKeyHash": "0Rge/zZZCTCdrg==",
              "recipientTimestamp": 1787276551
            },
            "deviceListMetadataVersion": 2,
            "messageSecret": "jtSscSMZNIOYPYuPduLYSKCfslxpJpRRgNMRBceo0Lc="
          }
        }
      },
      "status": "success"
    }
  }
]

9. Localizando o conteúdo da mensagem

Na resposta acima, o conteúdo da mensagem está disponível em:

data.data.Message.Conversation

No exemplo:

"Message": {
  "Conversation": "Testando novamente"
}

Portanto, o conteúdo enviado foi:

Testando novamente

O ID da mensagem pode ser conferido no campo:

data.data.Info.ID

que, no exemplo, corresponde a:

ACB96BCE62812FBD9E2983DA5586E4B6

10. Resumo do processo

A integração pode ser implementada seguindo este fluxo:

ENVIO DA MENSAGEM
       │
       ▼
API gera/retorna o ID da mensagem
       │
       ▼
Webhook recebe atualização de status
       │
       ▼
statuses[].id
       │
       ▼
Consulta da mensagem utilizando message_id
       │
       ▼
Resposta da API
       │
       ▼
Message.Conversation
       │
       ▼
Conteúdo da mensagem

Exemplo prático

Se o webhook receber:

{
  "id": "ACB96BCE62812FBD9E2983DA5586E4B6",
  "status": "delivered"
}

a aplicação deverá utilizar o ID:

ACB96BCE62812FBD9E2983DA5586E4B6

na consulta:

{
  "delayMessage": 0,
  "type": "chats",
  "action": "get",
  "chats": {
    "message_id": "ACB96BCE62812FBD9E2983DA5586E4B6"
  }
}

A partir da resposta, o sistema poderá acessar:

Message.Conversation
para obter o texto da mensagem.

11. Conclusão

O webhook de status não deve ser utilizado como fonte do conteúdo da mensagem enviada. Sua principal finalidade é informar eventos e alterações de status.

Para identificar o conteúdo de uma mensagem enviada, o sistema deve:

  1. Capturar o ID da mensagem.
  2. Identificar o ID correspondente no webhook por meio de statuses[].id.
  3. Consultar a mensagem utilizando message_id.
  4. Obter o conteúdo no campo Message.Conversation.

 

Leave a Comment

Compartilhe essa documentação
CONTEÚDO