Перейти к основному содержимому

API Сообщений

Получение истории

GET /api/client/history/{user_id}

Получение истории сообщений с пользователем.

Параметры:

ПараметрТипОписание
limitintegerКоличество сообщений (по умолчанию 50)
beforeintegerID сообщения для пагинации

Response (200):

{
"status": "success",
"messages": [
{
"id": 1,
"text": "Привет!",
"sender": "user",
"timestamp": "2026-01-10T15:30:00Z",
"file_path": null
},
{
"id": 2,
"text": "Здравствуйте! Чем могу помочь?",
"sender": "operator",
"timestamp": "2026-01-10T15:31:00Z",
"file_path": null
}
],
"has_more": false
}

Поля сообщения

ПолеТипОписание
idintegerID сообщения
textstringТекст сообщения
senderstring"user", "operator", "bot"
timestampstringISO 8601 время
file_pathstringПуть к файлу (если есть)

Отправка сообщения

POST /api/client/send_message

Отправка текстового сообщения пользователю.

Request:

{
"user_id": 123456789,
"message": "Ваш заказ готов к выдаче!"
}

Response (200):

{
"status": "success",
"message_id": 123
}

Пример (JavaScript)

const response = await fetch('/api/client/send_message', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': csrfToken
},
body: JSON.stringify({
user_id: 123456789,
message: 'Ваш заказ готов к выдаче!'
})
});

Отправка файла

POST /api/client/send_file

Отправка файла пользователю.

Request (multipart/form-data):

ПолеТипОписание
user_idintegerID получателя
fileFileФайл для отправки
captionstringПодпись (опционально)

Response (200):

{
"status": "success",
"message_id": 124,
"file_path": "/files/org-id/image.webp"
}

Пример (JavaScript)

const formData = new FormData();
formData.append('user_id', '123456789');
formData.append('file', fileInput.files[0]);
formData.append('caption', 'Фото товара');

const response = await fetch('/api/client/send_file', {
method: 'POST',
credentials: 'include',
headers: {
'X-CSRF-Token': csrfToken
},
body: formData
});

Ограничения

  • Максимальный размер: 5 МБ
  • Разрешённые форматы: JPG, PNG, GIF, WebP, PDF, DOC, DOCX, XLS, XLSX, ZIP
  • Лимит: 10 файлов в минуту

Индикатор печати

POST /api/client/typing

Отправка индикатора "печатает..." пользователю.

Request:

{
"user_id": 123456789
}

Response (200):

{
"status": "success"
}
Примечание

Индикатор автоматически исчезает через 5 секунд. Отправляйте повторно при продолжении набора текста.