UserState class

读取机器人的用户状态并将其写入存储。

扩展

注解

机器人与之通信的每个用户都有自己的独立存储对象,可用于在与该用户进行的所有对话中保留有关用户的信息。

const { UserState, MemoryStorage } = require('botbuilder');

const userState = new UserState(new MemoryStorage());

构造函数

UserState(Storage, string)

创建新的 UserState 实例。

方法

getStorageKey(TurnContext)

返回当前用户状态的存储密钥。

继承的方法

clear(TurnContext)

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

createProperty<T>(string)

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

delete(TurnContext)

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

get(TurnContext)

返回缓存的状态对象,如果未缓存,则返回未定义。

load(TurnContext, boolean)

读取并缓存轮次支持状态对象。

saveChanges(TurnContext, boolean)

保存缓存的状态对象(如果已更改)。

构造函数详细信息

UserState(Storage, string)

创建新的 UserState 实例。

new UserState(storage: Storage, namespace?: string)

参数

storage
Storage

要保留用户状态的存储提供程序。

namespace

string

(可选)要追加到存储密钥的命名空间。 默认为空字符串。

方法详细信息

getStorageKey(TurnContext)

返回当前用户状态的存储密钥。

function getStorageKey(context: TurnContext): string | undefined

参数

context
TurnContext

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

返回

string | undefined

当前用户状态的存储密钥。

继承的方法详细信息

clear(TurnContext)

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

function clear(context: TurnContext): Promise<void>

参数

context
TurnContext

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

返回

Promise<void>

表示异步操作的 promise。

注解

在调用 saveChanges() 之前,将不保留清除的状态对象。

await botState.clear(context);
await botState.saveChanges(context);

继承自BotState.clear

createProperty<T>(string)

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

function createProperty<T>(name: string): StatePropertyAccessor<T>

参数

name

string

要添加的属性的名称。

返回

属性的访问器。

继承自BotState.createProperty

delete(TurnContext)

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

function delete(context: TurnContext): Promise<void>

参数

context
TurnContext

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

返回

Promise<void>

表示异步操作的 promise。

注解

如果状态对象存在,将从存储中删除。 如果状态对象已读取并缓存,则会清除缓存。

await botState.delete(context);

继承自BotState.delete

get(TurnContext)

返回缓存的状态对象,如果未缓存,则返回未定义。

function get(context: TurnContext): any | undefined

参数

context
TurnContext

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

返回

any | undefined

缓存状态对象或未定义(如果未缓存)。

注解

此示例演示如何同步获取已加载和缓存的状态对象:

const state = botState.get(context);

继承自BotState.get

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

继承自BotState.load

saveChanges(TurnContext, boolean)

保存缓存的状态对象(如果已更改)。

function saveChanges(context: TurnContext, force?: boolean): Promise<void>

参数

context
TurnContext

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

force

boolean

(可选)如果 true 状态将始终写出,而不考虑其更改状态。 默认为 false

返回

Promise<void>

表示异步操作的 promise。

注解

如果在缓存状态对象中传递了 force 标志,无论其是否已更改,以及是否缓存了对象,都将创建一个空对象,然后保存。

await botState.saveChanges(context);

继承自BotState.saveChanges