> For the complete documentation index, see [llms.txt](https://docs.chatlayer.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chatlayer.ai/chatlayer-documentation-pt-br/integrateandcode/chat-message-structure-for-apis.md).

# Especificações das mensagens do Chatlayer

O Chatlayer.ai oferece suporte a diferentes tipos de mensagens de chat, cada uma com sua própria estrutura de objeto. As mensagens de chat podem ser enviadas:

* Na resposta do plugin da API
* Do seu [webhook](/chatlayer-documentation-pt-br/channels/all-channels/webhook-api.md) para o Chatlayer.ai

Cada mensagem tem dois campos obrigatórios:

* **tipo**: o tipo da mensagem (carrossel, botões, lista, mídia, texto, …)
* **config**: a configuração da mensagem

## Texto

Uma mensagem de texto inclui uma simples mensagem de texto do bot.

**Formato da requisição**:

```javascript
{
  "senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
  "message":  {
    "text": "Oi, eu sou um chatbot"
  },
  "messageCounter": 1,
  "verifyToken": "8wMsLZkdDPT64nqh"
}
```

| **Propriedade** | **Valor** | **Descrição**                   |
| --------------- | --------- | ------------------------------- |
| text            | string    | A mensagem de teste do usuário. |

## Modelo de botão

Um modelo de botão inclui uma simples mensagem de texto do bot e uma matriz de objetos de botão.

**Formato da requisição**:

```javascript
{
  "senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
  "message":  {
    "attachment": {
      "type": "template",
      "payload": {
        "template_type": "button",
        "text": "Olá, em qual idioma posso ajudá-lo?",
        "buttons": [
          {
            "type": "postback",
            "title": "Nederlands",
            "payload": "437a034cde170b50de1b6a87d1cba104e39b1f6e"
          },
          {
            "type": "postback",
            "title": "English",
            "payload": "a6a318dd6afe997f282b3c7472e038a2e0f4046a"
          },
        ]
      }
    }
  },
  "messageCounter": 1,
  "verifyToken": "8wMsLZkdDPT64nqh"
}
```

**Objeto de mensagem para modelo de botão**:

| **Propriedade** | **Valor** | **Descrição**      |
| --------------- | --------- | ------------------ |
| anexo           | objeto    | O objeto de anexo. |

**Objeto de anexo**:

| **Propriedade** | **Valor** | **Descrição**                                                                |
| --------------- | --------- | ---------------------------------------------------------------------------- |
| tipo            | string    | O tipo de anexo (modelo)                                                     |
| payload         | objeto    | O objeto de payload do anexo. A estrutura do objeto depende do tipo de anexo |

**Objeto de payload do anexo**:

| **Propriedade** | **Valor**         | **Descrição**                                                      |
| --------------- | ----------------- | ------------------------------------------------------------------ |
| template\_type  | string            | O tipo de modelo (botão)                                           |
| text            | string (opcional) | O texto acima dos botões (somente para um tipo de modelo de botão) |
| botões          | matriz            | Uma matriz de objetos de botão                                     |

**Objeto de botão**:

| **Propriedade** | **Valor**                                                                        | **Descrição**                                                                                                                                                                   |
| --------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tipo            | string                                                                           | O tipo de botão (web\_url - postback - phone\_number - element\_share)                                                                                                          |
| título          | string                                                                           | A legenda do botão                                                                                                                                                              |
| payload         | string (conterá o número de telefone quando o tipo for phone\_number) - opcional | <p>O payload do botão. Somente para botões do tipo postback.<br>Este é um <strong>Identificador opaco</strong> por favor, não tente alterá-lo nem extrair significado dele.</p> |
| url             | string - opcional                                                                | A URL do botão. Somente para botões do tipo url                                                                                                                                 |

## Respostas rápidas

Uma mensagem de resposta rápida inclui uma simples mensagem de texto do bot e uma matriz de objetos de resposta rápida.

**Formato da requisição**:

```javascript
{
  "senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
  "message":  {
    "text": "Olá, em qual idioma posso ajudá-lo?",
    "quick_replies": [
      {
        "content_type": "text",
        "title": "Nederlands",
        "payload": "c3e30be2f30687fea0ae419acaeb9d77261631a9",
        "image_url": "https://domain/logo.png"
      },
      {
        "content_type": "text",
        "title": "English",
        "payload": "2e29412e82c8eea8c8b0c170661070d28929a900",
        "image_url": "https://domain/logo.png"
      },
    ]
  },
  "messageCounter": 1,
  "verifyToken": "8wMsLZkdDPT64nqh"
}
```

**Objeto de mensagem para respostas rápidas**:

| **Propriedade** | **Valor** | **Descrição**                            |
| --------------- | --------- | ---------------------------------------- |
| text            | string    | O texto antes das respostas rápidas.     |
| quick\_replies  | matriz    | Uma matriz de objetos de resposta rápida |

**Objeto de resposta rápida**:

| **Propriedade** | **Valor** | **Descrição**                                                                                                                                       |
| --------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| content\_type   | string    | O tipo de conteúdo da resposta rápida (texto)                                                                                                       |
| título          | string    | A legenda do botão                                                                                                                                  |
| payload         | string    | <p>O payload da resposta rápida.<br>Este é um <strong>Identificador opaco</strong> por favor, não tente alterá-lo nem extrair significado dele.</p> |

## Modelo genérico

Um modelo genérico (carrossel) inclui uma lista de elementos de modelo genérico. O elemento de modelo genérico é uma mensagem estruturada simples que inclui um título, subtítulo, imagem e até três botões

**Formato da requisição**:

```javascript
{
  "senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
  "message":  {
    "attachment": {
      "type": "template",
      "payload": {
        "template_type": "generic",
        "elements": [
          {
             "title": "Idioma",
             "subtitle": "Defina seu idioma",
             "image_url": "https://domain/lang.png",
             "item_url": "https://domain/lang",
             "buttons": [
               {
                 "type": "postback",
                 "title": "Nederlands",
                 "payload": "f0512bd2fcddc53963056dc0d63b52b8caa902ff"
               },
               {
                 "type": "postback",
                 "title": "English",
                 "payload": "4562ae76c34a13647fab90425c68a486b8acf356"
               },
            ]
          }
        ]
      }
    }
  },
  "messageCounter": 1,
  "verifyToken": "8wMsLZkdDPT64nqh"
}
```

**Objeto de mensagem para modelo genérico**:

| **Propriedade** | **Valor** | **Descrição**      |
| --------------- | --------- | ------------------ |
| anexo           | objeto    | O objeto de anexo. |

**Objeto de anexo**:

| **Propriedade** | **Valor** | **Descrição**                                                                |
| --------------- | --------- | ---------------------------------------------------------------------------- |
| tipo            | string    | O tipo de anexo (modelo)                                                     |
| payload         | objeto    | O objeto de payload do anexo. A estrutura do objeto depende do tipo de anexo |

**Objeto de payload do anexo**:

| **Propriedade** | **Valor** | **Descrição**                                                     |
| --------------- | --------- | ----------------------------------------------------------------- |
| template\_type  | string    | O tipo de modelo (genérico)                                       |
| elements        | matriz    | Uma matriz de elementos de modelo genérico (cartões de carrossel) |

**Objeto de elemento de modelo genérico**:

| **Propriedade** | **Valor** | **Descrição**                                                                                                       |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------- |
| título          | string    | O título do cartão do carrossel                                                                                     |
| subtitle        | string    | O subtítulo do cartão do carrossel                                                                                  |
| image\_url      | string    | A imagem do cartão do carrossel                                                                                     |
| item\_url       | string    | A URL do cartão do carrossel. Quando o usuário clica na imagem, a página web é aberta em uma nova aba do navegador. |
| botões          | matriz    | Uma matriz de objetos de botão                                                                                      |

**Objeto de botão**:

| **Propriedade** | **Valor**                                                                        | **Descrição**                                                                                                                                                                   |
| --------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tipo            | string                                                                           | O tipo de botão (web\_url - postback - phone\_number - element share)                                                                                                           |
| título          | string                                                                           | A legenda do botão                                                                                                                                                              |
| payload         | string (conterá o número de telefone quando o tipo for phone\_number) - opcional | <p>O payload do botão. Somente para botões do tipo postback.<br>Este é um <strong>Identificador opaco</strong> por favor, não tente alterá-lo nem extrair significado dele.</p> |
| url             | string - opcional                                                                | A URL do botão. Somente para botões do tipo url                                                                                                                                 |

## Modelo de lista

O modelo de lista é uma lista de 2 a 4 itens estruturados com um botão global opcional exibido na parte inferior. Cada item pode conter uma imagem em miniatura, título, subtítulo e um botão. Você também pode especificar um objeto default\_action que define uma URL que será aberta quando o item for tocado.

**Formato da requisição**:

```javascript
{
  "senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
  "message":  {
    "attachment": {
      "type": "template",
      "payload": {
        "template_type": "list",
        "elements": [
          {
             "title": "Idioma",
             "subtitle": "Selecione seu idioma",
             "image_url": "https://domain/lang.png",
             "default_action": {
                "type": "web_url",
                "url": "default_url"
              }
             "buttons": [
               {
                 "type": "postback",
                 "title": "Nederlands",
                 "payload": "76601d56d0619ef87552bbfbbfcd714c4fda513b"
               }
            ]
          }
        ],
        "buttons": []
      }
    }
  },
  "messageCounter": 1,
  "verifyToken": "8wMsLZkdDPT64nqh"
}
```

**Objeto de mensagem para modelo de lista**:

| **Propriedade** | **Valor** | **Descrição**      |
| --------------- | --------- | ------------------ |
| anexo           | objeto    | O objeto de anexo. |

**Objeto de anexo**:

| **Propriedade** | **Valor** | **Descrição**                                                                |
| --------------- | --------- | ---------------------------------------------------------------------------- |
| tipo            | string    | O tipo de anexo (modelo)                                                     |
| payload         | objeto    | O objeto de payload do anexo. A estrutura do objeto depende do tipo de anexo |

**Objeto de payload do anexo**:

| **Propriedade** | **Valor** | **Descrição**                                 |
| --------------- | --------- | --------------------------------------------- |
| template\_type  | string    | O tipo de modelo (lista)                      |
| elements        | matriz    | Uma matriz de elementos de lista              |
| botões          | matriz    | Uma matriz de objetos de botão da lista geral |

**Objeto de elemento de modelo de lista**:

| **Propriedade** | **Valor** | **Descrição**                                         |
| --------------- | --------- | ----------------------------------------------------- |
| título          | string    | O título do cartão do carrossel                       |
| subtitle        | string    | O subtítulo do cartão do carrossel                    |
| image\_url      | string    | A imagem do cartão do carrossel                       |
| default\_action | objeto    | A ação padrão quando o usuário toca no item da lista. |
| botões          | matriz    | Uma matriz de objetos de botão do item da lista       |

**Objeto de ação padrão**:

| **Propriedade** | **Valor** | **Descrição**                                                                                                        |
| --------------- | --------- | -------------------------------------------------------------------------------------------------------------------- |
| tipo            | string    | O tipo de ação (web\_url)                                                                                            |
| url             | string    | A URL da ação. Quando o usuário toca no elemento da lista, esta página web será aberta em uma nova aba do navegador. |

**Objeto de botão**:

| **Propriedade** | **Valor**                              | **Descrição**                                                                                                                                                                   |
| --------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tipo            | string                                 | O tipo de botão (web\_url - postback - phone\_numberl - element share)                                                                                                          |
| título          | string                                 | A legenda do botão                                                                                                                                                              |
| payload         | string (tipo phone\_number) - opcional | <p>O payload do botão. Somente para botões do tipo postback.<br>Este é um <strong>Identificador opaco</strong> por favor, não tente alterá-lo nem extrair significado dele.</p> |
| url             | string - opcional                      | A URL do botão. Somente para botões do tipo url                                                                                                                                 |

## Anexo

Um anexo representa um arquivo, como imagens e vídeo.

**Formato da requisição**:

```javascript
{
  "senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
  "message":  {
    "attachment": {
      "type": "image"
      "payload": {
        "url": "image_url",
      }
    }
  },
  "messageCounter": 1,
  "verifyToken": "8wMsLZkdDPT64nqh"
}
```

**Objeto de mensagem para anexo**:

| **Propriedade** | **Valor** | **Descrição**      |
| --------------- | --------- | ------------------ |
| anexo           | objeto    | O objeto de anexo. |

**Objeto de anexo**:

| **Propriedade** | **Valor** | **Descrição**                                                                |
| --------------- | --------- | ---------------------------------------------------------------------------- |
| tipo            | string    | O tipo de anexo (imagem-vídeo)                                               |
| payload         | objeto    | O objeto de payload do anexo. A estrutura do objeto depende do tipo de anexo |

**Objeto de payload do anexo**:

| **Propriedade** | **Valor** | **Descrição**  |
| --------------- | --------- | -------------- |
| url             | string    | A URL do anexo |

## Texto rico

Texto rico é um texto ao qual é aplicada formatação. As formatações possíveis são negrito, itálico, sublinhado, hiperlink para URL, hiperlink para bloco, título (1-4), lista com marcadores e lista numerada.

**Formato da requisição**:

```javascript
{
  senderId: 'a7355930-fa92-11e7-8308-2f056e75d1ee',
  verifyToken: 'e63131e1-459f-45aa-be42-666e1e4ef197',
  message: {
    template: {
      __typename: 'RichTextMessageTemplate',
      order: 1,
      configTranslations: [Object]
    },
    richText: '<p>Parágrafo</p>\n' +
      '<p><strong>Negrito</strong></p>\n' +
      '<p><em>Itálico</em></p>\n' +
      '<p><u>Sublinhado</u></p>\n' +
      '<p><a href="https://www.sinch.com" target="_blank" rel="noopener noreferrer">Hyperlink</a></p>\n' +
      '<p><a href="f36f9056-2659-4d59-8940-4e9c7d3855a3" target="_blank" rel="noopener noreferrer">Ir para o diálogo do bot</a></p>\n' +
      '<h1>Título 1</h1>\n' +
      '<h2>Título 2</h2>\n' +
      '<h3>Título 3</h3>\n' +
      '<h4>Título 4</h4>\n' +
      '<ul>\n' +
      '<li>Lista com marcadores</li>\n' +
      '</ul>\n' +
      '<ol>\n' +
      '<li>Lista numerada</li>\n' +
      '</ol>',
    type: 'richText'
  },
  messageCounter: 2,
  nlp: { intent: { name: null, score: null } },
  dialogstate: {
    id: 'f444b20b-370a-434d-af00-822cbce056ec',
    name: 'Introdução',
    label: null
  }
}
```

**Objeto de mensagem para anexo**:

| **Propriedade** | **Valor** | **Descrição**            |
| --------------- | --------- | ------------------------ |
| richText        | string    | A mensagem de texto rico |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chatlayer.ai/chatlayer-documentation-pt-br/integrateandcode/chat-message-structure-for-apis.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
