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'));

コンストラクター

ComponentDialog(string)

Dialog クラスの新しいインスタンスを作成します。

プロパティ

id

ダイアログの一意の ID。 ダイアログの一意の ID を設定します。

telemetryClient

テレメトリ クライアントを設定し、すべての子ダイアログにも適用します。 コンポーネントに追加された今後のダイアログも、このクライアントを継承します。 現在のテレメトリ クライアントを取得します。

継承されたプロパティ

dialogs

コンテナー ダイアログ セット。

EndOfTurn

既定のターン終了の結果を取得します。

メソッド

addDialog(Dialog)

ダイアログ またはプロンプトをコンポーネントの内部 DialogSet に追加します。

beginDialog(DialogContext, O)

ダイアログが開始され、親のダイアログ スタックにプッシュされたときに呼び出されます。 既定では、これは、InitialDialogId で定義されているコンポーネント ダイアログの初期ダイアログの Dialog.BeginDialogAsync(DialogContext, object, CancellationToken) メソッドを呼び出します。 割り込みロジックを実装するには、派生クラスでこのメソッドをオーバーライドします。

continueDialog(DialogContext)

ダイアログが くと呼び出されます。ダイアログはアクティブなダイアログであり、ユーザーは新しい アクティビティで応答します。 このメソッドがオーバーライド されない 場合、ユーザーが応答したときにダイアログが自動的に終了します。

createChildContext(DialogContext)

内部ダイアログ コンテキストを作成します。

endDialog(TurnContext, DialogInstance, DialogReason)

ダイアログが終了するときに呼び出されます。

repromptDialog(TurnContext, DialogInstance)

ダイアログがユーザーに入力を再度求める必要があるときに呼び出されます。

resumeDialog(DialogContext, DialogReason, any)

親のダイアログ スタック上の子ダイアログがこのターンを完了し、このダイアログ コンポーネントに制御を返したときに呼び出されます。

継承されたメソッド

configure(Record<string, unknown>)

オブジェクトを構成するための Fluent メソッド。

findDialog(string)

以前にコンテナーに追加された子ダイアログを検索します。

getConverter(string)
getVersion()

再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。

onDialogEvent(DialogContext, DialogEvent)

現在のダイアログまたは現在のダイアログが開始したダイアログによって、 DialogContext.emitEvent()を使用してイベントが発生したときに呼び出されます。

コンストラクターの詳細

ComponentDialog(string)

Dialog クラスの新しいインスタンスを作成します。

new ComponentDialog(dialogId?: string)

パラメーター

dialogId

string

随意。 ダイアログの一意の ID。

プロパティの詳細

id

ダイアログの一意の ID。 ダイアログの一意の ID を設定します。

string id

プロパティ値

string

ダイアログの ID。

注釈

これは、指定されていない場合は自動的に生成されます。

telemetryClient

テレメトリ クライアントを設定し、すべての子ダイアログにも適用します。 コンポーネントに追加された今後のダイアログも、このクライアントを継承します。 現在のテレメトリ クライアントを取得します。

BotTelemetryClient telemetryClient

プロパティ値

BotTelemetryClient

ログ記録に使用する BotTelemetryClient

継承されたプロパティの詳細

dialogs

コンテナー ダイアログ セット。

dialogs: DialogSet

プロパティ値

DialogContainer.dialogsから継承

EndOfTurn

既定のターン終了の結果を取得します。

static EndOfTurn: DialogTurnResult

プロパティ値

注釈

この結果は、ダイアログ (またはダイアログ内の論理ステップ) が現在のターンの処理を完了し、まだアクティブであり、より多くの入力を待機していることを示します。

Dialog.EndOfTurnから継承

メソッドの詳細

addDialog(Dialog)

ダイアログ またはプロンプトをコンポーネントの内部 DialogSet に追加します。

function addDialog(dialog: Dialog): this

パラメーター

dialog
Dialog

追加する子 ダイアログ またはプロンプト。

返品

this

操作が完了した後の ComponentDialog

注釈

コンポーネントに追加された最初の子の Dialog.id は、initialDialogId プロパティに割り当てられます。

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>)

オブジェクトを構成するための Fluent メソッド。

function configure(config: Record<string, unknown>): this

パラメーター

config

Record<string, unknown>

適用する構成設定。

返品

this

操作の完了後に 構成可能

継承された構成可能な構成

findDialog(string)

以前にコンテナーに追加された子ダイアログを検索します。

function findDialog(dialogId: string): Dialog | undefined

パラメーター

dialogId

string

参照するダイアログの ID。

返品

Dialog | undefined

見つかった場合のダイアログ。それ以外の場合は null。

DialogContainer.findDialogから継承

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

パラメーター

_property

string

条件付きセレクター構成のキー。

返品

セレクター構成のコンバーター。

Configurable.getConverterから継承

getVersion()

再デプロイ時のボットの変更の検出に役立つエンコードされた文字列。

function getVersion(): string

返品

string

ダイアログを再起動する方法でダイアログが変更された場合にのみ変更する一意の文字列。

注釈

既定ではダイアログ ID が返されますが、より正確な変更検出ロジックを提供するためにオーバーライドできます。 スタック上でバージョンが変更されたダイアログが発生すると、 versionChanged イベントが発生します。 このイベントがボットによって処理されない場合は、エラーがスローされ、ボットのエラー ハンドラー ロジックが実行されます。

空の文字列を返すと、コンポーネントのバージョン追跡がすべて無効になります。

Inherited FromDialog.getVersion

onDialogEvent(DialogContext, DialogEvent)

現在のダイアログまたは現在のダイアログが開始したダイアログによって、 DialogContext.emitEvent()を使用してイベントが発生したときに呼び出されます。

function onDialogEvent(dc: DialogContext, e: DialogEvent): Promise<boolean>

パラメーター

dc
DialogContext

会話の現在のターンのダイアログ コンテキスト。

e
DialogEvent

発生しているイベント。

返品

Promise<boolean>

True の 場合は、イベントが現在のダイアログで処理され、バブルを停止する必要があります。

DialogContainer.onDialogEventから継承