💬 Shared Inbox do WhatsApp na nova PlataformaMais
1msg official logo

WhatsApp Business API para suporte — reação e confirmações

Este cenário combina sendReaction e readMessage durante a janela de atendimento ao cliente de 24 horas.

Visão geral do caso de uso

Esse cenário combina sendReaction e readMessage durante a janela de atendimento ao cliente de 24 horas. Uma reação de joinha na mensagem de entrada id sinaliza reconhecimento sem outra bolha de texto.

Exemplo de modelo

Sua mensagem foi registrada — estamos preparando uma resposta detalhada.

WhatsApp Business API for support acknowledgement — reaction and read receipt

Quando usar isso

Acesse este cenário quando uma mensagem de cliente chega em uma sessão de suporte aberta no WhatsApp e você precisa que eles saibam que foi vista antes que a resposta completa esteja pronta. Isso se adequa a desenvolvedores programando bots de suporte, pequenas equipes lidando com filas de chat e agências aprimorando a experiência do suporte voltada para o cliente, onde cada bolha de texto extra adiciona ruído.

Menos bolhas de texto extras na conversa.
sendReaction envia um thumbs-up com referência ao id da mensagem recebida do webhook, de modo que o reconhecimento apareça na mensagem deles em vez de abrir uma nova interação.
Resposta percebida mais rápida
readMessage marca a mensagem recebida como lida assim que ela chega, para que o cliente veja o recibo de leitura enquanto seu backend ou agente prepara a resposta detalhada.
Sem necessidade de variáveis de modelo ou corpo.
A reação e o recibo de leitura têm como alvo apenas o ID da mensagem do payload do webhook — nenhum template aprovado e nenhuma variável de corpo para preencher antes que o ack seja enviado.
Espaço para a resposta real depois
O reconhecimento é realizado primeiro dentro da janela de sessão de 24 horas, então sua automação ou agente continua com a resposta completa quando estiver pronta.

Fluxo de Trabalho

  1. Status rastreado

    Uma mensagem de cliente chega via webhook com seu ID de mensagem.

    status: "read"

  2. Construir e enviar

    Seu backend envia uma reação positiva para esse id.

    POST /send_reaction

  3. Registrar evento

    readMessage marca a mensagem recebida como lida.

    phone: "+…"

  4. Entregue

    O cliente vê um reconhecimento enquanto a resposta detalhada é preparada.

    delivered

WhatsApp Business API for support acknowledgement — reaction and read receipt

Implementação técnica

Pré-requisitos

  1. 1MSG API Key · Como obter a chave da API
  2. Conta do WhatsApp Business · Como Conectar WABA
  3. Janela de sessão aberta 24 horas · Como funciona a janela de 24 horas
  4. Opt-in do cliente · Como Gerenciar o Consentimento de Clientes
  5. Webhook endpoint · Como Configurar Webhooks

Exemplos de código

#!/usr/bin/env bash
set -euo pipefail

# === Configuration (replace "___" placeholders) ===
API_BASE_URL="https://api.1msg.io"        # production 1MSG API base URL
CHANNEL_ID="___"                           # channel ID from 1MSG dashboard
API_TOKEN="___"                            # channel JWT token (Bearer)



# === Test data ===
TEST_PHONE="___"                 # client phone in international format
INBOUND_MESSAGE_ID="___"                # inbound message ID for reaction/read

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"
REACTION_URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendReaction"

read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "body": "👍",
  "quotedMsgId": "${INBOUND_MESSAGE_ID}"
}
JSON

RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$REACTION_URL" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -d "$PAYLOAD")"

HTTP_CODE="$(printf '%s' "$RESPONSE" | tail -n1)"
BODY="$(printf '%s' "$RESPONSE" | sed '$d')"

case "$BODY" in
  *'"sent":true'*) ok=1 ;;
  *) ok=0 ;;
esac

if [ "$HTTP_CODE" -lt 200 ] || [ "$HTTP_CODE" -ge 300 ] || [ "$ok" -ne 1 ]; then
  echo "$BODY" >&2
  exit 1
fi


READ_URL="${API_BASE_URL%/}/${CHANNEL_ID}/readMessage"
read -r -d '' SECONDARY_PAYLOAD <<JSON || true
{ "messageId": "${INBOUND_MESSAGE_ID}" }
JSON

READ_RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$READ_URL" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -d "$SECONDARY_PAYLOAD")"

READ_CODE="$(printf '%s' "$READ_RESPONSE" | tail -n1)"
READ_BODY="$(printf '%s' "$READ_RESPONSE" | sed '$d')"

case "$READ_BODY" in
  *'"result":"success"'*) read_ok=1 ;;
  *) read_ok=0 ;;
esac

if [ "$READ_CODE" -lt 200 ] || [ "$READ_CODE" -ge 300 ] || [ "$read_ok" -ne 1 ]; then
  echo "$READ_BODY" >&2
  exit 1
fi


echo "Message sent to client."

Status de resposta e entrega

HTTP 2xx e JSON"sent": truemédia 1MSGaceitoa mensagem para envio — não que tenha chegado ao celular do cliente.idcampo.wamid.…) para correlacionar callbacks de entrega.

200 OKResposta
{
  "sent": true,
  "id": "wamid.HBgLMzgwNjM5...",
  "message": "Message accepted for delivery"
}
  • sent

    Aceito para envio.nãoainda no telefone do cliente

  • id

    Armazene; retornos de entrega.hookInfoestão focados nisso

A entrega em si chega mais tarde, como uma chamada de retorno separada. Registre um webhookPOST …/webhook) e 1MSG envia atualizações de status para o seu endpoint HTTPS em um nível superiorhooks[]carga.

200 OKWebhook de status de entrega — payload recebido
{
  "hooks": [
    {
      "id": "gBGGeSaGViBfAgnlzOSHEwK9O6F",
      "type": "message",
      "status": "sent",
      "timestamp": "1654864094",
      "recipient_id": "556123122026"
    }
  ]
}
  • status

    sent, delivered, read— ou um status de falha quando aplicável

  • id

    Correlaciona a chamada de retorno com oidretornado pela chamada de envio

  • timestamp

    Segundos Unix, como uma string

Se preferir não receber retornos de chamada, não se manifeste.GET {base}/{channel}/hookInfo?messageId=<id>em vez disso. Na prática, a entrega muitas vezes é concluída em segundos — mas o contrato da API não garante isso, então nunca bloqueie um fluxo esperando por ela.

Erros comuns

StatusRespostaCausa
200Message was not sent: empty bodyNo body in the request.
200Message was not sent: provide chatId, phone, bsuid, or usernameNo recipient the channel could resolve.
200wrong fileThe media could not be fetched or uploaded — not a reachable URL, not valid base64.
403access deniedThe token is wrong, or belongs to a different channel than the URL.
200Message was not sent: filenamesendFile called without a filename, so the media has no extension to send.

Perguntas Frequentes

Não — este cenário utiliza uma mensagem de sessão dentro da janela de atendimento ao cliente de 24 horas.

Relacionado

Serviço ao Cliente
WhatsApp Business API para solicitação de anexo de ingresso
O cenário envia um modelo de WhatsApp ao cliente quando o suporte precisa de uma foto, documento ou prova e não há sessão de 24 horas aberta.
Serviço ao Cliente
WhatsApp Business API para solicitar informações do ticket
O cenário envia ao cliente um modelo de WhatsApp personalizado quando o suporte precisa de mais dados para resolver um ticket e não há janela de sessão aberta.
Serviço ao Cliente
WhatsApp Business API para notificação de tíquete aceito
O cenário envia ao cliente um modelo personalizado de WhatsApp quando seu pedido de suporte é aceito para processamento.
Serviço ao Cliente
WhatsApp Business API — criar grupo no WhatsApp para equipe
Este cenário usa a API de grupos com uma operação de criação para provisionar um grupo do WhatsApp nomeado para transmissões da equipe.
Serviço ao Cliente
WhatsApp Business API para suporte — botões interativos
Este cenário envia uma mensagem interativa com o sendButton durante a janela de atendimento ao cliente de 24 horas.
Serviço ao Cliente
WhatsApp Business API para resposta de sessão — solicite mais.
Este cenário envia uma mensagem de texto livre pelo WhatsApp com sendMessage dentro da janela de atendimento ao cliente de 24 horas.
Serviço ao Cliente
WhatsApp Business API para notificação de resolução
O cenário envia um template personalizado pelo WhatsApp quando o ticket de suporte do cliente é resolvido.
Serviço ao Cliente
WhatsApp Business API — repasse ao especialista com contato
Este cenário envia um cartão de contato do WhatsApp com sendContact durante a janela de atendimento ao cliente de 24 horas.

Crie para o WhatsApp em horas
sem complicações de infraestrutura