BotState class
フレームワークの状態の永続化スコープの基本クラス。
注釈
このクラスは、ユーザーとの会話のターンごとに、指定されたストレージ プロバイダーに対して状態の読み取りと書き込みを行います。
ConversationState
や UserState
などの派生クラスは、特定のストレージ オブジェクトの永続化に使用されるキーを決定するために使用される StorageKeyFactory
を提供します。
読み込まれた状態オブジェクトは、ターンの有効期間中、コンテキスト オブジェクトに自動的にキャッシュされ、変更された場合にのみストレージに書き込まれます。
コンストラクター
Bot |
新しい BotState インスタンスを作成します。 |
メソッド
clear(Turn |
ターンの現在の状態オブジェクトをクリアします。 |
create |
個々のプロパティを読み取ってボット状態ストレージ オブジェクトに書き込むための新しいプロパティ アクセサーを作成します。 |
delete(Turn |
現在のターンのバッキング状態オブジェクトを削除します。 |
get(Turn |
キャッシュされた状態オブジェクトを返すか、キャッシュされていない場合は未定義を返します。 |
load(Turn |
ターンのバッキング状態オブジェクトを読み取ってキャッシュします。 |
save |
キャッシュされた状態オブジェクトが変更された場合に保存します。 |
コンストラクターの詳細
BotState(Storage, StorageKeyFactory)
新しい BotState インスタンスを作成します。
new BotState(storage: Storage, storageKey: StorageKeyFactory)
パラメーター
- storage
- Storage
状態オブジェクトを保持するストレージ プロバイダー。
- storageKey
- StorageKeyFactory
特定のターンのストレージ キーを計算する必要がある場合に呼び出される関数。
メソッドの詳細
clear(TurnContext)
ターンの現在の状態オブジェクトをクリアします。
function clear(context: TurnContext): Promise<void>
パラメーター
- context
- TurnContext
ユーザーとの会話の現在のターンのコンテキスト。
戻り値
Promise<void>
非同期操作を表す Promise。
注釈
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>
非同期操作を表す Promise。
注釈
状態オブジェクトが存在する場合、ストレージから削除されます。 状態オブジェクトが読み取られ、キャッシュされている場合、キャッシュはクリアされます。
await botState.delete(context);
get(TurnContext)
キャッシュされた状態オブジェクトを返すか、キャッシュされていない場合は未定義を返します。
function get(context: TurnContext): any | undefined
パラメーター
- context
- TurnContext
ユーザーとの会話の現在のターンのコンテキスト。
戻り値
any | undefined
キャッシュされた状態オブジェクト。キャッシュされていない場合は未定義です。
注釈
この例では、既に読み込まれ、キャッシュされている状態オブジェクトを同期的に取得する方法を示します。
const state = botState.get(context);
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>
非同期操作を表す Promise。
注釈
force
フラグがキャッシュ状態オブジェクトに渡された場合は、変更されたかどうかに関係なく保存され、オブジェクトがキャッシュされていない場合は、空のオブジェクトが作成され、保存されます。
await botState.saveChanges(context);