Mensagens Ricas

Envie conteúdo interativo: botões de resposta rápida, botões de URL, copiar para clipboard, códigos Pix, vCards e localizações.

Apenas o operador (lado da empresa) pode enviar mensagens ricas. O cliente pode responder a elas como texto regular.

Formato dos Anexos

O campo attachments contém uma string JSON criptografada descrevendo os elementos interativos. Criptografe com a mesma chave AES por mensagem usada para content. A identidade do operador também é incorporada aqui para que o cliente renderize o avatar correto por mensagem.

JSON de anexos
{
  "operator": {
    "uuid": "agent-42",
    "name": "Maria Silva",
    "image": "https://cdn.example.com/avatars/maria.png",
    "gravatarHash": "md5-of-operator-email"
  },
  "buttons": [
    { "type": "reply", "label": "Sim" },
    { "type": "reply", "label": "Não" },
    { "type": "url", "label": "Abrir site", "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ão

TipoCampos ObrigatóriosDescrição
replylabelBotão de resposta rápida. Envia o texto do label como resposta.
urllabel, urlAbre a URL no navegador.
copylabel, valueCopia o valor para o clipboard.
pixlabel, valueIgual ao copy, mas com ícone Pix.

Regras de Renderização

  • Até 3 botões: renderiza inline abaixo da mensagem.
  • Mais de 3: renderiza um botão "Mais" que abre um modal.
  • Localização: renderiza nome/endereço com link para abrir no mapa.
  • vCard: renderiza cartão de contato com nome, telefone e organização.

Enviando uma Mensagem Rica

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 criptografado>",
    "iv": "...",
    "authTag": "...",
    "encryptedKey": "...",
    "selfEncryptedKey": "...",
    "keyId": "...",
    "attachments": "<string JSON criptografada>"
  }'

O backend armazena o ciphertext como-is. Nunca descriptografa ou inspeciona os anexos.