Skip to main content

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: client si fue enviado por el cliente, agent si fue enviado por el agente
  • message_type — Tipo de mensaje: client_message si fue enviado por el cliente, agent_message si 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: true o false

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_name del encabezado corresponde al primer agente que respondió; el agent_name de cada mensaje refleja al agente que lo envió
  • Conversaciones cerradas: únicamente se envían conversaciones que ya cuentan con evento de cierre registrado