Shared Inbox de WhatsApp para nueva PlataformaMás
1msg official logo

Botones interactivos de WhatsApp API: menú soporte

Este escenario envía un mensaje con botones interactivos con sendButton durante la ventana de atención al cliente de 24 horas.

Descripción del caso de uso

Este escenario envía un mensaje con botones interactivos con sendButton durante la ventana de atención al cliente de 24 horas. Tres respuestas rápidas permiten al cliente elegir menú principal, estado del pedido o derivación a agente sin escribir.

Ejemplo de plantilla

¿Cómo podemos ayudarte hoy?

WhatsApp Business API for support menu — interactive buttons

Cuándo usarlo

Úsalo cuando un mensaje del cliente abre o continúa una sesión de soporte en WhatsApp y necesita una vía de autoservicio rápida antes de que un agente lea texto libre. Encaja en colas de soporte nivel 1 donde consultas repetidas de estado de pedido, menú y escalamiento ralentizan la primera respuesta dentro de la ventana de atención de 24 horas.

Menos clasificación manual de preguntas repetidas
Tras confirmar la sesión vía webhook entrante, sendButton entrega tres respuestas rápidas etiquetadas — menú principal, estado del pedido y hablar con agente — para que los agentes no decodifiquen las mismas intenciones en texto libre una y otra vez.
Intención estructurada en lugar de texto ambiguo
Cada toque de botón devuelve un payload estructurado de webhook con un id fijo, así tu backend recibe la selección de menú, estado o agente sin analizar lo que escribió el cliente.
Enrutamiento automático al flujo correcto
El webhook entrega el id del botón y tu backend ramifica a flujos de menú, estado o derivación a agente de forma programática, según la opción que tocó el cliente.
Autoservicio sin escribir cada solicitud
El menú interactivo se envía durante la sesión abierta con guía en el pie de foto, y el cliente elige menú principal, estado del pedido o derivación a agente con un toque en lugar de volver a escribir la consulta.

Flujo de trabajo

  1. Estado registrado

    Llega un mensaje del cliente vía webhook y mantiene la sesión abierta.

    status: "read"

  2. Construir y enviar

    Tu backend envía el menú de botones interactivos con guía en el pie de foto.

    POST /send_button

  3. El cliente actúa

    El cliente toca una de las tres opciones.

    acción del usuario

  4. Entregado

    El webhook entrega el id del botón para enrutar a flujos de menú, estado o agente.

    entregado

WhatsApp Business API for support menu — interactive buttons

Implementación técnica

Requisitos previos

  1. Clave API de 1MSG · Cómo obtener la clave API
  2. Cuenta de WhatsApp Business · Cómo conectar WABA
  3. Ventana de sesión de 24 horas abierta · Cómo funciona la ventana de 24 horas
  4. Opt-in del cliente · Cómo gestionar el consentimiento
  5. Endpoint de webhook · Cómo configurar webhooks

Ejemplos 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}/sendButton"

read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "body": "How can we help you today?",
  "footer": "Choose an option",
  "sections": [
    { "type": "reply", "reply": { "id": "menu", "title": "Main menu" } },
    { "type": "reply", "reply": { "id": "status", "title": "Order status" } },
    { "type": "reply", "reply": { "id": "agent", "title": "Talk to agent" } }
  ]
}
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

Respuesta y estado de entrega

HTTP 2xx y JSON "sent": true significan que 1MSG aceptó el mensaje para envío — no que ya llegó al teléfono del cliente. Guarda el campo id (tipo wamid.…) para correlacionar los callbacks de entrega.

200 OKRespuesta
{
  "sent": true,
  "message": "Sent to [email protected]",
  "description": "Message has been sent to the provider",
  "id": "wamid.HBgLMzgwNjM5..."
}
  • sent

    Aceptado para envío — aún no en el teléfono del cliente

  • id

    Guárdalo; los callbacks de entrega y hookInfo se basan en él

Estados de entrega y webhooks →

Errores frecuentes

EstadoRespuesta de la APICausaSolución
200Message was not sent: provide chatId, phone, bsuid, or usernameNingún destinatario que el canal pudiera resolver.Envía un solo destinatario: phone (código de país y número, solo dígitos), chatId (por ejemplo [email protected]) o bsuid.
200Message was not sent: empty bodyFalta el campo body o está vacío.Envía un body no vacío. Es obligatorio en mensajes de texto, botones de respuesta y listas.
401token is requiredLa petición no incluye el token.Agrega el token del canal como parámetro token en la URL: https://api.1msg.io/{channelId}/{method}?token=…

Todos los códigos de error →

Preguntas comunes

Relacionado

Atención al cliente
Pedir datos del ticket fuera de 24 h (WhatsApp API)
El escenario envía al cliente una plantilla de WhatsApp personalizada cuando soporte necesita más datos para resolver un ticket y no hay ventana de sesión abierta.
Atención al cliente
Aviso de ticket aceptado con WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada cuando su solicitud de soporte es aceptada para procesamiento.
Atención al cliente
Crear un grupo de WhatsApp por API (groups)
Este escenario usa la API groups con operación create para aprovisionar un grupo de WhatsApp nombrado para difusiones de equipo.
Atención al cliente
Enviar reacción y marcar como leído (WhatsApp API)
Este escenario combina sendReaction y readMessage durante la ventana de atención al cliente de 24 horas.
Atención al cliente
Mensaje de sesión con WhatsApp API: pedir datos
Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas.
Atención al cliente
Aviso de ticket resuelto con WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada cuando su ticket de soporte es resuelto.
Atención al cliente
Enviar tarjeta de contacto con WhatsApp API
Este escenario envía una tarjeta de contacto de WhatsApp con sendContact durante la ventana de servicio al cliente de 24 horas.
Atención al cliente
Recordatorio de respuesta pendiente (WhatsApp API)
El escenario envía al cliente una plantilla de WhatsApp personalizada cuando soporte está bloqueado esperando su respuesta.

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura