次の方法で共有


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

このコンポーネントのインスタンスに関連付けられている状態情報は、親のダイアログ スタック ダイアログ

戻り値

Promise<void>

非同期操作を表す Promise。

注釈

このメソッドが親ダイアログのコンテキストから呼び出されると、コンポーネント Dialog は、終了する前にその内部ダイアログ スタック上のすべてのダイアログを取り消します。

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

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

戻り値

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

継承元構成可能な.getConverter

getVersion()

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

function getVersion(): string

戻り値

string

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

注釈

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

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

Dialog.getVersion から継承された

onDialogEvent(DialogContext, DialogEvent)

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

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

パラメーター

dc
DialogContext

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

e
DialogEvent

発生しているイベント。

戻り値

Promise<boolean>

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

DialogContainer.onDialogEvent から継承された