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

WhatsApp Business API para lembrete de resposta pendente

O cenário envia ao cliente um template personalizado de WhatsApp quando o suporte está bloqueado aguardando sua resposta.

Visão geral do caso de uso

O cenário envia ao cliente um modelo personalizado de WhatsApp quando o suporte está bloqueado esperando pela sua resposta. A mensagem inclui o nome do cliente, o número do ticket e qual resposta ou ação ainda é necessária. Um botão de URL estático abre a página do ticket ou o portal de ajuda para responder.

Exemplo de template

Olá, {{1}}! Estamos aguardando sua resposta em relação ao pedido #{{2}}. {{3}} Por favor, responda para que possamos continuar.

Claro! Como posso ajudar você?
  • {{1}}
    nome do cliente
  • {{2}}
    número do chamado
  • {{3}}
    detalhes do pedido ou texto de lembrete (por exemplo, por favor, confirme o endereço de entrega, responda até sexta-feira)
  • “Claro! Como posso ajudar você?”
    botão — fixo no template Meta
WhatsApp Business API for awaiting response reminder

Quando usá-lo

Alcance este cenário quando um ticket estiver parado aguardando a resposta do cliente e o suporte não puder avançar sem isso. Ele se aplica a helpdesks que buscam respostas de esclarecimento em casos parados, equipes de reclamações e KYC que se aproximam de um SLA de resposta do cliente, e agências que automatizam o acompanhamento quando o status do ticket está aguardando o cliente.

Tickets desbloqueados
Quando o helpdesk marca o ticket como aguardando resposta do cliente ou um temporizador dispara, um modelo aprovado é enviado com o nome do cliente, número do ticket e qual resposta ainda é necessária — para que o suporte possa continuar assim que eles responderem.
Alcance clientes sem um chat aberto
Sem uma sessão ativa no WhatsApp, apenas um modelo aprovado pode iniciar a conversa; este cenário utiliza esse caminho para que o lembrete chegue no WhatsApp em vez de depender apenas de chamadas ou e-mails.
Contexto do bilhete em uma mensagem
Três variáveis de corpo carregam o nome do cliente, número do caso e o detalhe específico da solicitação (por exemplo, confirmar endereço de entrega), para que o cliente veja exatamente qual suporte está aguardando sem precisar abrir outro sistema.
Um toque para voltar ao ticket
Um botão de URL estático rotulado como Responder abre a página do ticket ou o portal de ajuda fixo no modelo Meta — apenas as variáveis do corpo são enviadas via API.
Entrega registrada no helpdesk
O resultado da entrega é registrado de volta no helpdesk ou CRM, e o cliente pode continuar na sessão após responder.

Fluxo de Trabalho

  1. Gatilho

    O helpdesk marca o ticket como aguardando a resposta do cliente ou um temporizador é acionado.

    event · triggered

  2. Captura de evento

    O sistema resolve o número de telefone do destinatário e os campos de lembrete.

    phone: "+…"

  3. Construir & enviar

    Uma mensagem de modelo personalizada é construída com três variáveis de corpo e um botão de URL estático.

    POST /sendTemplate

  4. Entregue

    O cliente recebe o lembrete pelo WhatsApp com o contexto do ingresso e a ação necessária.

    delivered

  5. Status rastreado

    Resultado de entrega é registrado; o cliente pode continuar na sessão após responder.

    status: "read"

WhatsApp Business API for awaiting response reminder

Implementação técnica

Prerequisitos

  1. Chave da API 1MSG · Como obter a chave da API
  2. Conta do WhatsApp Business · Como Conectar WABA
  3. Modelo do WhatsApp · Como Aprovar o Modelo WABA
  4. Consentimento do Cliente · Como Gerenciar o Consentimento dos Clientes

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)

TEMPLATE_NAME="___"                        # approved template name
TEMPLATE_NAMESPACE="___"                   # template namespace (required — send fails without it)
TEMPLATE_LANGUAGE="___"                    # template language code, e.g. "en"



# === Test data ===
TEST_PHONE="___"                 # client phone in international format
TEST_CUSTOMERNAME="___"         # {{1}} customer name
TEST_TICKETNUMBER="___"         # {{2}} ticket number
TEST_REQUESTDETAIL="___"         # {{3}} request detail

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"

for pair in "CHANNEL_ID=$CHANNEL_ID" "API_TOKEN=$API_TOKEN" \
            "TEMPLATE_NAME=$TEMPLATE_NAME" "TEMPLATE_NAMESPACE=$TEMPLATE_NAMESPACE" \
            "TEMPLATE_LANGUAGE=$TEMPLATE_LANGUAGE" "TEST_PHONE=$TEST_PHONE" \
            "TEST_CUSTOMERNAME=$TEST_CUSTOMERNAME" \
            "TEST_TICKETNUMBER=$TEST_TICKETNUMBER" \
            "TEST_REQUESTDETAIL=$TEST_REQUESTDETAIL"; do
    val="${pair#*=}"
    if [ -z "$val" ] || [ "$val" = "___" ]; then
        echo "Missing configuration value: ${pair%%=*}" >&2
        exit 1
    fi
done

if [ -z "$PHONE_NORM" ]; then
    echo "Error: phone number has no digits after normalization" >&2
    exit 1
fi

URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendTemplate"

# params carries body ONLY. Button text is fixed in the Meta template — no button param.

# {{1}} customer name → ${TEST_CUSTOMERNAME}
# {{2}} ticket number → ${TEST_TICKETNUMBER}
# {{3}} request detail → ${TEST_REQUESTDETAIL}
read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "template": "${TEMPLATE_NAME}",
  "namespace": "${TEMPLATE_NAMESPACE}",
  "language": { "policy": "deterministic", "code": "${TEMPLATE_LANGUAGE}" },
  "params": [
    {
      "type": "body",
      "parameters": [
        { "type": "text", "text": "${TEST_CUSTOMERNAME}" },
        { "type": "text", "text": "${TEST_TICKETNUMBER}" },
        { "type": "text", "text": "${TEST_REQUESTDETAIL}" }
      ]
    }

  ]
}
JSON

RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$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" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ] && [ "$ok" -eq 1 ]; then
    echo "Message sent to client."
    echo "API response: $BODY"
else
    echo "Send failed. HTTP status: $HTTP_CODE" >&2
    echo "$BODY" >&2
    exit 1
fi

Status de resposta e entrega

HTTP 2xx e JSON "sent": true significam que 1MSG aceitou a mensagem para envio — não que ela já tenha chegado ao telefone do cliente. Salve o campo id (parece com wamid.…) para correlacionar os callbacks de entrega.

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

    Aceito para envio — não ainda no telefone do cliente

  • id

    Armazene isso; os callbacks de entrega e hookInfo são baseados nisso.

A entrega em si chega mais tarde, como um callback separado. Registre um webhook (POST …/webhook) e 1MSG POSTs atualizações de status para o seu endpoint HTTPS em um payload de nível superior hooks[].

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

    enviado, entregue, lido — ou um status de falha quando aplicável

  • id

    Correla o callback com o id retornado pela chamada de envio.

  • timestamp

    Segundos Unix, como uma string

Se você preferir não receber callbacks, faça uma pesquisa com GET {base}/{channel}/hookInfo?messageId=<id> em vez disso. Na prática, a entrega geralmente é concluída em alguns 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: template is not definednamespace, template or language missing from the request body.
200template name (…) does not exist in <language>The template is approved in a different language than the one requested.
200Message was not sent: provide chatId, phone, bsuid, or usernameNo recipient the channel could resolve.
403access deniedThe token is wrong, or belongs to a different channel than the URL.
429too many requests. please try laterThe channel is over its send rate.

Perguntas Frequentes

Sim — mensagens de WhatsApp com início frio requerem um modelo aprovado pela Meta.

Relacionado

Serviço ao Cliente
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.
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.
Serviço ao Cliente
WhatsApp Business API para notificação de agente atribuído
O cenário envia ao cliente um template personalizado pelo WhatsApp quando um ticket de suporte é designado a um especialista.
Serviço ao Cliente
WhatsApp Business API para notificação de mudança de serviço
O cenário envia ao cliente um modelo personalizado de WhatsApp quando a empresa muda como um serviço ou processo funciona para eles.
Serviço ao Cliente
WhatsApp Business API para confirmação de recebimento
O cenário envia ao cliente um modelo de WhatsApp personalizado logo após a submissão de um formulário de aplicação ou solicitação.

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