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

project-dialogs

Эндпоинтов: 5

GET /api/projects/{projectId}/users/{userId}/avatar

Аватар пользователя или бота (прокси)

Авторизация: Cookie (connect.sid) или Bearer PAT

Проксирует фото профиля из Telegram (или кэш avatar_url / bot_photo_url). userId=bot или id бота — аватар бота проекта.

Ответ 200: бинарное изображение (image/jpeg и т.п.), Cache-Control 1 день.

Клиент: user-avatar, PanelHeader диалогов.

curl -s -o avatar.jpg -b cookies.txt \
'http://localhost:5000/api/projects/42/users/123456789/avatar?tokenId=7'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
userIdpathдаTelegram user_id (или bot для аватара бота)"123456789"
tokenIdqueryнетID токена бота проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Байты изображения
401Нет session / PAT
403Нет доступа к проекту
404Нет фото / не удалось скачать
500Ошибка прокси / БД

DELETE /api/projects/{projectId}/users/{userId}/messages

Удалить историю сообщений диалога

Авторизация: Cookie (connect.sid) или Bearer PAT

Удаляет все bot_messages пользователя в скоупе проекта/токена. Не удаляет сообщения в Telegram — только запись в Studio БД.

UI сейчас почти не вызывает; API доступен для очистки истории.

curl -s -X DELETE -b cookies.txt \
'http://localhost:5000/api/projects/42/users/123456789/messages?tokenId=7'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
userIdpathдаTelegram user_id (или bot для аватара бота)"123456789"
tokenIdqueryнетID токена бота проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200История очищена
400Неверный projectId
401Нет session / PAT
403Нет доступа к проекту
500Ошибка БД

Пример ответа 200

{
"message": "Сообщения успешно удалены",
"deleted": true
}

GET /api/projects/{projectId}/users/{userId}/messages

История сообщений диалога

Авторизация: Cookie (connect.sid) или Bearer PAT

Последние N сообщений bot_messages (+ media), в хронологическом порядке. По умолчанию limit=100. Фильтр messageType=user|bot. Скоуп по tokenId.

Клиент: панель диалога, last-message, детали пользователя.

curl -s -b cookies.txt \
'http://localhost:5000/api/projects/42/users/123456789/messages?tokenId=7&limit=50'

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
userIdpathдаTelegram user_id (или bot для аватара бота)"123456789"
tokenIdqueryнетID токена бота проекта"7"
limitqueryнет"100"
messageTypequeryнет"bot"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Ответы

КодОписание
200Массив сообщений (может быть пустым)
400Неверный projectId
401Нет session / PAT
403Нет доступа к проекту
500Ошибка БД

Пример ответа 200

[
{
"id": 501,
"projectId": 42,
"tokenId": 7,
"userId": "123456789",
"messageType": "bot",
"messageText": "Привет! Чем могу помочь?",
"messageData": {
"sentFromAdmin": true
},
"telegramMessageId": 1001,
"createdAt": "2026-08-11T15:00:00.000Z",
"media": []
}
]

POST /api/projects/{projectId}/users/{userId}/send-message

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

Авторизация: Cookie (connect.sid) или Bearer PAT

Шлёт текст/медиа/кнопки через Telegram Bot API, пишет в bot_messages, публикует WS new-message. Подставляет переменные из user_data.

Тело: messageText, опционально mediaUrls, buttons, buttonsPerRow. Нужен токен проекта (tokenId в query или default).

Клиент: поле ввода панели диалога (use-send-message).

curl -s -X POST -b cookies.txt -H 'Content-Type: application/json' \
'http://localhost:5000/api/projects/42/users/123456789/send-message?tokenId=7' \
-d '{"messageText":"Здравствуйте!"}'

Тело запроса: SendDialogMessageRequest

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
userIdpathдаTelegram user_id (или bot для аватара бота)"123456789"
tokenIdqueryнетID токена бота проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Пример тела запроса

{
"messageText": "Здравствуйте!",
"mediaUrls": [],
"buttons": [],
"buttonsPerRow": 0
}

Ответы

КодОписание
200Отправлено в Telegram и сохранено
400Валидация / нет токена / нечего отправлять
401Нет session / PAT
403Нет доступа к проекту

Пример ответа 200

{
"message": "Сообщение успешно отправлено",
"result": {
"ok": true,
"result": {
"message_id": 1002
}
}
}

POST /api/projects/{projectId}/users/{userId}/send-node-message

Отправить содержимое узла сценария пользователю

Авторизация: Cookie (connect.sid) или Bearer PAT

Берёт узел по nodeId из project.data, рендерит текст/медиа/кнопки (с переменными) и шлёт через бота. В messageData помечает sentFromAdmin + nodeId.

Клиент: «Отправить ноду» в диалоге (use-send-node).

curl -s -X POST -b cookies.txt -H 'Content-Type: application/json' \
'http://localhost:5000/api/projects/42/users/123456789/send-node-message?tokenId=7' \
-d '{"nodeId":"welcome-msg"}'

Тело запроса: SendNodeMessageRequest

Параметры

ИмяInОбязательныйОписаниеПример
projectIdpathдаID проекта"42"
userIdpathдаTelegram user_id (или bot для аватара бота)"123456789"
tokenIdqueryнетID токена бота проекта"7"
AuthorizationheaderнетAuthorization: Bearer mcp_… — PAT агента (альтернатива cookie)"Bearer mcp_xxxxxxxx"
connect.sidcookieнетSession cookie после login. Не нужна при Authorization: Bearer mcp_…"s%3Axxxx.yyyy"

Пример тела запроса

{
"nodeId": "welcome-msg",
"userData": {
"order_id": "A-100"
}
}

Ответы

КодОписание
200Узел отправлен
400Нет nodeId / нет токена
401Нет session / PAT
403Нет доступа к проекту
404Проект или узел не найден

Пример ответа 200

{
"message": "Сообщение успешно отправлено",
"result": {
"ok": true,
"result": {
"message_id": 1002
}
}
}