Mensajes Ricos

Envíe contenido interactivo: botones de respuesta rápida, botones de URL, copiar al portapapeles, códigos Pix, vCards y ubicaciones.

Solo el operador (lado de la empresa) puede enviar mensajes ricos. El cliente puede responder a ellos como texto regular.

Formato de Adjuntos

El campo attachments contiene una cadena JSON cifrada que describe los elementos interactivos. Cifre con la misma clave AES por mensaje usada para content. La identidad del operador también se incorpora aquí para que el cliente renderice el avatar correcto por mensaje.

JSON de adjuntos
{
  "operator": {
    "uuid": "agent-42",
    "name": "Maria Silva",
    "image": "https://cdn.example.com/avatars/maria.png",
    "gravatarHash": "md5-of-operator-email"
  },
  "buttons": [
    { "type": "reply", "label": "Sí" },
    { "type": "reply", "label": "No" },
    { "type": "url", "label": "Abrir sitio", "url": "https://example.com" },
    { "type": "copy", "label": "Copiar código", "value": "ABC-1234" },
    { "type": "pix", "label": "Copiar Pix", "value": "00020126..." }
  ],
  "vcard": {
    "name": "John Doe",
    "phone": "+5511999998888",
    "organization": "Acme Inc."
  },
  "location": {
    "latitude": -23.5505,
    "longitude": -46.6333,
    "name": "São Paulo",
    "address": "Av. Paulista, 1000"
  }
}

Tipos de Botón

TipoCampos ObligatoriosDescripción
replylabelBotón de respuesta rápida. Envía el texto del label como respuesta.
urllabel, urlAbre la URL en el navegador.
copylabel, valueCopia el valor al portapapeles.
pixlabel, valueIgual que copy, pero con ícono de Pix.

Reglas de Renderizado

  • Hasta 3 botones: se renderizan inline debajo del mensaje.
  • Más de 3: se renderiza un botón "Más" que abre un modal.
  • Ubicación: renderiza nombre/dirección con enlace para abrir en app de mapas.
  • vCard: renderiza una tarjeta de contacto con nombre, teléfono y organización.

Enviando un Mensaje Rico

cURL
curl -X POST https://api.ixblix.app/api/messages/company \
  -H "X-API-Key: smci_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "conversationId": "conv_xxxx",
    "content": "<texto cifrado>",
    "iv": "...",
    "authTag": "...",
    "encryptedKey": "...",
    "selfEncryptedKey": "...",
    "keyId": "...",
    "attachments": "<cadena JSON cifrada>"
  }'

El backend almacena el ciphertext tal cual. Nunca descifra ni inspecciona los adjuntos.