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
| Tipo | Campos Obligatorios | Descripción |
|---|---|---|
reply | label | Botón de respuesta rápida. Envía el texto del label como respuesta. |
url | label, url | Abre la URL en el navegador. |
copy | label, value | Copia el valor al portapapeles. |
pix | label, value | Igual 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.