ConversationState class

读取和写入机器人到存储的聊天状态。

Extends

注解

机器人与用户或组进行的每个对话都将具有其自己的独立存储对象,可用于在会话轮次之间保留会话跟踪信息。 可以通过调用 clear () 随时重置此状态信息。

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

const conversationState = new ConversationState(new MemoryStorage());

构造函数

ConversationState(Storage, string)

创建新的 ConversationState 实例。

方法

getStorageKey(TurnContext)

返回当前会话状态的存储密钥。

继承的方法

clear(TurnContext)

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

createProperty<T>(string)

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

delete(TurnContext)

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

get(TurnContext)

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

load(TurnContext, boolean)

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

saveChanges(TurnContext, boolean)

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

构造函数详细信息

ConversationState(Storage, string)

创建新的 ConversationState 实例。

new ConversationState(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);

继承自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>

表示异步操作的承诺。

注解

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

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>

表示异步操作的承诺。

注解

force如果在缓存状态对象中传递标志,将保存该标志,而不考虑它是否已更改,如果未缓存任何对象,则将创建一个空对象,然后保存。

await botState.saveChanges(context);

继承自BotState.saveChanges