UserState class
读取机器人的用户状态并将其写入存储。
- Extends
注解
机器人与通信的每个用户都有其自己的独立存储对象,可用于在与该用户进行的所有对话中保存有关该用户的信息。
const { UserState, MemoryStorage } = require('botbuilder');
const userState = new UserState(new MemoryStorage());
构造函数
User |
创建新的 UserState 实例。 |
方法
get |
返回当前用户状态的存储密钥。 |
继承的方法
clear(Turn |
清除轮次的当前状态对象。 |
create |
创建一个新的属性访问器,用于读取单个属性并将其写入机器人状态存储对象。 |
delete(Turn |
删除当前轮次的后备状态对象。 |
get(Turn |
返回缓存状态对象,如果未缓存,则返回未定义状态对象。 |
load(Turn |
读取并缓存轮次的后备状态对象。 |
save |
保存缓存的状态对象(如果已更改)。 |
构造函数详细信息
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>
表示异步操作的承诺。
注解
在调用 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);
继承自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);
saveChanges(TurnContext, boolean)
保存缓存的状态对象(如果已更改)。
function saveChanges(context: TurnContext, force?: boolean): Promise<void>
参数
- context
- TurnContext
与用户当前轮次对话的上下文。
- force
-
boolean
(可选) ,如果 true
无论其更改状态如何,都会始终写出状态。 默认为 false
。
返回
Promise<void>
表示异步操作的承诺。
注解
force
如果在缓存状态对象中传递标志,将保存该标志,而不考虑它是否已更改,如果未缓存任何对象,则将创建一个空对象,然后保存。
await botState.saveChanges(context);