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

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.

Descripción del caso de uso

Este escenario combina sendReaction y readMessage durante la ventana de atención al cliente de 24 horas. Una reacción de pulgar arriba en el id del mensaje entrante señala acuse sin otra burbuja de texto.

Ejemplo de plantilla

Tu mensaje fue registrado — estamos preparando una respuesta detallada.

WhatsApp Business API for support acknowledgement — reaction and read receipt

Cuándo usarlo

Usa este escenario cuando llega un mensaje del cliente en una sesión de soporte de WhatsApp abierta y necesitas que sepa que fue visto antes de que la respuesta completa esté lista. Encaja con desarrolladores que integran bots de soporte, equipos pequeños que atienden colas de chat y agencias que pulen la UX de soporte al cliente sin sumar otra burbuja de texto por cada acuse.

Menos burbujas de texto en el hilo
sendReaction publica un pulgar arriba citando el id del mensaje entrante del webhook, así el acuse aparece sobre su mensaje en lugar de abrir otro turno conversacional.
Respuesta percibida más rápida
readMessage marca el mensaje entrante como leído en cuanto llega, así el cliente ve la confirmación de lectura mientras tu backend o agente prepara la respuesta detallada.
Sin plantilla ni variables de cuerpo
La reacción y la confirmación de lectura apuntan solo al id del mensaje del payload del webhook — no hace falta plantilla aprobada ni variables de cuerpo para enviar el acuse.
Espacio para la respuesta real después
El acuse se dispara primero dentro de la ventana de sesión de 24 horas; luego tu automatización o agente continúa con la respuesta completa cuando esté lista.

Flujo de trabajo

  1. Estado registrado

    Llega un mensaje del cliente vía webhook con su id de mensaje.

    status: "read"

  2. Construir y enviar

    Tu backend envía una reacción de pulgar arriba citando ese id.

    POST /send_reaction

  3. Capturar evento

    readMessage marca el mensaje entrante como leído.

    phone: "+…"

  4. Entregado

    El cliente ve el acuse mientras se prepara la respuesta detallada.

    entregado

WhatsApp Business API for support acknowledgement — reaction and read receipt

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
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."

Respuesta y estado de entrega

HTTP 2xx y JSON "result": "success" significan que 1MSG aceptó la confirmación de lectura del mensaje.

200 OKRespuesta
{
  "result": "success"
}
  • result

    success cuando se aceptó la confirmación de lectura

Estados de entrega y webhooks →

Errores frecuentes

EstadoRespuesta de la APICausaSolución
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=…
429too many requests. please try laterEl canal superó su límite de envío.Encola los mensajes de tu lado y reintenta con backoff exponencial.
403access deniedEl token es incorrecto, o pertenece a otro canal que el de la URL.Verifica que el token y el channelId de la URL sean del mismo canal.

Todos los códigos de error →

Preguntas comunes

Relacionado

Atención al cliente
Pedir foto o archivo con plantilla de WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada cuando soporte necesita una foto, documento o prueba para procesar un ticket y no hay sesión de 24 horas abierta.
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
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.

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura