Dos Modalidades de Integración: Puente API Directo o Flujos en CLink Panel
Elija cómo integrar la línea oficial de WhatsApp de su empresa según su arquitectura: conectándose directamente a nuestra API Gateway (sin pasar por CLink Panel) o gestionando la operación completa desde CLink Panel con Linki IA.
Opción 1 · API Directa (Sin Panel) Puente Meta ↔ Su Receptor
Conectarse directo al API de CLink como puente con Meta
Ideal si usted ya tiene su propio software, CRM, ERP o bot propio. Su sistema envía mensajes con POST /v1/messages y recibe cada mensaje o estado entrante de WhatsApp en su propio receptor vía Webhook (X-ChainSoft-Signature).
Ir a la documentación de API Directa→
Opción 2 · CLink Panel + Linki IA Flujos + Bandeja + Webhooks
Utilizar CLink Panel para flujos, agentes humanos y Linki IA
Ideal si desea diseñar flujos visuales sin código, enviar campañas con Excel, atender clientes con múltiples asesores en vivo y dejar que Linki IA consulte su API únicamente en los pasos que lo requieran.
Ir a la guía de CLink Panel y Flujos→
Opción 1 · 1.1 Puente Directo & Gestión de Claves Sin pasar por el editor de flujos
¿Dónde obtener sus claves de API Directa y cómo resetearlas si las extravía?
Si su empresa ya cuenta con su propio software, ERP, sistema de turnos o motor conversacional y solo necesita que CLink sea el puente oficial de alta disponibilidad entre Meta y su servidor receptor, puede autenticarse directamente contra nuestro Gateway REST mediante una llave de servidor (X-Service-Key).
1. ¿Dónde se ven las claves?
Ingrese a CLink Panel → botón «API Directa» en la barra principal. Allí encontrará el phoneNumberId de su línea, su CallbackSecret y el botón «Generar Clave API Directa» para emitir su X-Service-Key (clink_live_...).
2. Visualización Única (SHA-256)
Por seguridad bancaria, CLink no guarda su X-Service-Key en texto plano sino únicamente su huella irreversible SHA-256. La clave completa se muestra una sola vez al generarla para que la copie en las variables de entorno de su servidor.
3. ¿Cómo recuperar o resetear?
Si olvidó guardar la clave o necesita rotarla, entre a CLink Panel → API Directa y pulse «Regenerar / Resetear Clave API». El sistema invalidará la llave anterior al instante y le mostrará en pantalla una nueva X-Service-Key lista para copiar.
Opción 1 · 1.2 Envío de Mensajes (POST /v1/messages) Texto, Plantillas, Botones, Listas y Archivos
Cómo enviar mensajes salientes desde su sistema (POST /v1/messages)
Envíe una petición POST /v1/messages con la cabecera X-Service-Key y opcionalmente Idempotency-Key (para evitar duplicados en reintentos de red). El campo to debe ir en formato internacional E.164 con signo más (ej. +573001234567). Seleccione el tipo de mensaje (kind) para ver el JSON exacto:
// POST /v1/messages
// Headers:
// X-Service-Key: <su_service_key>
// Idempotency-Key: msg-orden-9821 (opcional)
{
"phoneNumberId": "10592837465001",
"to": "+573001234567",
"kind": "text",
"reference": "ORD-9821",
"content": {
"text": "Hola Camila, su pedido #9821 ya salió a reparto y llegará en 20 minutos."
}
}
Respuesta inmediata (202 Accepted):
El Gateway registra el mensaje en cola de despacho y le devuelve el messageId único para trazabilidad. El campo opcional reference (máx. 120 caracteres) le permite asociar el envío con el ID de orden, cita o factura de su sistema.
Opción 1 · 1.3 Webhook hacia su Receptor (X-ChainSoft-Signature)
Cómo recibe su servidor los mensajes entrantes y estados de WhatsApp
Cuando un cliente escribe a su línea de WhatsApp, pulsa un botón interactivo, envía un archivo o cambia el estado de un mensaje enviado (kind: "status"), el puente de CLink realiza un POST hacia el CallbackUrl configurado en su canal:
POST hacia su CallbackUrl (Receptor del Cliente)
// POST hacia el CallbackUrl de su servidor
// Cabecera de seguridad enviada por CLink Gateway:
// X-ChainSoft-Signature: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
{
"eventId": "01964a92-1b80-7d10-9c44-001122334455",
"phoneNumberId": "10592837465001",
"displayNumber": "+573237818144",
"from": "+573001234567",
"kind": "text",
"reference": "CITA-4410",
"receivedAt": "2026-10-18T19:20:15.0000000+00:00",
"payload": {
"id": "wamid.HBgMNTczMDAxMjM0NTY3FQIAEhgg...",
"from": "573001234567",
"timestamp": "1760815215",
"type": "text",
"text": {
"body": "Sí, confirmo mi asistencia para mañana."
}
}
}
Verificación criptográfica de firma (X-ChainSoft-Signature):
Si su canal tiene configurado un CallbackSecret, cada petición lleva la cabecera X-ChainSoft-Signature: sha256=<hex>, calculada con HMAC-SHA256 sobre el cuerpo JSON crudo (raw body). Valores posibles de kind: text, interactive, image, document, audio y status.
Opción 1 · 1.4 Endpoints Complementarios del Gateway
Consulta de Estado, Plantillas Meta, Descarga de Multimedia y Linki LLM Directo
Método & Ruta
Cabecera
Descripción y Respuesta
GET /v1/messages/{id}
X-Service-Key
Devuelve el estado actual del envío (queued, sent, delivered, read, failed), providerMessageId (wamid) y lastError.
GET /v1/templates?phoneNumberId=...
X-Service-Key
Lista en vivo las plantillas aprobadas en el WABA de su línea (name, language, status, body).
GET /v1/media/{mediaId}?phoneNumberId=...
X-Service-Key
Descarga el binario (application/octet-stream) de cualquier imagen, PDF o audio que un cliente haya enviado a su línea.
POST /v1/llm/complete
X-Service-Key
Permite invocar directamente el motor de lenguaje de Linki desde su backend para extraer JSON o redactar respuestas con baja latencia.
POST /v1/knowledge/search
X-Service-Key
Busca fragmentos semánticos en la Base de Conocimiento RAG de su cuenta (query, scope, topK) con score de relevancia.
POST /v1/knowledge/ask
X-Service-Key
Recupera los fragmentos de la base de documentos y genera la respuesta oficial con Linki IA sin inventar datos.
Opción 1 · 1.5 Llamadas de Voz por API (/v1/voice) Exclusivo CLink + Linki IA Premium
Cómo disparar llamadas telefónicas individuales o por lote desde su propio sistema
Si su cuenta tiene una línea de voz asignada y el plan CLink + Linki IA Premium, puede iniciar llamadas salientes con POST /v1/voice/calls o programar un grupo de llamadas a una lista con POST /v1/voice/batches. Si omite el campo mission, Linki sigue automáticamente el guion del flujo de voz activo en su cuenta.
1. Llamada individual (POST /v1/voice/calls)
// POST /v1/voice/calls
// Header: X-Service-Key: <su_service_key>
{
"toPhone": "573001234567",
"person": "Camila Gómez",
"mission": "Saluda en nombre de Clínica Aurora, confirma su cita de dermatología para mañana a las 10:30 a. m. y pregunta si podrá asistir.",
"metadata": {
"citaId": "CITA-4410",
"sede": "Chicó Norte",
"whatsappFallbackTemplate": "recordatorio_cita_medica",
"whatsappFallbackLanguage": "es",
"whatsappFallbackParamCount": 2
},
"idempotencyKey": "call-cita-4410"
}
2. Grupo por lista (POST /v1/voice/batches)
// POST /v1/voice/batches
// Header: X-Service-Key: <su_service_key>
{
"audienceId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Confirmación de citas viernes",
"mission": "Saluda con amabilidad, confirma la cita programada y pregunta si asistirá o necesita reprogramar.",
"metadata": {
"whatsappFallbackTemplate": "recordatorio_cita_medica",
"whatsappFallbackLanguage": "es",
"whatsappFallbackParamCount": 2
},
"scheduledAt": "2026-10-30T14:00:00-05:00"
}
Método & Ruta
Descripción y Respuesta
GET /v1/voice/calls/{id}
Devuelve el estado actual (queued, dialing, in_progress, completed, no_answer, failed, canceled), analysisSummary, recordingUrl y transcript.
POST /v1/voice/calls/{id}/cancel
Cancela una llamada en cola o cuelga una llamada que aún esté timbrando o en curso.
GET /v1/voice/batches/{id}
Consulta el avance de un grupo de llamadas por lista y el estado individual de cada llamada.
POST /v1/voice/batches/{id}/cancel
Detiene el grupo y cancela todas las llamadas que sigan pendientes en la cola.
POST /v1/voice/batches/{id}/retry-unanswered
Vuelve a poner en cola únicamente las llamadas del grupo que terminaron sin respuesta (no_answer) o fallidas (failed).
Opción 2 · 2.1 Resumen del Panel CLink
¿Cómo funciona CLink con WhatsApp Cloud API Oficial?
CLink conecta la línea oficial de WhatsApp de su empresa directamente a la infraestructura en la nube de Meta (WhatsApp Business Platform), eliminando el riesgo de bloqueos o desconexiones por escaneo de códigos QR no oficiales.
1. Flujos Visuales
Diseñe el recorrido del cliente con pasos conectados: saludos, menús de botones, listas interactivas, envío de PDFs/imágenes y conexión con su propio sistema.
2. Motor Linki IA 24/7
En cuentas CLink Premium, Linki responde preguntas abiertas usando el contexto oficial de su negocio, extrae datos en JSON y traduce las respuestas de su API para el cliente.
3. Bandeja Multi-Agente
En cualquier momento un asesor humano puede pulsar «Tomar chat», pausar el flujo automático, agregar notas internas privadas o transferir el caso a otro departamento.
2.2 Tipos de Flujo
Flujo de Bienvenida, Flujo de Campaña y Flujo de Voz
En la pestaña «Flujos» de CLink usted puede crear tres clases de automatización según el canal y quién inicie la conversación:
Bienvenida (WhatsApp)
Entrante 24h
Se activa automáticamente cuando una persona le escribe por primera vez a su línea de WhatsApp.
▪ Primer mensaje libre: No requiere plantilla aprobada por Meta.
▪ Único activo: Atiende las 24 horas del día.
Campaña (WhatsApp)
Saliente
Se utiliza cuando su empresa le escribe a una lista de contactos desde «Envío» (recordatorios, despachos, avisos).
▪ Inicia con Plantilla: El primer mensaje usa una plantilla aprobada en Meta.
▪ Continuación libre: Al responder el cliente, continúa con botones, archivos o IA.
Flujo de Voz (Linki Voz)
Llamadas IA
Define el saludo, las preguntas y las acciones que Linki ejecuta al atender o realizar llamadas telefónicas en su línea de voz.
▪ Guion conversacional: Convierte sus pasos en una conversación telefónica natural.
▪ Acciones al colgar: Puede crear tarjetas en Desk o enviar los datos a su sistema.
2.3 Constructor Visual
Tipos de Paso en el Editor de Flujos
Arrastre y conecte pasos como un mapa. Cada uno hace una sola cosa: hablarle al cliente, pedirle datos, mostrar opciones, abrir un formulario, consultar su sistema o terminar la conversación.
Mensaje
Envía un texto informativo y pasa al siguiente paso sin esperar respuesta.
Pregunta con opciones
Espera la respuesta del cliente. De 1 a 3 opciones = botones; de 4 a 10 = lista desplegable.
Archivo
Envía PDF, imagen, Word o Excel (con pie opcional) y continúa automáticamente.
Productos / servicios
Consulta hasta 10 ítems en su API y los muestra como lista en WhatsApp (catálogo, citas, planes, etc.).
Formulario WhatsApp
Abre un formulario nativo de WhatsApp (diseñado en Meta) para capturar varios datos de una vez. Detalle en la sección siguiente.
Conectar con otro sistema
Envía las respuestas a su CRM/ERP/API. Si su API devuelve datos, Linki puede redactar la respuesta al cliente (Premium).
Linki (agente IA)
En Premium, Linki conversa en lenguaje libre según la misión del paso y su base de conocimiento, sin inventar datos.
Guardar en Desk / Fin
Desk crea una tarjeta en el tablero con lo capturado (sin escribirle al cliente). Fin envía la despedida y cierra la sesión automática.
2.4 Formularios WhatsApp
Cómo usar un formulario nativo dentro del flujo
Un Formulario WhatsApp es una pantalla (o varias) que el cliente completa dentro de WhatsApp: datos de contacto, solicitud de cita, pedido, encuesta, etc. Usted lo diseña y publica en WhatsApp Manager → Flujos; en CLink solo lo enlaza a un paso.
Formulario fijo (recomendado al empezar)
Las pantallas ya están armadas en Meta. El cliente las llena y, al enviar, el flujo de CLink continúa por «Qué sigue después». Ideal si no necesita cupos ni listas en vivo.
▪ Pegue el número del formulario, el texto del botón y el mensaje.
▪ Deje apagadas las opciones avanzadas.
Datos al momento (avanzado)
Mientras el cliente llena el formulario, WhatsApp consulta a CLink para saber qué pantalla mostrar y con qué datos (horarios libres, catálogo, confirmación). Use esto solo si necesita información en vivo.
▪ En el editor: Opciones avanzadas → Actualizar datos mientras el cliente lo llena.
▪ Indique la primera pantalla (como se llama en Meta).
▪ Opcional Premium: Conectar con mi sistema para decidir pantallas siguientes.
Checklist rápido
Cree y publique el formulario en WhatsApp Manager.
En CLink, agregue el paso Formulario WhatsApp y pegue el número, el botón y el mensaje.
Si usa datos al momento: en Meta el formulario debe estar en modo «con servidor», con la prueba de conexión en verde (ChainSoft prepara el cifrado del número desde soft-manage).
Envíe una prueba, ábralo en WhatsApp, complete y verifique que el flujo siga al paso enlazado.
Para desarrolladores: si conecta «Mi sistema», su API recibe purpose: "flow_data_exchange" y debe responder con screen y data. Ver sección 4.4.
2.5 Plantillas Meta & Audiencias Excel
Cómo usar Variables Dinámicas y Cargar Listas en Excel / CSV
Cuando una plantilla aprobada en Meta incluye variables como {{1}}, {{2}} o {{3}}, CLink las reemplaza automáticamente con las columnas de su archivo Excel o CSV cargado en «Audiencias»:
Columna en Excel / CSV
Variable en Plantilla
Ejemplo de Valor
Regla en CLink
telefono
Número destino
573001234567
Obligatorio con código de país (11 a 15 dígitos, ej. 57 para Colombia).
nombre
{{1}}
Ana María
Si viene vacío en el Excel, usa el valor por defecto del paso (ej. «cliente»).
referencia
ID Interno
FAC-9821
Viaja hacia su API en contact.reference y aparece en reportes.
dato2 ... dato10
{{2}} ... {{10}}
Martes 3:00 PM
Rellena variables adicionales de la plantilla (fecha, valor, link, doctor).
2.6 Operación en Vivo
Bandeja Multi-Agente en Tiempo Real e Historial Auditable
▪ Tomar y devolver el control al Bot: Cuando un agente pulsa «Tomar chat», el flujo automático y Linki se pausan para ese contacto. Al pulsar «Devolver al bot», el flujo retoma el control.
▪ Bloqueo de colisiones en tiempo real: Si dos agentes intentan tomar el mismo chat en el mismo milisegundo, CLink garantiza mediante control de concurrencia que solo el primero lo tome y notifica al segundo al instante.
▪ Notas Internas y Respuestas Rápidas (/): Los agentes pueden dejar notas privadas que nunca se envían por WhatsApp, clasificar el chat con etiquetas y escribir /atajo para insertar respuestas rápidas preconfiguradas.
▪ Descanso post-cierre (24 horas): Cuando una conversación termina su flujo normal, entra en reposo durante 24 horas para no reiniciar el saludo de bienvenida si el cliente solo responde «¡Muchas gracias!». Si un agente cierra el chat manualmente, queda listo de inmediato para futuras consultas.
2.7 Llamadas Salientes (Linki Voz) Individual o por Lista · Plan Premium
Cómo hacer que Linki llame por teléfono a una persona o a toda una lista de contactos
Desde el módulo «Llamada saliente» en CLink Panel, Linki puede realizar llamadas telefónicas en español natural para confirmar citas, recordar vencimientos de cartera, avisar entregas o realizar encuestas de atención:
1. A una persona o a una lista completa
Elija «A una persona» seleccionando el indicativo de país y el teléfono, o elija «A una lista» para llamar a una Audiencia cargada desde Excel. Los contactos marcados con «No enviar» se excluyen automáticamente.
2. Flujo de voz activo o instrucción puntual
Puede indicar que Linki siga el guion de su Flujo de voz activo o escribir una instrucción rápida para esa llamada (con plantillas de 1 clic para confirmar citas, recordar pagos o avisar pedidos).
3. Protección de horario hábil (8:00 a. m. – 8:00 p. m.)
Para cuidar la experiencia de sus clientes, los grupos de llamadas por lista solo timbran dentro de la ventana de horario hábil (por defecto 8:00 a. m. a 8:00 p. m. hora Colombia) y respetan el límite de llamadas simultáneas de su cuenta.
4. Grabación, resumen, reintentos y Excel
Al finalizar cada llamada, el panel muestra el reproductor de audio integrado, el resumen ejecutivo, la transcripción completa, un botón de 1 clic para volver a llamar a quienes no contestaron y la descarga del reporte completo en Excel (.xlsx).
5. Omnicanalidad Voz → WhatsApp (Respaldo automático si no contestan)
Puede activar la casilla «Seguimiento por WhatsApp si no contestan la llamada» y elegir una plantilla aprobada de Meta. Si el teléfono del cliente está ocupado o no responde la llamada, CLink le envía automáticamente el mensaje por WhatsApp completando su nombre ({{1}}) y los datos de la lista.
2.1 Contexto del Negocio (aiContext) Exclusivo CLink + Linki IA Premium
Cómo entrenar el «Contexto del Negocio» en cada Flujo
En el panel izquierdo del editor de flujos encontrará el recuadro «Contexto del negocio (Linki IA)». Todo lo que escriba allí (hasta 8.000 caracteres por flujo) actúa como la Base de Conocimiento Oficial que Linki consulta cuando un cliente escribe una pregunta abierta en lugar de pulsar un botón.
Ejemplo recomendado de Contexto del Negocio (aiContext)
Empresa: Clínica Dermatológica Aurora.
Horarios de atención: Lunes a Viernes de 8:00 AM a 6:00 PM, Sábados de 8:00 AM a 1:00 PM. Domingos y festivos cerrado.
Sedes:
- Sede Norte: Calle 100 #15-20, Consultorio 402 (Parqueadero gratuito por 1 hora).
- Sede Chapinero: Carrera 13 #54-10.
Tarifas vigentes:
- Consulta de valoración dermatológica: $120.000 COP.
- Limpieza facial profunda: $160.000 COP.
Medios de pago: PSE, Nequi, Daviplata, tarjetas débito/crédito y efectivo en sede.
Política de cancelación: Se puede reprogramar sin costo avisando con mínimo 4 horas de anticipación.
2.2 Blindaje Cero-Alucinaciones & Memoria
Cómo responde Linki sin inventar información y cómo usa la rama «Otra respuesta»
Cuando una conversación se encuentra en un paso de tipo «Pregunta con opciones» y el cliente escribe texto libre que no coincide con ninguno de los botones:
Memoria de Conversación (Transcript): Linki recibe automáticamente los últimos turnos de la charla junto con la pregunta actual, las opciones válidas y el Contexto del Negocio (aiContext) del flujo.
Regla Cero-Alucinaciones: Si el cliente pregunta por un dato que está en el Contexto del Negocio (ej. «¿A qué hora cierran los sábados y cuánto vale la valoración?»), Linki le responde con precisión en 2 a 4 oraciones y le recuerda amablemente elegir una de las opciones del paso actual para continuar.
Si preguntan algo no incluido en el contexto: Linki tiene estrictamente prohibido adivinar precios, descuentos, stock o políticas no escritas. Le indicará con calidez que no dispone de ese dato exacto y lo invitará a elegir una opción o hablar con un asesor.
3.1 Seguridad, Autenticación & Idempotencia
Requisitos Técnicos para Conectar su Servidor o API con CLink
1. HTTPS Público & Protección SSRF
Todo destino configurado en CLink debe usar HTTPS (https://) con un dominio público válido. Por seguridad, CLink rechaza direcciones IP privadas (127.0.0.1, localhost, 10.x, 192.168.x).
2. Autenticación (API Key o Basic)
Puede elegir API Key (enviada en la cabecera Authorization: Bearer <su_clave> o en la cabecera personalizada que defina) o Usuario y Contraseña (Authorization: Basic <base64>). Las credenciales se almacenan cifradas con AES-GCM.
3. Cabecera Idempotency-Key
Cada petición POST incluye la cabecera Idempotency-Key: <uuid-deterministico> calculada a partir del ID de la conversación y el ID del paso, evitando registros duplicados en su base de datos.
4. Timeout y Reintentos Automáticos
Su servidor dispone de hasta 8 segundos para responder con código 2xx (200 OK / 201 Created). Si responde 408, 429, 502, 503 o 504, CLink reintenta hasta 3 veces con backoff progresivo.
3.2 Payload JSON de Salida (POST)
Estructura del JSON que CLink envía a su API en un paso «Conectar sistema»
Cuando la conversación llega a un paso de integración (webhook), CLink realiza una petición POST con Content-Type: application/json. Si la cuenta tiene Linki IA Premium, el campo data contiene el objeto JSON limpio extraído por Linki según las instrucciones del paso:
POST https://api.suempresa.com/clink/webhook
{
"version": "v1",
"id": "8f14e45f-ceea-467a-a8e4-5c19b4a28910",
"sentAt": "2026-10-18T19:30:00.0000000+00:00",
"flow": {
"id": "3c91a720-6f12-4b88-911e-77a2c8910211",
"name": "Agendamiento y Pedidos"
},
"step": {
"id": "step-webhook-orden",
"title": "Conectar con ERP"
},
"contact": {
"phone": "573001234567",
"name": "Camila Gómez",
"reference": "CLI-9021"
},
"data": {
"especialidad": "Dermatología",
"fecha_deseada": "2026-10-20",
"jornada": "mañana",
"documento": "1020304050"
},
"replies": [
{
"stepId": "step-ask-servicio",
"title": "Especialidad",
"prompt": "¿Para qué especialidad desea consultar disponibilidad?",
"answer": "Necesito cita de Dermatología para el martes por la mañana, mi cédula es 1020304050",
"optionId": null
}
]
}
3.3 Respuesta Bidireccional en Tiempo Real Linki IA + API Externa
Cómo hacer que Linki consulte su API y le responda al cliente en WhatsApp
En planes CLink + Linki IA Premium, el paso «Conectar con otro sistema» es bidireccional: CLink lee el cuerpo JSON o texto que su API devuelve en la respuesta HTTP 200 OK (hasta 8.000 caracteres) y decide automáticamente entre dos modos:
Opción A: Su API devuelve datos para el cliente
Linki redacta y envía el mensaje por WhatsApp
Si su endpoint devuelve disponibilidad de citas, estado de un pedido, saldo en cartera o precios, Linki toma únicamente esos datos y le envía la respuesta al cliente en WhatsApp antes de pasar al siguiente paso del flujo:
Respuesta 200 OK de su API
{
"disponible": true,
"profesional": "Dra. Laura Martínez",
"sede": "Sede Chicó - Calle 94 #15-32",
"horarios_disponibles": ["09:00 AM", "10:30 AM", "11:15 AM"],
"valor_consulta": "$130.000 COP",
"preparacion": "Asistir 15 minutos antes con documento de identidad."
}
Lo que Linki le envía al cliente en WhatsApp:«Con la Dra. Laura Martínez en la Sede Chicó (Calle 94 #15-32) tenemos disponibilidad a las 09:00 AM, 10:30 AM y 11:15 AM. El valor de la consulta es de $130.000 COP; recuerde asistir 15 minutos antes con su documento.»
Opción B: Su API solo guarda el registro (Silencioso)
CLink continúa en silencio sin enviar mensaje extra
Si usted solo quería registrar un prospecto o guardar un pedido en su CRM sin que Linki envíe un mensaje adicional en ese paso, basta con devolver un cuerpo vacío o un acuse técnico estándar:
Respuesta 200 OK silenciosa
{
"ok": true,
"status": "received"
}
Comportamiento en CLink: Linki detecta que es una confirmación técnica (SKIP), no envía texto intermedio al cliente y avanza de inmediato al siguiente paso conectado en su tablero.
4.4 Formularios con datos al momento
Qué recibe su API cuando el formulario pregunta la siguiente pantalla (purpose: "flow_data_exchange")
Solo aplica si en el paso Formulario WhatsApp activó «Actualizar datos mientras el cliente lo llena» y eligió un webhook en Conectar con mi sistema (Premium). CLink hace un POST síncrono a su URL. Su respuesta debe ser un objeto JSON con al menos screen (nombre de la pantalla en Meta) y, si aplica, data (valores para rellenar esa pantalla).
▪ meta.action suele ser INIT (al abrir) o el evento de avance del formulario.
▪ Si su API falla o no devuelve screen, CLink cierra el formulario de forma segura para no dejar al cliente trabado.
▪ El resultado final del formulario también llega al chat cuando el cliente lo envía; el flujo sigue por «Qué sigue después».
4.1 API de Catálogo Dinámico
Cómo devolver Productos o Servicios Dinámicos (purpose: "catalog")
Cuando utiliza un paso de tipo «Productos» (catalog), CLink envía un POST a su endpoint con "purpose": "catalog". Su API debe responder con un arreglo items (o directamente un arreglo JSON) de entre 1 y 10 opciones. Cada opción admite id (hasta 200 caracteres) y title o name (hasta 24 caracteres por requisito oficial de listas en WhatsApp):
Código Listo para Copiar en su Servidor (Node.js, .NET 8 y Python)
Seleccione el lenguaje de su backend para copiar un endpoint que valida la clave, atiende catálogo, formularios con datos al momento (flow_data_exchange) y respuestas bidireccionales a Linki IA:
import express from 'express';
const app = express();
app.use(express.json());
// Endpoint conectado en CLink -> Paso "Conectar con otro sistema"
app.post('/api/clink/webhook', async (req, res) => {
// 1. Validar API Key configurada en CLink
const auth = req.headers['authorization'];
if (auth !== `Bearer ${process.env.CLINK_WEBHOOK_KEY}`) {
return res.status(401).json({ error: 'No autorizado' });
}
// 2. Clave de idempotencia única por conversación + paso
const idempotencyKey = req.headers['idempotency-key'];
const { purpose, contact, data, replies } = req.body;
// Caso A: Paso "Productos" (lista dinámica, máx. 10 ítems, título <= 24 chars)
if (purpose === 'catalog') {
return res.status(200).json({
items: [
{ id: 'CITA-GEN', title: 'Consulta general' },
{ id: 'CITA-SEG', title: 'Seguimiento' },
{ id: 'CITA-DOM', title: 'Visita a domicilio' }
]
});
}
// Caso B: Formulario WhatsApp con datos al momento (responde screen + data)
if (purpose === 'flow_data_exchange') {
const action = req.body?.meta?.action;
if (action === 'INIT') {
return res.status(200).json({
screen: 'WELCOME_SCREEN',
data: {}
});
}
return res.status(200).json({
screen: 'CONFIRM_SCREEN',
data: {
horarios: ['10:00', '11:30', '15:00']
}
});
}
// Caso C: Paso "Conectar con otro sistema" (JSON extraído por Linki en 'data')
console.log('Cliente:', contact.phone, 'Datos extraídos por Linki:', data);
// Si devuelve datos del negocio, Linki IA (Premium) le redacta la respuesta en WhatsApp:
return res.status(200).json({
estado_pedido: 'En preparación',
responsable: 'Carlos Pérez',
tiempo_estimado: '20 minutos',
total_pagar: '$54.900 COP'
});
});
app.listen(3000);
¿Necesita acompañamiento conectando su ERP, POS o software médico?
Nuestro equipo de ingeniería en Bogotá lo acompaña en la configuración de sus Webhooks, validación de plantillas en Meta y afinación del contexto de Linki IA.