/messages
Отправить сообщение
Параметры
| Поле | Тип | Описание |
|---|---|---|
channel | string | Slug канала (например, production) |
group | string | ID группы из dashboard |
user_id | string | ID пользователя для личного сообщения |
chat_id | string | Альтернатива: channel:slug, group:id, user:id |
text | string | Текст сообщения (markdown-lite, HTML не поддерживается). Переносы строк — символ \n в JSON |
reply_to | string | ID сообщения (msg_...) для ответа |
attachments | array | Вложения в JSON (см. ниже): [{ "url", "type", "filename"?, "mime"?, "size"? }] |
attachments[] | file | Файлы при multipart/form-data (до 10 шт.) |
data | object | Произвольный JSON, отображается в деталях |
buttons | array | Массив кнопок (см. Кнопки) |
Вложения
JSON — массив attachments с внешними URL (файл на сервер Alerto не загружается).
multipart — поле attachments[]; файлы сохраняются на сервере и отдаются по публичному URL.
В одном сообщении можно комбинировать текст и несколько вложений (фото и документы).
| Ограничение | Значение |
|---|---|
| Максимум на сообщение | 10 вложений |
Изображения (type: image) | jpeg, jpg, png, gif, webp — до 5 MB |
Файлы (type: file) | pdf, txt, zip — до 10 MB |
| Хранение (multipart) | storage/app/public/attachments/{userId}/{uuid}.ext → URL /storage/attachments/... |
| Env | ATTACHMENTS_DISK, ATTACHMENTS_MAX_PER_MESSAGE, ATTACHMENTS_IMAGE_MAX_KB, ATTACHMENTS_FILE_MAX_KB |
Пустое сообщение, превышение лимитов или недопустимый файл — ответ 422. Внешние URL в JSON доступны только ботам (Integration API); Client API принимает только загрузку файлов.
Объект вложения в ответе API:
{
"id": "att_abc123",
"type": "image",
"url": "https://alerto.cc/storage/attachments/1/uuid.jpg",
"filename": "deploy.png",
"mime": "image/png",
"size": 245760
}
Пример запроса (JSON, внешние URL)
{
"channel": "production",
"text": "Деплой api-v2.4.1 завершён успешно",
"attachments": [
{ "url": "https://cdn.example.com/deploy.png", "type": "image" },
{ "url": "https://cdn.example.com/report.pdf", "type": "file", "filename": "report.pdf" }
],
"buttons": [
{"id": "rollback", "label": "Откатить", "style": "danger"},
{"id": "show_logs", "label": "Логи"},
{"id": "details", "label": "Детали"}
]
}
Пример запроса (multipart, загрузка файлов)
curl -X POST https://api.alerto.cc/v1/messages \
-H "Authorization: Bearer alt_..." \
-F "channel=production" \
-F "text=Готово" \
-F "reply_to=msg_parent_id" \
-F "attachments[]=@deploy-a.png" \
-F "attachments[]=@logs.pdf"
Многострочный текст
Чтобы получить сообщение на нескольких строках, в JSON используйте \n между строками:
{
"channel": "production",
"text": "Привет\nКак дела?"
}
В интерфейсе это отобразится так:
Привет
Как дела?
Ответ 201
{
"id": "msg_8f3a2b1c",
"bot": "deploy-bot",
"channel": "production",
"text": "Деплой api-v2.4.1 завершён успешно",
"attachments": [
{
"id": "att_abc123",
"type": "image",
"url": "https://alerto.cc/storage/attachments/1/uuid.png",
"filename": "deploy.png",
"mime": "image/png",
"size": 245760
}
],
"buttons": [
{"id": "rollback", "label": "Откатить", "style": "danger"}
],
"created_at": "2026-03-15T14:32:00Z"
}
Поля attachments, buttons и др. опускаются, если пусты. Сообщения в списках (GET /messages) возвращают тот же формат вложений.