Envio de Almacenamiento Externo (WhatsApp)
Adicionalmente al respaldo de conversaciones en el servidor en la nube, es posible enviarlas a un servidor de almacenamiento externo que el cliente puede ofrecer.
Las conversaciones de WhatsApp podrán ser enviadas en formato JSON, con un archivo por conversación y con toda la METADATA contenida dentro del archivo para poder realizar un análisis más detallado.
FORMATO
| Aspecto | Definición |
|---|---|
| Formato del archivo | JSON (UTF-8) |
| Unidad de envío | Un archivo = una conversación completa |
| Ruta de depósito | /whatsapp/YYYYMMDD/ (subcarpeta diaria) |
| Nombre del archivo | (conversation_id).json |
| Orden de los mensajes | Cronológico ascendente |
| Versión del esquema | 1.0 |
Ejemplo de nombre de archivo:
/whatsapp/20240416/0a1aec28-90c7-43af-afaf-91b58ded8baf.json
ESTRUCTURA
{
"schema_version": "1.0",
"source": "whatsapp_channel",
"generated_at": "2024-04-16T14:00:00Z",
"conversation": {
"conversation_id": "0a1aec28-90c7-43af-afaf-91b58ded8baf",
"client_id": "5215733215563",
"agent_name": "Jmartinez",
"agent_group": "Cobranza WhatsApp",
"conversation_status": "closed",
"disposition_1": "Contacto efectivo",
"disposition_2": "Promesa de pago",
"disposition_3": "",
"disposition_4": "",
"disposition_5": "",
"messages": [
{
"timestamp": "2024-04-16T09:12:00-05:00",
"content": "Buenos días, quiero saber el saldo de mi cuenta",
"message_category": "client",
"message_type": "client_message",
"agent_name": "",
"extras": {
"channel": "whatsapp",
"attachments_available": false
}
},
{
"timestamp": "2024-04-16T09:13:20-05:00",
"content": "Buen día, con gusto le ayudo. Su saldo actual es de $1,250.00",
"message_category": "agent",
"message_type": "agent_message",
"agent_name": "Jmartinez",
"extras": {
"channel": "whatsapp",
"attachments_available": true
}
}
]
}
}
DEFINICIÓN DE CAMPOS
Nivel raíz
- schema_version — Versión del esquema de datos. Valor fijo:
1.0 - source — Canal de origen de la conversación. Valor fijo:
whatsapp_channel - generated_at — Fecha y hora de generación del archivo en formato ISO 8601. Ejemplo:
2024-04-16T14:00:00Z - conversation — Objeto que contiene la conversación completa. No es un arreglo: cada archivo corresponde a una sola conversación
Objeto conversation
- conversation_id — Identificador único de la conversación de WhatsApp
- client_id — Número de teléfono del cliente
- agent_name — Nombre del agente que atendió la conversación (tomado del primer mensaje enviado por el agente)
- agent_group — Nombre de la cola o campaña a la que pertenece la conversación
- conversation_status — Estado o evento final registrado al cierre de la conversación
- disposition_1 — Tipificación de primer nivel asignada al cierre de la conversación (puede estar vacío)
- disposition_2 — Tipificación de segundo nivel (puede estar vacío)
- disposition_3 — Tipificación de tercer nivel (puede estar vacío)
- messages — Arreglo con todos los mensajes de la conversación, ordenados cronológicamente de forma ascendente
Objeto messages[]
- timestamp — Fecha y hora del mensaje en formato ISO 8601 con zona horaria. Ejemplo:
2024-04-16T09:12:00-05:00 - content — Cuerpo del mensaje de texto
- message_category — Categoría del emisor del mensaje:
clientsi fue enviado por el cliente,agentsi fue enviado por el agente - message_type — Tipo de mensaje:
client_messagesi fue enviado por el cliente,agent_messagesi fue enviado por el agente - agent_name — Nombre del agente asociado al mensaje (puede estar vacío en mensajes del cliente)
- extras — Objeto con metadatos adicionales del mensaje
Objeto messages[].extras
- channel — Canal de la conversación. Valor fijo:
whatsapp - attachments_available — Indica si el mensaje incluye archivos adjuntos (imágenes, documentos, etc.). Valor:
trueofalse
CONSIDERACIONES
- Adjuntos: el contenido de los archivos adjuntos no se incluye en el JSON. Únicamente se indica su existencia mediante la bandera
attachments_available - Tipificaciones: la tipificación se asigna al cierre de la conversación. Se envían hasta 3 niveles y los niveles no utilizados se envían como cadena vacía (
"") - Transferencias: cuando una conversación es atendida por más de un agente, el campo
agent_namedel encabezado corresponde al primer agente que respondió; elagent_namede cada mensaje refleja al agente que lo envió - Conversaciones cerradas: únicamente se envían conversaciones que ya cuentan con evento de cierre registrado