Хранение данных внутри диалога
Используйте сессионную базу данных, когда нужно запомнить информацию только на время текущего разговора. Как только диалог завершится, эти данные удалятся.
Вам не нужно создавать сессионную базу данных вручную. При вызове любой функции SessionDb будет создана Default session db — одна база на весь проект.
Данные в ней изолированы: информация из одного диалога не пересекается с другими.
Управлять данными можно через функции SessionDb внутри кода или подключив их к агенту.
Пример
Разберем пример: дадим агенту 3 попытки, чтобы помочь пользователю. Если агент не справляется, он должен перевести диалог на поддержку.
-
В начале диалога сохраняем стартовое значение счетчика:
// Создаем запись counters и устанавливаем лимит в 3 попытки
await SessionDb.put("counters", { "notResolvedLimit": 3 });Сессионная база данных создастся автоматически при вызове функции.
-
Если ответ агента не устроил пользователя, уменьшаем счетчик на единицу. Например, инструмент агента может содержать код:
// 1. Получаем текущие данные (весь объект)
let store = await SessionDb.get("counters");
// 2. Меняем значение нужного поля
// Остальные поля в store.value (если они есть) останутся нетронутыми
store.value.notResolvedLimit -= 1;
// 3. Сохраняем обновленный объект целиком
await SessionDb.put("counters", store.value); -
В логике процесса проверяем, есть ли еще попытки. Если счетчик на нуле — создаем заявку в поддержку:
let store = await SessionDb.get("counters");
if (store.value.notResolvedLimit <= 0) {
// Лимит исчерпан, создаем заявку в поддержку
// ...
}