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);