🚀 CONTENIDO DINÁMICO
El contenido dinámico te permite generar información desde tu propio servidor y mostrarla al usuario dentro de su chat. 📡
Esta función es compatible con todos los canales. Usas un formato único y nuestra plataforma convierte automáticamente tu mensaje en tiempo real para entregarlo al usuario.
⚠️ Nota Importante: Para usar contenido Dinámico necesitar usar un modelo GPT 5 superior, Nosotros recomendamos GPT 5 mini para tu Bot.
⚙️ Formato de Respuesta
El formato básico que espera WHAPIFY es el siguiente:
{
"messages": [],
"actions": []
}- messages: Contiene los mensajes que se envían a los contactos. Puedes enviar cualquier mensaje soportado por los bots de Messenger.
- Headers: WHAPIFY envía un encabezado
X-USER-IDen cada solicitud que hace a tu servidor. - quick_replies: Siempre es opcional.
📨 Ejemplos de Mensajes
1. Enviar un mensaje de texto simple
{
"messages": [
{
"message": {
"text": "Hello world",
"quick_replies":[]
}
}
]
}
2. Enviar más de un mensaje a la vez
{
"messages": [
{
"message": {
"text": "Hello world"
}
},
{
"message": {
"text": "This is the second Message",
"quick_replies":[]
}
}
]
}3. Enviar un mensaje de texto con botones
El mensaje de texto puede contener hasta 3 botones. El título de cada botón puede tener hasta 20 caracteres.
Para enviar un flujo cuando el usuario hace clic en un botón, usa el Flow ID (ID del flujo) como payload del botón.
{
"messages": [
{
"message": {
"attachment": {
"payload": {
"buttons": [
{
"title": "Open Website",
"type": "web_url",
"url": "your_URL"
},
{
"title": "Send FLow",
"payload": "FLOW_OR_STEP_ID",
"type": "postback"
},
{
"title": "Call Number",
"type": "phone_number",
"payload": ""
}
],
"template_type": "button",
"text": "Hello world"
},
"type": "template"
},
"quick_replies":[]
}
}
]
}Payload: Puedes usar cualquier ID de flujo o paso (step ID) como payload. Más adelante mostraremos cómo usar acciones como payloads.
4. Enviar un mensaje con respuestas rápidas (Quick Replies)
Las respuestas rápidas se pueden añadir a cualquier tipo de mensaje (texto, archivo, galería…). Facebook permite adjuntar un máximo de 11 respuestas rápidas. El payload funciona igual que en los botones.
{
"messages": [
{
"message": {
"text": "Hello world",
"quick_replies":[
{
"content_type": "text",
"title": "Quick Reply 1",
"payload": "FLOW_OR_STEP_ID"
},
{
"content_type": "text",
"title": "Any Text Here",
"payload": "FLOW_OR_STEP_ID"
}
]
}
}
]
}5. Enviar imagen, video, audio o archivo
Usa la estructura a continuación. Solo cambia el media_type a video, audio, o file según necesites. El campo «URL» debe ser el enlace directo a tu archivo.
{
"messages": [
{
"message": {
"attachment": {
"type": "image",
"payload": {
"url": ""
}
},
"quick_replies":[]
}
}
]
}6. Enviar una Tarjeta (Card)
El título y subtítulo de la tarjeta pueden tener hasta 80 caracteres. Valores posibles para image_aspect_ratio: horizontal o square (cuadrado).
{
"messages": [
{
"message": {
"attachment": {
"payload": {
"elements": [
{
"title": "Card Title",
"subtitle": "Card Subtitle",
"image_url": "image_url"
}
],
"template_type": "generic",
"image_aspect_ratio":"horizontal"
},
"type": "template"
},
"quick_replies":[]
}
}
]
}7. Enviar una Tarjeta con botones
Una tarjeta puede contener hasta 3 botones.
{
"messages": [
{
"message": {
"attachment": {
"payload": {
"elements": [
{
"title": "Card Title",
"subtitle": "Card Subtitle",
"image_url": "image_url",
"buttons": [
{
"title": "Button Label",
"type": "web_url",
"url": "your_URL"
},
{
"title": "Button Label",
"payload": "FLOW_OR_STEP_ID",
"type": "postback"
},
{
"title": "Button Label",
"type": "phone_number",
"payload": "+your_phone_number"
}
]
}
],
"template_type": "generic",
"image_aspect_ratio":"horizontal"
},
"type": "template"
},
"quick_replies":[]
}
}
]
}8. Enviar una Galería
Básicamente, una galería es un conjunto de tarjetas. Puede contener hasta 10 tarjetas. También puedes añadir botones a cada tarjeta individual.
{
"messages": [
{
"message": {
"attachment": {
"payload": {
"elements": [
{
"title": "Card Title 1",
"subtitle": "Card Subtitle 1",
"image_url": "image_url 1",
"buttons": []
},
{
"title": "Card Title 2",
"subtitle": "Card Subtitle 2",
"image_url": "image_url 2",
"buttons": []
}
],
"template_type": "generic",
"image_aspect_ratio":"horizontal"
},
"type": "template"
},
"quick_replies":[]
}
}
]
}🟢 Enviar mensajes soportados solo por WhatsApp
WhatsApp soporta muchos tipos de mensajes que los bots de Messenger no (como Listas, Contactos, Ubicaciones o Catálogos). WHAPIFY te permite enviar cualquier mensaje soportado por la API de WhatsApp.
Solo necesitas proveer la misma estructura de mensaje descrita en la documentación oficial de WhatsApp. Nosotros configuraremos el parámetro «To» automáticamente.
{
"messages":[
{
"messaging_product":"whatsapp",
"recipient_type": "individual",
"to": null,
"type": "interactive",
"interactive": {
"type": "button",
"body": {
"text": "ANY TEXT"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "FLOW_OR_STEP_ID",
"title": "BUTTON_TITLE_1"
}
},
{
"type": "reply",
"reply": {
"id": "FLOW_OR_STEP_ID",
"title": "BUTTON_TITLE_2"
}
}
]
}
}
}
]
}⚡ Ejecutar acciones mientras envías mensajes
Tu respuesta API puede instruir a nuestro sistema para ejecutar acciones automáticamente en el chatbot.
Añadir Etiqueta (Add Tag)
{
"messages": [],
"actions": [
{
"action": "add_tag",
"tag_name": "..."
}
]
}Remover Etiqueta (Remove Tag)
{
"messages": [],
"actions": [
{
"action": "remove_tag",
"tag_name": "..."
}
]
}Establecer Campo Personalizado (Set Custom Field)
Además de aceptar cualquier nombre de campo personalizado, esta acción también te permite cambiar campos del sistema como phone, email, full_name, first_name, last_name.
{
"messages": [],
"actions": [
{
"action": "set_field_value",
"field_name": "...",
"value": ""
}
]
}Borrar Campo Personalizado (Unset Custom Field)
{
"messages": [],
"actions": [
{
"action": "unset_field_value",
"field_name": "..."
}
]
}Enviar Flujo (Send Flow)
Para obtener el ID del flujo, ve a tu lista de flujos, haz clic en los 3 puntos y selecciona «Get Link». El Flow ID es el número incluido en ese enlace (siempre es numérico).
{
"messages": [],
"actions": [
{
"action": "send_flow",
"flow_id": "..."
}
]
}Transferir conversación a Humano/Bot
{
"messages": [],
"actions": [
{
"action": "transfer_conversation_to",
"value": "human"
}
]
}Asignar conversación a un Admin
{
"messages": [],
"actions": [
{
"action": "assign_conversation",
"admin_id": "..."
}
]
}Desasignar conversación de un Admin
{
"messages": [],
"actions": [
{
"action": "unassign_conversation"
}
]
}🔗 Combinar múltiples acciones
Puedes combinar varias acciones en una sola solicitud para ejecutarlas simultáneamente. Por ejemplo, establecer un campo personalizado y enviar un flujo a la vez:
{
"messages": [],
"actions": [
{
"action": "set_field_value",
"field_name": "...",
"value": ""
},
{
"action": "send_flow",
"flow_id": "..."
}
]
}🔀 Usar acciones como payload de Botones y Quick Replies
Este es el formato para usar una acción dentro de un botón. Como el payload debe ser una cadena de texto (string), necesitas convertir tu objeto de acciones a una cadena JSON.
📝 Nota: Si usas PHP, puedes usar la función json_encode para obtener esta representación.
Objeto de acción original:
{
"actions": [
{
"action": "send_flow",
"flow_id": "..."
}
]
}Implementación en el botón (JSON String):
{
"messages": [
{
"message": {
"attachment": {
"payload": {
"buttons": [
{
"title": "Click Here",
"payload": "{\"actions\":[{\"action\":\"send_flow\",\"flow_id\":\"FLOW_OR_STEP_ID\" } ]}",
"type": "postback"
}
],
"template_type": "button",
"text": "Hello world"
},
"type": "template"
},
"quick_replies":[]
}
}
]
}🎯 Conclusión
El contenido dinámico es una herramienta para usuarios avanzados que permite una flexibilidad total.
Con WHAPIFY, puedes integrar tu propia infraestructura y lógica de negocio directamente en el chat, creando experiencias verdaderamente a medida. 🚀
