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

Aviso de agente asignado con WhatsApp API

El escenario envía al cliente una plantilla de WhatsApp personalizada cuando un ticket de soporte se asigna a un especialista.

Descripción del caso de uso

El escenario envía al cliente una plantilla de WhatsApp personalizada cuando un ticket de soporte se asigna a un especialista. El mensaje incluye el nombre del cliente, número de ticket y nombre del agente responsable. Un botón URL estático abre la página del ticket o portal de ayuda.

Ejemplo de plantilla

Hola, {{1}}! Se asignó un especialista a tu solicitud #{{2}}: {{3}}. Te contactaremos pronto.

Estado de solicitud
  • {{1}}
    nombre del cliente
  • {{2}}
    número de ticket o caso
  • {{3}}
    nombre del especialista asignado
  • “Estado de solicitud”
    botón — fijo en la plantilla de Meta
WhatsApp Business API for agent assigned notification

Cuándo usarlo

Usa este escenario cuando un ticket de soporte pasa de la cola a un especialista con nombre y el cliente aún no tiene un hilo abierto en WhatsApp — solo una plantilla aprobada puede contactarlo primero. Encaja en equipos de helpdesk y soporte SaaS, niveles premium que presentan al agente asignado, y agencias que conectan webhooks de asignación desde Zendesk, Freshdesk o un CRM.

Menos ansiedad mientras espera
El nombre del cliente, el número de ticket y el especialista llegan como tres variables del cuerpo en WhatsApp, así el cliente ve un contacto con nombre en lugar de una cola anónima.
Menos mensajes de "¿quién atiende mi caso?"
La referencia del ticket y el nombre del especialista quedan en el mismo chat, y el botón URL estático abre la página del ticket para lo demás que necesite revisar.
Cero avisos manuales de asignación
El helpdesk dispara la plantilla con el evento de asignación y el sistema obtiene el teléfono y los tres campos, así ningún agente retipea el aviso por cada ticket.
Entrega rastreable en el helpdesk
El resultado de entrega se registra después del envío, así soporte puede dar seguimiento en el helpdesk o CRM cuando una notificación falla o requiere reintento.

Flujo de trabajo

  1. Disparador

    El helpdesk asigna un especialista al ticket y dispara un evento de asignación.

    evento · disparado

  2. Capturar evento

    El sistema obtiene el teléfono del destinatario y los campos de asignación.

    phone: "+…"

  3. Construir y enviar

    Se construye un mensaje de plantilla personalizado con tres variables en el cuerpo y un botón URL estático.

    POST /sendTemplate

  4. Entregado

    El cliente recibe la notificación en WhatsApp con el número de ticket y el nombre del especialista.

    entregado

  5. Estado registrado

    Se registra el resultado de entrega; los errores se manejan según las reglas de la plataforma.

    status: "read"

WhatsApp Business API for agent assigned notification

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. Plantilla de WhatsApp · Cómo aprobar una plantilla WABA
  4. Opt-in del cliente · Cómo gestionar el consentimiento

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)

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_SPECIALIST="___"         # {{3}} specialist name

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_SPECIALIST=$TEST_SPECIALIST"; 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}} specialist name → ${TEST_SPECIALIST}
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_SPECIALIST}" }
      ]
    }

  ]
}
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

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: template is not definedFalta namespace, template o language en el cuerpo de la petición.Envía los tres. Toma namespace y el nombre exacto de la plantilla de GET /templates; language es un objeto: {"policy": "deterministic", "code": "es_MX"}.
200template name (…) does not exist in <language>La plantilla está aprobada en otro idioma que el solicitado.Usa el código de idioma exacto con el que se aprobó la plantilla (por ejemplo, es_MX no es lo mismo que es). Revísalo en GET /templates.
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.

Todos los códigos de error →

Preguntas comunes

Relacionado

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
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.
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.
Atención al cliente
Aviso de cambio en el servicio con WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada cuando el negocio cambia cómo funciona un servicio o proceso para ellos.
Atención al cliente
Confirmar solicitud recibida con WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada justo después de enviar una solicitud o formulario.

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura