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

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.

Visão geral do caso de uso

Esse cenário envia um cartão de contato do WhatsApp com sendContact durante a janela de atendimento ao cliente de 24 horas. O cliente recebe o nome e o telefone do especialista sem precisar copiar os dígitos manualmente.

Exemplo de modelo

Por favor, entre em contato com nosso especialista usando o cartão de contato abaixo.

WhatsApp Business API for specialist handoff — share contact card

Quando usá-lo

Acesse este cenário quando o suporte de primeira linha tiver aprovado a escalada para um especialista nomeado e a janela de atendimento ao cliente de 24 horas ainda estiver aberta. Ele se encaixa nos fluxos de trabalho do helpdesk, onde um especialista humano precisa assumir sem perder o contexto do chat — especialmente quando compartilhar um número de telefone como texto simples correria o risco de uma discagem errada.

Menos ligações com números errados
sendContact entrega o nome do especialista e o telefone E.164 como um vCard na sessão ativa, assim o cliente só precisa tocar para ligar em vez de digitar os dígitos de uma mensagem em texto simples.
Contato salvo com um toque
O cartão abre o fluxo de salvamento nativo do WhatsApp, então o nome e o número do especialista vão direto para a agenda do cliente sem entrada manual.
A transferência permanece na mesma conversa.
A mensagem é enviada dentro da sessão aberta após um agente marcar o ticket como pronto para escalonamento, para que o cliente nunca precise sair do chat de suporte em busca de um número em outro lugar.
Sem compartilhamento manual de números pelos agentes.
Seu backend carrega o nome do especialista e o telefone do contrato de integração quando a escalada é aprovada, para que os agentes de primeira linha não precisem copiar e colar ou ditar dígitos.

Fluxo de Trabalho

  1. Desencadear

    Um agente marca o ticket como pronto para escalonamento especializado.

    event · triggered

  2. Capturar evento

    Seu backend carrega o nome de exibição do especialista e o número de telefone.

    phone: "+…"

  3. Construa e envie

    sendContact entrega o cartão de contato na sessão ativa.

    POST /send_contact

  4. Entregue

    O cliente salva ou chama o especialista pelo WhatsApp.

    delivered

WhatsApp Business API for specialist handoff — share contact card

Implementação técnica

Pré-requisitos

  1. Chave da API 1MSG · Como obter a Chave da API
  2. Conta comercial do WhatsApp · Como Conectar o WABA
  3. Janela de sessão aberta 24 horas · Como funciona a janela de 24 horas
  4. Consentimento do Cliente · Como Gerenciar o Consentimento dos Clientes
  5. Endpoint de Webhook · 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

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

# specialist display name (code_contract)
# specialist phone in E.164 format
read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "contacts": [
    {
      "name": { "formatted_name": "Jane Specialist", "first_name": "Jane Specialist" },
      "phones": [{ "phone": "+12025550199", "type": "CELL" }]
    }
  ]
}
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."
else
  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 (que se parece com wamid.…) para correlacionar os callbacks de entrega.

200 Claro!Resposta
{
  "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 vinculados a isso.

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

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

    Correlaciona o callback com o id retornado pela chamada de envio

  • timestamp

    Segundos Unix, como uma string

Se você prefere não receber chamadas de retorno, consulte GET {base}/{channel}/hookInfo?messageId=<id> em vez disso. Na prática, a entrega geralmente é 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 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 para lembrete de resposta pendente
O cenário envia ao cliente um template personalizado de WhatsApp quando o suporte está bloqueado aguardando sua resposta.
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