Enviar un formulario

Sirve para pedirle datos a un contacto dentro de WhatsApp, por ejemplo para una inscripción o una encuesta, con un formulario que ya publicaste.

POST
/contacts/{contact}/message/form

Permiso requerido: conversations:send

Envía a un contacto un formulario de WhatsApp publicado. form_id es el identificador estable del formulario (el mismo en todas sus versiones) y device_id el número de WhatsApp Cloud de tu cuenta por el que sale. text (hasta 1024 caracteres) acompaña al formulario y por defecto es su nombre; button_text (hasta 30 caracteres, sin emojis) es el botón y por defecto es «Abrir» u «Open» según el idioma del usuario de la clave (en inglés «Open»; en español y portugués «Abrir»). Sólo funciona dentro de las 24 horas siguientes al último mensaje del contacto a ese número. Responde 200 con el mensaje en cola (status queued, type whatsapp_form); aceptado no es entregado: el estado final llega por message.status_changed o por GET /contacts/{contact}/messages/{message}, y la respuesta del contacto por whatsapp_form.completed. Responde 404 si el contacto no existe o no es de tu cuenta, o 404 con form_not_found si el formulario no existe en tu cuenta. Responde 422 con device_unavailable si el número no es de tu cuenta o no está conectado, number_not_eligible si no es un número de WhatsApp Cloud que pueda enviar formularios, form_not_published si el formulario no tiene versión publicada, form_not_on_number si no está publicado en ese número, recipient_unreachable si el contacto no tiene teléfono ni identificador de WhatsApp y window_closed si pasaron más de 24 horas. También responde 422 por las guardas de envío y 429 con rate_limited si superas el ritmo del número o del contacto.

Si tu cuenta está bloqueada por el límite de contactos activos, responde 429 con mac_lockout_24h (además del 429 rate_limited del ritmo) y no guarda ningún mensaje ni client_reference. Si Funnelchat no pudo poner el mensaje en cola, la respuesta no es un error: es 200 con el mensaje en estado failed y error.reason not_queued; no salió, así que reintentar no lo duplica.

Autorización

http
headerAuthorizationBearer <clave>

Parámetros de la ruta

contact*integer

Cuerpo del pedido

application/json
  1. body
form_id*integer
Rango1 <= value
device_id*integer
Rango1 <= value
text?string
Largo1 <= length <= 1024
button_text?string
Largo1 <= length <= 30
client_reference?|
Patrón^[\x21-\x7E]{1,64}$
Largolength <= 64

Cuerpo de la respuesta

OK

application/json
  1. response
message*|null
curl -X POST "https://example.com/contacts/0/message/form" \  -H "Content-Type: application/json" \  -d '{    "form_id": 1,    "device_id": 1  }'
{  "message": {    "id": 0,    "contact_id": 0,    "device_id": 0,    "direction": "outbound",    "type": "text",    "status": "sent",    "error": {      "code": 0,      "title": "string",      "reason": "string"    },    "client_reference": "string",    "created_at": "string",    "updated_at": "string"  }}