Sign inGet started

Mensajes de texto plano de WhatsApp

El texto plano es el tipo de contenido libre más simple: un cuerpo sin adjunto y una vista previa opcional del primer enlace que contenga.

Enviar un mensaje de texto

Configura text.body:
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  text: { body: "Your driver is 2 minutes away." },
});
console.log(msg.id, msg.status);
La forma completa añade preview_url junto con los campos que cualquier envío libre puede incluir:
Ejemplo de código
{
  "to": "+16505551234",
  "from": "+13124495648",
  "text": {
    "body": "Your order shipped: https://example.com/track/A1B2C3",
    "preview_url": true
  },
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "tags": [{ "name": "category", "value": "shipping" }],
  "metadata": { "order_id": "A1B2C3" }
}
from es obligatorio en cada mensaje de servicio: un número que tu espacio de trabajo posee, no uno gestionado por Bird. in_reply_to_message_id cita un mensaje anterior en la misma conversación; consulta Citar un mensaje para saber contra qué se resuelve y qué puede omitir.

Límites

CampoLímiteAplicado por
body1 a 4096 caracteresBird, en la aceptación (422)
preview_urlbooleano, por defecto falseN/A, informativo
Un body compuesto solo de espacios en blanco pasa la validación propia del esquema minLength: 1, pero Bird lo detecta igualmente: un body que queda vacío tras recortar espacios se rechaza con 422 E15015 WhatsAppContentRequired. Un cuerpo de más de 4096 caracteres se rechaza con un 422 simple y sin código de catálogo dedicado.

Leer un mensaje de texto entrante

Un mensaje de texto entrante incluye el mismo campo text.body y nada más en ese tipo. Consulta Recibir mensajes de texto de WhatsApp para la lectura entrante completa, el payload whatsapp.received y qué tener en cuenta.

Límites y casos especiales

  • La ventana de atención al cliente debe estar abierta. El texto plano es un mensaje de servicio, entregable solo dentro de una ventana abierta; consulta la ventana de atención al cliente del hub.
  • preview_url solo afecta al primer enlace, y solo a lo que el cliente del destinatario muestra. Por defecto es false. Actívalo para previsualizar la primera URL en body; una URL posterior en el mismo cuerpo nunca recibe vista previa. Si el cliente del destinatario no puede obtener una vista previa de ese enlace, recurre silenciosamente a un enlace clicable sin formato. Nada en la lectura te indica si la vista previa se renderizó realmente.
  • El markdown de WhatsApp es el renderizado del cliente del destinatario de body, no parte del contrato de API. Bird pasa body sin modificar; no valida, elimina ni codifica *bold*, _italic_, ~strikethrough~ ni el monoespaciado con triple acento grave. Que esos marcadores se rendericen depende enteramente del cliente que abre el mensaje.
  • No se garantiza que un body entrante sea no vacío, a pesar de lo que indica el esquema de lectura. Meta puede reportar un mensaje entrante como "text": {} o con un body vacío, y Bird lo almacena tal cual en lugar de generar un marcador de posición. Esta es una brecha conocida y abierta: no escribas un consumidor que confíe en el required: body del esquema aquí.

Próximos pasos