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

API Чатов

Получение списка чатов

GET /api/client/chats

Возвращает список всех чатов организации.

Response (200):

{
"status": "success",
"chats": [
{
"user_id": 123456789,
"user_name": "Иван Петров",
"username": "ivan_petrov",
"last_message": "Привет!",
"last_message_time": "2026-01-10T15:30:00Z",
"unread_count": 2,
"source": "telegram",
"is_online": true
}
]
}

Поля ответа

ПолеТипОписание
user_idintegerID пользователя (положительный для TG, отрицательный для виджета)
user_namestringОтображаемое имя
usernamestringUsername в Telegram (может быть null)
last_messagestringПоследнее сообщение
last_message_timestringISO 8601 время
unread_countintegerКоличество непрочитанных
sourcestring"telegram" или "widget"
is_onlinebooleanОнлайн статус

Пример (JavaScript)

const response = await fetch('/api/client/chats', {
credentials: 'include'
});
const { chats } = await response.json();

chats.forEach(chat => {
console.log(`${chat.user_name}: ${chat.last_message}`);
});

Получение информации о пользователе

GET /api/client/user/{user_id}

Получение детальной информации о пользователе чата.

Response (200):

{
"status": "success",
"user": {
"user_id": 123456789,
"user_name": "Иван Петров",
"username": "ivan_petrov",
"phone": "+7 999 123-45-67",
"email": "ivan@example.com",
"first_seen": "2025-12-01T10:00:00Z",
"last_seen": "2026-01-10T15:30:00Z",
"messages_count": 42,
"source": "telegram",
"lead_data": {
"name": "Иван",
"email": "ivan@example.com",
"phone": "+79991234567"
}
}
}

Поиск чатов

GET /api/client/chats/search?q={query}

Поиск по имени, username или тексту сообщений.

Параметры:

ПараметрТипОписание
qstringПоисковый запрос
sourcestringФильтр: "telegram", "widget"
limitintegerКоличество результатов (по умолчанию 20)

Response (200):

{
"status": "success",
"chats": [
{
"user_id": 123456789,
"user_name": "Иван Петров",
"match_type": "name",
"match_text": "Иван"
}
],
"total": 1
}

Отметка прочитанным

POST /api/client/chats/{user_id}/read

Отметить все сообщения чата как прочитанные.

Response (200):

{
"status": "success",
"message": "Marked as read"
}