ComponentDialog class
他の子ダイアログを含むダイアログの基本クラス。
- Extends
注釈
コンポーネント ダイアログを使用すると、ボットのロジックを、別の ComponentDialog または DialogSetにダイアログとして追加できるコンポーネントに分割できます。 コンポーネントは、ノード パッケージの一部としてエクスポートし、他のボット内で使用することもできます。
新しいコンポーネントを定義するには、ComponentDialog からクラスを派生させ、クラス コンストラクター内に子ダイアログを追加します。
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;
その後、コンポーネントの新しいインスタンスを別の DialogSet または ComponentDialogに追加できます。
const dialogs = new DialogSet(dialogState);
dialogs.add(new FillProfileDialog('fillProfile'));
コンストラクター
| Component |
Dialog クラスの新しいインスタンスを作成します。 |
プロパティ
| id | ダイアログの一意の ID。 ダイアログの一意の ID を設定します。 |
| telemetry |
テレメトリ クライアントを設定し、すべての子ダイアログにも適用します。 コンポーネントに追加された今後のダイアログも、このクライアントを継承します。 現在のテレメトリ クライアントを取得します。 |
メソッド
| add |
|
| begin |
ダイアログが開始され、親のダイアログ スタックにプッシュされたときに呼び出されます。 既定では、これは、InitialDialogId で定義されているコンポーネント ダイアログの初期ダイアログの Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) メソッドを呼び出します。 割り込みロジックを実装するには、派生クラスでこのメソッドをオーバーライドします。 |
| continue |
ダイアログが 続くと呼び出されます。ダイアログはアクティブなダイアログであり、ユーザーは新しい アクティビティで応答します。 このメソッドがオーバーライド されない 場合、ユーザーが応答したときにダイアログが自動的に終了します。 |
| create |
内部ダイアログ コンテキストを作成します。 |
| end |
ダイアログが終了するときに呼び出されます。 |
| reprompt |
ダイアログがユーザーに入力を再度求める必要があるときに呼び出されます。 |
| resume |
親のダイアログ スタック上の子ダイアログがこのターンを完了し、このダイアログ コンポーネントに制御を返したときに呼び出されます。 |
継承されたメソッド
| configure(Record<string, unknown>) | オブジェクトを構成するための Fluent メソッド。 |
| find |
以前にコンテナーに追加された子ダイアログを検索します。 |
| get |
|
| get |
再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。 |
| on |
現在のダイアログまたは現在のダイアログが開始したダイアログによって、 |
コンストラクターの詳細
ComponentDialog(string)
Dialog クラスの新しいインスタンスを作成します。
new ComponentDialog(dialogId?: string)
パラメーター
- dialogId
-
string
随意。 ダイアログの一意の ID。
プロパティの詳細
id
ダイアログの一意の ID。 ダイアログの一意の ID を設定します。
string id
プロパティ値
string
ダイアログの ID。
注釈
これは、指定されていない場合は自動的に生成されます。
telemetryClient
テレメトリ クライアントを設定し、すべての子ダイアログにも適用します。 コンポーネントに追加された今後のダイアログも、このクライアントを継承します。 現在のテレメトリ クライアントを取得します。
BotTelemetryClient telemetryClient
プロパティ値
BotTelemetryClient
ログ記録に使用する BotTelemetryClient 。
継承されたプロパティの詳細
dialogs
EndOfTurn
既定のターン終了の結果を取得します。
static EndOfTurn: DialogTurnResult
プロパティ値
注釈
この結果は、ダイアログ (またはダイアログ内の論理ステップ) が現在のターンの処理を完了し、まだアクティブであり、より多くの入力を待機していることを示します。
Dialog.EndOfTurnから継承
メソッドの詳細
addDialog(Dialog)
beginDialog(DialogContext, O)
ダイアログが開始され、親のダイアログ スタックにプッシュされたときに呼び出されます。 既定では、これは、InitialDialogId で定義されているコンポーネント ダイアログの初期ダイアログの Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) メソッドを呼び出します。 割り込みロジックを実装するには、派生クラスでこのメソッドをオーバーライドします。
function beginDialog(outerDC: DialogContext, options?: O): Promise<DialogTurnResult>
パラメーター
- outerDC
- DialogContext
会話の現在のターンの親 DialogContext 。
- options
-
O
オプション。ダイアログに渡す初期情報。
返品
Promise<DialogTurnResult>
非同期操作を表す Promise。
注釈
タスクが成功した場合、結果は、ダイアログによってターンが処理された後もダイアログがアクティブかどうかを示します。
continueDialog(DialogContext)
ダイアログが 続くと呼び出されます。ダイアログはアクティブなダイアログであり、ユーザーは新しい アクティビティで応答します。 このメソッドがオーバーライド されない 場合、ユーザーが応答したときにダイアログが自動的に終了します。
function continueDialog(outerDC: DialogContext): Promise<DialogTurnResult>
パラメーター
- outerDC
- DialogContext
会話の現在のターンの親 DialogContext 。
返品
Promise<DialogTurnResult>
非同期操作を表す Promise。
注釈
タスクが成功した場合、結果は、ダイアログによってターンが処理された後もダイアログがアクティブかどうかを示します。 結果に戻り値が含まれる場合もあります。
createChildContext(DialogContext)
内部ダイアログ コンテキストを作成します。
function createChildContext(outerDC: DialogContext): DialogContext
パラメーター
- outerDC
- DialogContext
外部ダイアログ コンテキスト
返品
作成されたダイアログ コンテキスト。
endDialog(TurnContext, DialogInstance, DialogReason)
ダイアログが終了するときに呼び出されます。
function endDialog(context: TurnContext, instance: DialogInstance, reason: DialogReason): Promise<void>
パラメーター
- context
-
TurnContext
この ターンの TurnContext オブジェクト。
- instance
- DialogInstance
親のダイアログ スタック上のこのコンポーネント ダイアログ のインスタンスに関連付けられている状態情報。
- reason
- DialogReason
ダイアログが終了した理由。
返品
Promise<void>
非同期操作を表す Promise。
注釈
このメソッドが親ダイアログのコンテキストから呼び出されると、コンポーネント ダイアログ は終了する前に、その内部ダイアログスタック上のすべてのダイアログをキャンセルします。
repromptDialog(TurnContext, DialogInstance)
ダイアログがユーザーに入力を再度求める必要があるときに呼び出されます。
function repromptDialog(context: TurnContext, instance: DialogInstance): Promise<void>
パラメーター
- context
-
TurnContext
この ターンの TurnContext オブジェクト。
- instance
- DialogInstance
このダイアログの状態情報。
返品
Promise<void>
非同期操作を表す Promise。
resumeDialog(DialogContext, DialogReason, any)
親のダイアログ スタック上の子ダイアログがこのターンを完了し、このダイアログ コンポーネントに制御を返したときに呼び出されます。
function resumeDialog(outerDC: DialogContext, _reason: DialogReason, _result?: any): Promise<DialogTurnResult>
パラメーター
- outerDC
- DialogContext
会話の現在のターンの DialogContext 。
- _reason
- DialogReason
ダイアログが再開された理由。
- _result
-
any
オプション。呼び出されたダイアログから返される値。 返される値の型は、子ダイアログに依存します。
返品
Promise<DialogTurnResult>
非同期操作を表す Promise。
注釈
タスクが成功した場合、結果は、このダイアログ ターンが処理された後もこのダイアログがアクティブかどうかを示します。 一般に、子ダイアログは、親のコンテキストで beginDialog(DialogContext, object) を呼び出して開始されました。 ただし、DialogContext.replaceDialog(string, object) メソッドが呼び出された場合、論理子ダイアログは元のダイアログとは異なる場合があります。 このメソッドがオーバーライド されない 場合、ダイアログはユーザーが応答したときに自動的にその RepromptDialog(ITurnContext, DialogInstance) を呼び出します。
継承済みメソッドの詳細
configure(Record<string, unknown>)
findDialog(string)
以前にコンテナーに追加された子ダイアログを検索します。
function findDialog(dialogId: string): Dialog | undefined
パラメーター
- dialogId
-
string
参照するダイアログの ID。
返品
Dialog | undefined
見つかった場合のダイアログ。それ以外の場合は null。
getConverter(string)
function getConverter(_property: string): Converter | ConverterFactory
パラメーター
- _property
-
string
条件付きセレクター構成のキー。
返品
セレクター構成のコンバーター。
getVersion()
再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。
function getVersion(): string
返品
string
ダイアログを再起動する方法でダイアログが変更された場合にのみ変更する一意の文字列。
注釈
既定ではダイアログ ID が返されますが、より正確な変更検出ロジックを提供するためにオーバーライドできます。 スタック上でバージョンが変更されたダイアログが発生すると、 versionChanged イベントが発生します。 このイベントがボットによって処理されない場合は、エラーがスローされ、ボットのエラー ハンドラー ロジックが実行されます。
空の文字列を返すと、コンポーネントのバージョン追跡がすべて無効になります。
Inherited FromDialog.getVersion
onDialogEvent(DialogContext, DialogEvent)
現在のダイアログまたは現在のダイアログが開始したダイアログによって、 DialogContext.emitEvent()を使用してイベントが発生したときに呼び出されます。
function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>
パラメーター
会話の現在のターンのダイアログ コンテキスト。
発生しているイベント。
返品
Promise<boolean>
True の 場合は、イベントが現在のダイアログで処理され、バブルを停止する必要があります。