Documentación

Respuestas de WhatsApp

Responde con archivos, texto y opciones dentro de la ventana de atención.

En Mensajes → Nuevo mensaje, elige un canal WhatsApp, destinatario y finalidad de servicio. En Formato de WhatsApp, selecciona Respuesta en ventana de atención. Verás las opciones habilitadas por tu proveedor.

Desde Bandeja, toma la conversación y pulsa Opciones de WhatsApp. Puedes elegir un archivo de la biblioteca y preparar ubicación, botones o listas con Meta directa y Twilio. Meta también permite citar un mensaje recibido. Los workflows reconocen los identificadores de botones de ambos proveedores y de listas de Meta; el retorno de selección de listas Twilio sigue pendiente de verificación externa.

La ventana de atención dura 24 horas desde el último mensaje entrante. El servidor vuelve a comprobarla al despachar. Fuera de ella, utiliza una plantilla aprobada. Estas respuestas corresponden a servicio al cliente; las campañas de marketing usan plantillas.

Las ubicaciones recibidas de Meta directa y Twilio aparecen en la bandeja con sus coordenadas y pueden activar el disparador visual Ubicación de WhatsApp.

API directa

Consulta GET /v1/channels/{id}/whatsapp-session?identity_id={uuid} con channels:read para conocer tipos disponibles y vencimiento. Envía POST /v1/messages con Bearer, messages:write, files:read si adjuntas un archivo e Idempotency-Key:

{
  "channel_account_id": "UUID del canal",
  "recipient_identity_id": "UUID del destinatario",
  "purpose": "service",
  "content": {
    "whatsapp_session": {
      "type": "document",
      "file_id": "UUID del archivo"
    }
  }
}

Para texto, usa type: "text" y body. No combines whatsapp_session con plantillas o texto fuera de ese objeto. Los enlaces de entrega los genera talkHero al despachar; la biblioteca conserva el original privado.

Ejemplo del objeto de contenido para botones con Meta directa o Twilio:

{
  "whatsapp_session": {
    "type": "buttons",
    "body": "¿Confirmas tu pedido?",
    "buttons": [
      { "id": "confirmar_pedido", "title": "Confirmar" },
      { "id": "revisar_pedido", "title": "Revisar" }
    ]
  }
}

Con Meta directa puedes agregar reply_to_message_id con el UUID del mensaje recibido que aparece en la bandeja. Debe pertenecer al mismo destinatario y canal. La API no acepta un ID arbitrario del proveedor.

Para responder desde una conversación humana, usa POST /inbox/conversations/{id}/whatsapp con request_id y session. Conserva el mismo ID y contenido al recuperar una respuesta perdida. El mensaje y su entrega se registran juntos.

Archivos y límites

Meta y Twilio admiten imagen JPEG/PNG, video MP4/3GP, PDF, audio MPEG/AAC/AMR/OGG y sticker WebP en este recorrido. Twilio solo entrega texto adicional junto a imágenes; para los demás archivos, envía el texto como otra respuesta. Las opciones del editor reflejan esa diferencia.

El máximo de imagen es 5 MiB. Meta admite video/audio de hasta 16 MiB y PDF de hasta 100 MiB; talkHero limita video/audio/PDF Twilio a 15 MiB. También aplican las cuotas de almacenamiento y tamaño de tu contrato.

OGG debe usar Opus. Usa stickers WebP estáticos de 512 × 512 con transparencia, menores de 100 kB. La biblioteca comprueba formato e integridad; no convierte archivos ni garantiza que toda codificación sea aceptada por el proveedor. Verifica el archivo recibido en tu prueba de cuenta externa.

Si la ventana cierra, desaparece una capacidad o el archivo deja de estar disponible, consulta el estado de la operación antes de crear otra respuesta. Una solicitud incierta conserva su identidad y reserva. Recuperar respuesta vuelve a consultar la misma solicitud.

El parámetro preview_url corresponde únicamente a texto con Meta directa y se puede controlar en el editor. Si se omite, Meta recibe false. Twilio administra esa vista previa automáticamente: omite el parámetro; una configuración explícita se rechaza antes de reservar o enviar. Comportamiento documentado por Twilio.

Botones, listas y ubicación con Twilio

Los botones de sesión admiten hasta tres opciones. Las listas admiten hasta diez filas, cada una con título, identificador y descripción; con Twilio usa una única sección sin título y omite el pie. La ubicación usa latitud, longitud y una etiqueta opcional (name); omite la dirección separada. El editor adapta los controles a estas diferencias. Botones, listas y ubicación.

Ejemplo de lista para Twilio:

{
  "whatsapp_session": {
    "type": "list",
    "body": "¿Qué necesitas consultar?",
    "button": "Ver opciones",
    "sections": [{
      "rows": [{
        "id": "consultar_pedido",
        "title": "Consultar pedido",
        "description": "Revisa el estado de tu pedido"
      }]
    }]
  }
}

La primera respuesta de cada formato puede quedar en cola mientras se prepara. Conserva el ID de la operación y consulta su estado; no crees otra solicitud para el mismo envío. Si el proveedor no confirma la preparación, el mensaje conserva su reserva sin registrar consumo. Puedes cancelarlo mientras siga en cola. Los formatos se reutilizan dentro de la misma cuenta y canal; los textos y las opciones se personalizan en cada mensaje. Las coordenadas de una ubicación forman parte del recurso guardado por Twilio.

Los recursos de sesión se administran internamente y no aparecen en el catálogo de plantillas para campañas. Los formatos enviados desde talkHero se han probado con HTTP local simulado; la habilitación y recepción en cuentas externas se validan por separado.