WaterfallDialog class
ウォーターフォールは、ユーザーに一連の質問を求める目的で最適化されたダイアログです。
- Extends
-
Dialog<O>
注釈
ウォーターフォールは、順番に実行される関数のスタックを受け入れます。 各ウォーターフォールステップはユーザーの質問をすることができ、ユーザーの応答は step.result
を介してウォーターフォールの次のステップに渡されます。 特殊な step.value
オブジェクトを使用して、ステップ間で値を保持できます。
const { ComponentDialog, WaterfallDialog, TextPrompt, NumberPrompt } = require('botbuilder-dialogs);
class FillProfileDialog extends ComponentDialog {
constructor(dialogId) {
super(dialogId);
// Add control flow dialogs
this.addDialog(new WaterfallDialog('start', [
async (step) => {
// Ask user their name
return await step.prompt('namePrompt', `What's your name?`);
},
async (step) => {
// Remember the users answer
step.values['name'] = step.result;
// Ask user their age.
return await step.prompt('agePrompt', `Hi ${step.values['name']}. How old are you?`);
},
async (step) => {
// Remember the users answer
step.values['age'] = step.result;
// End the component and return the completed profile.
return await step.endDialog(step.values);
}
]));
// Add prompts
this.addDialog(new TextPrompt('namePrompt'));
this.addDialog(new NumberPrompt('agePrompt'))
}
}
module.exports.FillProfileDialog = FillProfileDialog;
コンストラクター
Waterfall |
指定されたステップの配列を含む新しいウォーターフォール ダイアログを作成します。 |
プロパティ
id | ダイアログの一意の ID。 ダイアログの一意の ID を設定します。 |
telemetry |
このダイアログのテレメトリ クライアントを取得します。 このダイアログのテレメトリ クライアントを設定します。 |
継承されたプロパティ
End |
既定のターン終了の結果を取得します。 |
メソッド
add |
ウォーターフォールに新しいステップを追加します。 |
begin |
WaterfallDialog が開始され、ダイアログ スタックにプッシュされたときに呼び出されます。 |
continue |
|
end |
ダイアログが終了するときに呼び出されます。 |
get |
ID とステップ数で構成されるダイアログ バージョンを取得します。 |
resume |
子 WaterfallDialog ターンが完了し、このダイアログに制御が返されたときに呼び出されます。 |
継承されたメソッド
configure(Record<string, unknown>) | オブジェクトを構成するための Fluent メソッド。 |
get |
|
on |
現在のダイアログまたは現在のダイアログが開始したダイアログによって、 |
reprompt |
派生クラスでオーバーライドされると、ユーザーに入力を要求します。 |
コンストラクターの詳細
WaterfallDialog(string, WaterfallStep<O>[])
指定されたステップの配列を含む新しいウォーターフォール ダイアログを作成します。
new WaterfallDialog(dialogId: string, steps?: WaterfallStep<O>[])
パラメーター
- dialogId
-
string
コンポーネント内のダイアログの一意の ID、またはコンポーネントの追加対象の設定。
- steps
-
WaterfallStep<O>[]
(省略可能) 非同期ウォーターフォール ステップ関数の配列。
注釈
有効なステップ関数の作成の詳細については、addStep() 関数を参照してください。
プロパティの詳細
id
ダイアログの一意の ID。 ダイアログの一意の ID を設定します。
string id
プロパティ値
string
ダイアログの ID。
注釈
これは、指定されていない場合は自動的に生成されます。
telemetryClient
このダイアログのテレメトリ クライアントを取得します。 このダイアログのテレメトリ クライアントを設定します。
BotTelemetryClient telemetryClient
プロパティ値
BotTelemetryClient
ログ記録に使用する BotTelemetryClient。
継承されたプロパティの詳細
EndOfTurn
既定のターン終了の結果を取得します。
static EndOfTurn: DialogTurnResult
プロパティ値
注釈
この結果は、ダイアログ (またはダイアログ内の論理ステップ) が現在のターンの処理を完了し、まだアクティブであり、より多くの入力を待機していることを示します。
メソッドの詳細
addStep(WaterfallStep<O>)
ウォーターフォールに新しいステップを追加します。
function addStep(step: WaterfallStep<O>): this
パラメーター
- step
呼び出す非同期ステップ関数。
戻り値
this
addStep()
への流暢な呼び出しのためのウォーターフォール ダイアログ。
注釈
すべてのステップ関数は非同期で、DialogTurnResult
を返す必要があります。 関数に渡される WaterfallStepContext
は DialogContext
から派生し、DialogTurnResult
を返す多数のスタック操作メソッドが含まれているため、通常は、呼び出した DialogContext メソッドから結果を返すことができます。
ステップ関数自体は、非同期クロージャのいずれかになります。
const helloDialog = new WaterfallDialog('hello');
helloDialog.addStep(async (step) => {
await step.context.sendActivity(`Hello World!`);
return await step.endDialog();
});
名前付き非同期関数:
async function helloWorldStep(step) {
await step.context.sendActivity(`Hello World!`);
return await step.endDialog();
}
helloDialog.addStep(helloWorldStep);
または、this
ポインターにバインドされているクラス メソッド。
helloDialog.addStep(this.helloWorldStep.bind(this));
beginDialog(DialogContext, O)
WaterfallDialog が開始され、ダイアログ スタックにプッシュされたときに呼び出されます。
function beginDialog(dc: DialogContext, options?: O): Promise<DialogTurnResult>
パラメーター
会話の現在のターンの DialogContext。
- options
-
O
省略可能。ダイアログに渡す初期情報。
戻り値
Promise<DialogTurnResult>
非同期操作を表す Promise。
注釈
タスクが成功した場合、結果は、ターンがダイアログによって処理された後も、ダイアログ がまだアクティブかどうかを示します。
continueDialog(DialogContext)
function continueDialog(dc: DialogContext): Promise<DialogTurnResult>
パラメーター
会話の現在のターンの DialogContext。
戻り値
Promise<DialogTurnResult>
非同期操作を表す Promise。
注釈
タスクが成功した場合、結果は、ダイアログによってターンが処理された後もダイアログがアクティブかどうかを示します。 結果に戻り値が含まれる場合もあります。
endDialog(TurnContext, DialogInstance, DialogReason)
ダイアログが終了するときに呼び出されます。
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
パラメーター
- context
-
TurnContext
会話の現在のターンのコンテキスト。
- instance
- DialogInstance
現在のダイアログのインスタンス。
- reason
- DialogReason
ダイアログが終了する理由。
戻り値
Promise<void>
getVersion()
ID とステップ数で構成されるダイアログ バージョンを取得します。
function getVersion(): string
戻り値
string
ID とステップ数で構成されるダイアログ のバージョン。
resumeDialog(DialogContext, DialogReason, any)
子 WaterfallDialog ターンが完了し、このダイアログに制御が返されたときに呼び出されます。
function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>
パラメーター
会話の現在のターンの DialogContext。
- reason
- DialogReason
(xref:botbuilder-dialogs。DialogReason) ダイアログが再開された理由。
- result
-
any
オプション。呼び出されたダイアログから返される値。 返される値の型は、子ダイアログに依存します。
戻り値
Promise<DialogTurnResult>
非同期操作を表す Promise。
継承済みメソッドの詳細
configure(Record<string, unknown>)
オブジェクトを構成するための Fluent メソッド。
function configure(config: Record<string, unknown>): this
パラメーター
- config
-
Record<string, unknown>
適用する構成設定。
戻り値
this
操作が完了した後の 構成可能な。
継承構成可能。構成
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
パラメーター
- _property
-
string
条件付きセレクター構成のキー。
戻り値
セレクター構成のコンバーター。
onDialogEvent(DialogContext, DialogEvent)
現在のダイアログまたは現在のダイアログが開始したダイアログによって、DialogContext.emitEvent()
を使用してイベントが発生したときに呼び出されます。
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
パラメーター
会話の現在のターンのダイアログ コンテキスト。
発生しているイベント。
戻り値
Promise<boolean>
True の 場合は、イベントが現在のダイアログで処理され、バブルを停止する必要があります。
repromptDialog(TurnContext, DialogInstance)
派生クラスでオーバーライドされると、ユーザーに入力を要求します。
function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>
パラメーター
- _context
-
TurnContext
ターンのコンテキスト オブジェクト。
- _instance
- DialogInstance
このダイアログの現在の状態情報。
戻り値
Promise<void>
注釈
検証ロジックと再プロンプト ロジックをサポートする派生ダイアログは、このメソッドをオーバーライドする必要があります。 既定では、このメソッドは無効です。
DialogContext は、現在のダイアログでユーザーからの入力を要求する必要があるときに、このメソッドを呼び出します。 このメソッドは、プロンプト ダイアログ用に実装されます。
も参照