UserState class
讀取和寫入 Bot 至記憶體的用戶狀態。
- Extends
備註
Bot 與其通訊的每個使用者都會有自己的隔離儲存物件,可用來保存與該使用者所有交談中使用者的相關信息。
const { UserState, MemoryStorage } = require('botbuilder');
const userState = new UserState(new MemoryStorage());
建構函式
User |
建立新的 UserState 實例。 |
方法
get |
傳回目前用戶狀態的儲存金鑰。 |
繼承的方法
clear(Turn |
清除回合的目前狀態物件。 |
create |
建立新的屬性存取子,以便讀取和寫入 Bot 狀態記憶體物件中的個別屬性。 |
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() saveChanges(),否則不會保存清除的狀態物件。
await botState.clear(context);
await botState.saveChanges(context);
createProperty<T>(string)
建立新的屬性存取子,以便讀取和寫入 Bot 狀態記憶體物件中的個別屬性。
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);