История диалога
Используйте историю для восстановления переписки в собственном интерфейсе. Идентификаторы секции, пользователя и диалога должны совпадать с исходными запросами генерации. Web-виджет 1.41 не вызывает этот метод автоматически.
POST /shopping/history
Чтобы восстановить сообщения после перезагрузки страницы или повторного открытия чата, вызовите:
POST https://shopping-assistant-api.gravityfield.ai/shopping/history
Content-Type: application/json
Endpoint возвращает только сообщения покупателя и ответы Shopping Assistant. Внутренние system-сообщения, вызовы инструментов и служебные данные в ответ не попадают.
Запрос истории
curl --request POST \
--url 'https://shopping-assistant-api.gravityfield.ai/shopping/history' \
--header 'Content-Type: application/json' \
--data '{
"tenant_id": "demo-section",
"resourceId": "demo-user",
"threadId": "thread-8f2b1c",
"page": 1,
"limit": 50
}'
История доступна только при точном совпадении tenant_id, resourceId и threadId. Если диалог не найден или не принадлежит указанной секции или пользователю, API возвращает одинаковый ответ 404.
Ответ
{
"threadId": "thread-8f2b1c",
"resourceId": "demo-user",
"items": [
{
"id": "shopping:user:4f8c...",
"role": "user",
"content": "Помогите выбрать корм для взрослой кошки",
"createdAt": "2026-07-28T10:00:00.000Z"
},
{
"id": "shopping:assistant:8a21...",
"role": "assistant",
"createdAt": "2026-07-28T10:00:01.250Z",
"threadId": "thread-8f2b1c",
"resourceId": "demo-user",
"response": {
"contents": [
{
"type": "message",
"value": "Кошка стерилизована и есть ли особенности по здоровью?"
}
],
"ui": {
"suggests": [
"Стерилизована, без особенностей",
"Не стерилизована",
"Есть особенности по здоровью"
]
}
},
"feedback": {
"reaction": "like"
},
"responseLatencyMs": 1250
}
],
"pagination": {
"page": 1,
"limit": 50,
"hasMore": false
}
}
Элементы в items отсортированы по времени создания от ранних к поздним в пределах страницы:
- для
role: "user"полеcontentимеет тот же формат, что в запросе/shopping/generate: строка для текста или массив блоковtextиimage; - для
role: "assistant"полеresponseимеет тот же контракт, что ответ/shopping/generate;idсообщения используйте какmessageIdдля/shopping/feedback; - поле
feedback.reactionв сообщении ассистента содержит текущую оценку пользователя:like,dislikeилиnull; - дополнительно в сообщении ассистента могут присутствовать
responseLatencyMsиevents; - если
pagination.hasMoreравноtrue, запросите следующую страницу, увеличивpageна1.
Для сообщения с изображением history endpoint возвращает блок image с Base64. Для отображения превью соберите data URL из source.mediaType и source.data, но не передавайте это сообщение повторно в /shopping/generate.
const previewUrl =
`data:${image.source.mediaType};base64,${image.source.data}`;
Ответ содержит заголовок Cache-Control: no-store. Не сохраняйте историю в общем или публичном кеше на клиентской стороне.