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

Хранение данных внутри диалога

Используйте сессионную базу данных, когда нужно запомнить информацию только на время текущего разговора. Как только диалог завершится, эти данные удалятся.

примечание

Вам не нужно создавать сессионную базу данных вручную. При вызове любой функции SessionDb будет создана Default session db — одна база на весь проект.

Данные в ней изолированы: информация из одного диалога не пересекается с другими.

Управлять данными можно через функции SessionDb внутри кода или подключив их к агенту.

Пример

Разберем пример: дадим агенту 3 попытки, чтобы помочь пользователю. Если агент не справляется, он должен перевести диалог на поддержку.

Реализация зависит от версии движка в вашем проекте.

  1. В начале диалога сохраняем стартовое значение счетчика:

    // Создаем запись counters и устанавливаем лимит в 3 попытки
    SessionDb.put({documentKey: "counters", value: { "notResolvedLimit": 3 }});

    Сессионная база данных создастся автоматически при вызове функции.

  2. Если ответ агента не устроил пользователя, уменьшаем счетчик на единицу. Например, инструмент агента может содержать код:

    // 1. Получаем текущие данные (весь объект)
    let store = SessionDb.get({documentKey: "counters"});

    // 2. Меняем значение нужного поля
    // Остальные поля в store.value (если они есть) останутся нетронутыми
    store.value.notResolvedLimit -= 1;

    // 3. Сохраняем обновленный объект целиком
    SessionDb.put({documentKey: "counters", value: store });
  3. В логике процесса проверяем, есть ли еще попытки. Если счетчик на нуле — создаем заявку в поддержку:

    let store = SessionDb.get({documentKey: "counters"});

    if (store.value.notResolvedLimit <= 0) {
    // Лимит исчерпан, создаем заявку в поддержку
    // ...
    }