BotState class

框架状态持久化范围的基类。

注解

对于与用户的每次聊天轮次,此类将读取和写入到提供的存储提供程序的状态。 派生类(如 ConversationStateUserState)提供一个 StorageKeyFactory ,用于确定用于持久保存给定存储对象的密钥。

加载的状态对象将在轮次生存期内自动缓存在上下文对象上,并且只有在修改后才会写入存储。

构造函数

BotState(Storage, StorageKeyFactory)

创建新的 BotState 实例。

方法

clear(TurnContext)

清除轮次的当前状态对象。

createProperty<T>(string)

创建一个新的属性访问器,用于读取单个属性并将其写入机器人状态存储对象。

delete(TurnContext)

删除当前轮次的后备状态对象。

get(TurnContext)

返回缓存状态对象,如果未缓存,则返回 undefined。

load(TurnContext, boolean)

读取并缓存轮次的后备状态对象。

saveChanges(TurnContext, boolean)

如果已更改,则保存缓存的状态对象。

构造函数详细信息

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)

返回缓存状态对象,如果未缓存,则返回 undefined。

function get(context: TurnContext): any | undefined

参数

context
TurnContext

与用户当前轮次对话的上下文。

返回

any | undefined

缓存状态对象,如果未缓存,则为 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);