Saltar al contenido principal
Utiliza esta guía cuando necesites mostrar que el mismo usuario final puede interactuar a través de dos canales y que ambos canales producen registros unificados y auditables. El patrón a continuación utiliza un webhook de WhatsApp como canal uno y una aplicación web como canal dos. Ambos entornos envían el mismo ID de usuario final X-On-Behalf-Of y ambos escriben eventos de auditoría JSONL asociados al mismo response_id y conversation_id.
Utiliza la misma clave de API MKA1 en ambos entornos. Dos claves de API diferentes representan dos usuarios diferentes de la API MKA1. Usar el mismo valor de X-On-Behalf-Of no es suficiente si el entorno de WhatsApp y el entorno web se autentican con claves de API diferentes. Para este flujo de evidencia, ambos canales deben compartir la misma clave de API MKA1 y el mismo ID de usuario final X-On-Behalf-Of.
Para el patrón básico de solicitud, consulta generar una respuesta. Si necesitas crear o gestionar un ID de conversación reutilizable por usuario final, consulta gestionar conversaciones.

Arquitectura

Mensaje del usuario final en WhatsApp -> El webhook de WhatsApp recibe el mensaje -> tu servidor llama a mka1.llm.responses.create con store: true -> tu servidor registra el objeto de respuesta completo almacenado y el response_id -> tu servidor envía la respuesta de vuelta a WhatsApp -> tu aplicación web solicita el mismo response_id desde tu backend -> tu backend llama a mka1.llm.responses.get -> tu backend registra la recuperación web contra el mismo response_id y conversation_id
Mantén tu clave de API en el servidor. El navegador debe llamar a tu ruta backend, no directamente a la API MKA1.

Usa un solo ID de usuario final en ambos canales

El valor de X-On-Behalf-Of es la clave que une los canales a nivel de usuario final. Utiliza el mismo ID de usuario final estable en ambos entornos. También debes usar la misma clave de API MKA1 compartida en ambos entornos. Ejemplos:
  • El webhook de WhatsApp asigna un número de teléfono a user_123.
  • La sesión web para la misma persona también se resuelve como user_123.
  • Ambos entornos se autentican con la misma clave de API MKA1.
Si el valor de X-On-Behalf-Of cambia entre canales, los registros ya no son auditables como una sola conversación de usuario final. Si la clave de API cambia entre canales, las solicitudes pertenecen a diferentes usuarios de la API MKA1 incluso cuando X-On-Behalf-Of coincide.

Entorno WhatsApp: almacena la respuesta y regístrala

Comienza con un único wrapper SDK compartido que ambos entornos utilicen. Esto mantiene la autenticación, la creación de conversaciones, la recuperación y creación de respuestas consistente entre canales.
Luego utiliza ese wrapper en tu webhook de WhatsApp. Crea la conversación una vez para el usuario final, reutilízala en cada turno y captura el evento de auditoría de la respuesta almacenada.
Este es el punto de evidencia crítico para el canal uno:
  • WhatsApp es el canal de entrada.
  • La solicitud se almacena con store: true.
  • El objeto de respuesta completo se registra en un formato abierto.
  • El registro incluye response_id, conversation_id y end_user_id.

Entorno web: recupera la misma respuesta almacenada

La aplicación web debe llamar a tu propio backend. Ese backend puede recuperar la misma respuesta con mka1.llm.responses.get y registrar la recuperación como un evento de segundo canal.
Llamada mínima desde el navegador:
Este es el punto de evidencia crítico para el canal dos:
  • La aplicación web es un canal separado de WhatsApp.
  • Recupera la misma respuesta MKA1 almacenada por response_id.
  • Registra esa recuperación en el mismo flujo de auditoría JSONL.
  • El objeto recuperado sigue manteniendo el mismo enlace de usuario final y conversación.

Exportación de auditoría unificada en formato abierto

Ejemplo de exportación:

Requisito de autenticación para registros compartidos

Para esta demostración multicanal, todo lo siguiente debe coincidir entre los entornos de WhatsApp y web:
  • la misma clave de API MKA1
  • el mismo ID de usuario final X-On-Behalf-Of
  • el mismo response_id almacenado
  • el mismo conversation_id cuando uses conversaciones
Si cualquiera de los entornos utiliza una clave de API diferente, ya no estarás mostrando un contexto de usuario de API MKA1 compartido entre canales.