共用方式為


ConversationState class

讀取和寫入 Bot 的交談狀態至記憶體。

Extends

備註

Bot 與使用者或群組之間的每個交談都會有自己的隔離儲存物件,可用來在交談回合之間保存交談追蹤資訊。 呼叫 clear(),即可在任何時間點重設此狀態資訊。

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

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

建構函式

ConversationState(Storage, string)

建立新的 ConversationState 實例。

方法

getStorageKey(TurnContext)

傳回目前交談狀態的儲存金鑰。

繼承的方法

clear(TurnContext)

清除回合的目前狀態物件。

createProperty<T>(string)

建立新的屬性存取子,以便讀取和寫入 Bot 狀態記憶體物件中的個別屬性。

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() saveChanges(),否則不會保存清除的狀態物件。

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

繼承自BotState.clear

createProperty<T>(string)

建立新的屬性存取子,以便讀取和寫入 Bot 狀態記憶體物件中的個別屬性。

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