BotState class
Базовый класс для областей сохранения состояния платформ.
Комментарии
Этот класс будет считывать и записывать состояние в предоставленный поставщик хранилища для каждой очереди беседы с пользователем. Производные классы, такие как ConversationState
и UserState
, предоставляют StorageKeyFactory
, который используется для определения ключа, используемого для сохранения заданного объекта хранилища.
Загруженный объект состояния будет автоматически кэширован в объект контекста в течение времени существования поворота и будет записан только в хранилище, если он был изменен.
Конструкторы
Bot |
Создает новый экземпляр BotState. |
Методы
clear(Turn |
Очищает текущий объект состояния для поворота. |
create |
Создает новый метод доступа к свойствам для чтения и записи отдельного свойства в объект хранилища состояний бота. |
delete(Turn |
Удалите объект состояния резервного копирования для текущего поворота. |
get(Turn |
Возвращает кэшированный объект состояния или не определен, если не кэширован. |
load(Turn |
Считывает и кэширует резервный объект состояния для поворота. |
save |
Сохраняет кэшированный объект состояния, если он был изменен. |
Сведения о конструкторе
BotState(Storage, StorageKeyFactory)
Создает новый экземпляр BotState.
new BotState(storage: Storage, storageKey: StorageKeyFactory)
Параметры
- storage
- Storage
Поставщик хранилища для сохранения объекта состояния.
- storageKey
- StorageKeyFactory
Функция, вызываемая в любой момент, когда ключ хранилища для заданного поворота необходимо вычислить.
Сведения о методе
clear(TurnContext)
Очищает текущий объект состояния для поворота.
function clear(context: TurnContext): Promise<void>
Параметры
- context
- TurnContext
Контекст для текущего шага беседы с пользователем.
Возвращаемое значение
Promise<void>
Обещание, представляющее асинхронную операцию.
Комментарии
Очищаемый объект состояния не будет сохраняться до вызова saveChanges().
await botState.clear(context);
await botState.saveChanges(context);
createProperty<T>(string)
Создает новый метод доступа к свойствам для чтения и записи отдельного свойства в объект хранилища состояний бота.
function createProperty<T>(name: string): StatePropertyAccessor<T>
Параметры
- name
-
string
Имя добавляемого свойства.
Возвращаемое значение
Метод доступа для свойства.
delete(TurnContext)
Удалите объект состояния резервного копирования для текущего поворота.
function delete(context: TurnContext): Promise<void>
Параметры
- context
- TurnContext
Контекст для текущего шага беседы с пользователем.
Возвращаемое значение
Promise<void>
Обещание, представляющее асинхронную операцию.
Комментарии
Объект состояния будет удален из хранилища, если он существует. Если объект состояния считывался и кэшировался, кэш будет удален.
await botState.delete(context);
get(TurnContext)
Возвращает кэшированный объект состояния или не определен, если не кэширован.
function get(context: TurnContext): any | undefined
Параметры
- context
- TurnContext
Контекст для текущего шага беседы с пользователем.
Возвращаемое значение
any | undefined
Кэшированный объект состояния или неопределенный, если он не кэширован.
Комментарии
В этом примере показано, как синхронно получить уже загруженный и кэшированный объект состояния:
const state = botState.get(context);
load(TurnContext, boolean)
Считывает и кэширует резервный объект состояния для поворота.
function load(context: TurnContext, force?: boolean): Promise<any>
Параметры
- context
- TurnContext
Контекст для текущего шага беседы с пользователем.
- force
-
boolean
(Необязательно) Если true
кэш будет обходить, состояние всегда будет считываться непосредственно из хранилища. По умолчанию используется false
.
Возвращаемое значение
Promise<any>
Кэшированное состояние.
Комментарии
Последующие операции чтения возвращают кэшированный объект, если только флаг force
не передается, в котором будет принудительно выполняться повторное чтение объекта состояния.
Этот метод автоматически вызывается при первом доступе к любому из созданных методов доступа к свойствам.
const state = await botState.load(context);
saveChanges(TurnContext, boolean)
Сохраняет кэшированный объект состояния, если он был изменен.
function saveChanges(context: TurnContext, force?: boolean): Promise<void>
Параметры
- context
- TurnContext
Контекст для текущего шага беседы с пользователем.
- force
-
boolean
(Необязательно) если true
состояние всегда будет записано независимо от его состояния изменения. По умолчанию используется false
.
Возвращаемое значение
Promise<void>
Обещание, представляющее асинхронную операцию.
Комментарии
Если флаг force
передается в кэшированный объект состояния, независимо от того, был ли изменен или нет, и если объект не был кэширован, будет создан пустой объект, а затем сохранен.
await botState.saveChanges(context);