# Получение сообщений

{% hint style="info" %}
Для тестирования работы вебхука можно использовать [этот сервис](https://webhook.site/)
{% endhint %}

Для подключения персонального канала, вы должны указать вебхук, на который Савви будет отправлять сообщения. Он будет делать это в следующем виде:

## Запрос

{% hint style="danger" %}
Ваш вебхук должен возвращать статус код в диапазоне **200-299** и отвечать в течение **20 секунд**. В противном случае запрос считается ошибочным, а сообщения — недоставленными *(такие сообщения Савви не видит)*.
{% endhint %}

{% hint style="warning" %}
Ваш вебхук будет получать запросы **с разных IP-адресов.** Для проверки и авторизации используйте настройку **«Секрет вебхука»**.
{% endhint %}

Мы сделаем **POST** запрос на ваш вебхук, передав туда тело следующего вида:

```json
{
  "event_type": "new_messages",
  "new_messages": [
    {
      "type": "image",
      "message_sender": "ai",
      "file": {
        "name": "image.png",
        "url": "<прямая ссылка на изображение>",
        "size_bytes": 10240,
        "mime_type": "image/png"
      }
    },
    {
      "type": "text",
      "message_sender": "ai",
      "text": "Привет! Как я могу вам помочь?"
    }
  ]
}
```

Если при подключении персонального канала, вы указали **секрет вебхука,** то мы передадим его в заголовке `Authorization` в следующем виде:

```
Bearer <ваш секрет>
```

### Объект в запросе

| Поле           | Тип                                        | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event_type`   | строка (`new_messages` или `test_request`) | <p><strong>Тип события.</strong></p><p>На данный момент реализовано только событие для новых сообщений и тестовый запрос, но в будущем можем добавить и другие.</p><p>В зависимости от этого параметра набор полей может измениться</p><p><code>test\_request</code> - событие который мы пришлем на ваш вебхук при нажатии на кнопку проверки в ЛК Савви</p><p>Рекомендуем проверять данный параметр и игнорировать запрос, если <code>event\_type != "new\_messages"</code></p> |
| `new_messages` | массив объектов `Message`                  | <p><strong>Новые сообщения.</strong></p><p>Присутствует только если тип события - <code>new\_messages</code></p>                                                                                                                                                                                                                                                                                                                                                                  |
| `chat_id`      | строка                                     | <p><strong>Айди чата.</strong></p><p>Айди чата, который вы указывали при отправке запроса на наш АПИ. Нужен, чтобы вы могли в своей системе идентифицировать, в какой чат добавить ответ.<br>Присутствует только если тип события - <code>new\_messages</code></p>                                                                                                                                                                                                                |

#### Объект `Message`

| Поле             | Тип                                           | Описание                                                                                                                                                         |
| ---------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`           | строка (`text`, `image`, `audio`, `document`) | <p><strong>Тип сообщения.</strong></p><p>От этого параметра зависит набор полей</p>                                                                              |
| `message_sender` | строка (`ai` или `employee`)                  | <p><strong>Отправитель сообщения.</strong></p><p>Присутствует во всех типах, определяет кто прислал сообщение (бот или сотрудник через личный кабинет Савви)</p> |
| `text`           | строка                                        | <p><strong>Текст сообщения.</strong></p><p>Присутствует только, если тип сообщения - <code>text</code></p>                                                       |
| `file`           | объект `MessageFile`                          | <p><strong>Приложенный файл.</strong></p><p>Присутствует только, если тип сообщения - <code>image</code>, <code>audio</code> или <code>document</code></p>       |

#### Объект `MessageFile`

| Поле         | Тип                                     | Описание                                                                                                                                                                                                |
| ------------ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url`        | строка                                  | <p><strong>Прямая ссылка для загрузки файла.</strong></p><p>Например: <a href="https://i.imgur.com/ucYKBpa.png"><https://i.imgur.com/ucYKBpa.png></a></p><p>Файл будет расположен на нашем сервере.</p> |
| `name`       | строка                                  | **Имя файла.**                                                                                                                                                                                          |
| `size_bytes` | целое число ∈ `[0, +∞)`                 | **Размер файла в байтах.**                                                                                                                                                                              |
| `mime_type`  | строка `^[a-zA-Z0-9]+/[a-zA-Z0-9-.+]+$` | **Mime-тип файла.**                                                                                                                                                                                     |

Савви может отправить файлы следующих типов:

* Для изображений: `image/png`, `image/jpeg`, `image/gif`
* Для аудио: `audio/ogg`, `audio/mpeg`, `audio/wav`, `audio/x-wav`, `audio/webm`, `audio/mp4`, `audio/m4a`, `audio/x-m4a`
* Для документов: **любые**, включая вышеперечисленные


---

# Agent Instructions: 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:

```
GET https://docs.suvvy.ai/ru/kanaly/personalnyi-kanal-api/poluchenie-soobshenii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
