共用方式為


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;

建構函式

WaterfallDialog(string, WaterfallStep<O>[])

建立新的瀑布式對話框,其中包含指定的步驟陣列。

屬性

id

對話框的唯一標識碼。 設定對話框的唯一標識符。

telemetryClient

取得此對話框的遙測用戶端。 設定此對話框的遙測用戶端。

繼承的屬性

EndOfTurn

取得預設回合結束結果。

方法

addStep(WaterfallStep<O>)

將新的步驟新增至瀑布。

beginDialog(DialogContext, O)

瀑布式Dialog 啟動時呼叫,並推送至對話堆棧。

continueDialog(DialogContext)

瀑布式Dialog繼續時呼叫,其中它是使用中的對話框,使用者會以新的 Activity回復。

endDialog(TurnContext, DialogInstance, DialogReason)

對話框結束時呼叫。

getVersion()

取得對話框版本,由標識符和步驟數目組成。

resumeDialog(DialogContext, DialogReason, any)

當瀑布式 子系 完成回合時呼叫,將控件傳回此對話框。

繼承的方法

configure(Record<string, unknown>)

用於設定物件的 Fluent 方法。

getConverter(string)
onDialogEvent(DialogContext, DialogEvent)

使用 DialogContext.emitEvent()引發事件時,由目前對話框或目前對話框啟動的對話框呼叫。

repromptDialog(TurnContext, DialogInstance)

在衍生類別中覆寫時,將使用者重新命名為輸入。

建構函式詳細資料

WaterfallDialog(string, WaterfallStep<O>[])

建立新的瀑布式對話框,其中包含指定的步驟陣列。

new WaterfallDialog(dialogId: string, steps?: WaterfallStep<O>[])

參數

dialogId

string

元件內對話框的唯一標識碼,或將其新增至 。

steps

WaterfallStep<O>[]

(選擇性) 異步瀑布步驟函式的數位。

備註

如需建立有效步驟函式的詳細資訊,請參閱 addStep() 函式。

屬性詳細資料

id

對話框的唯一標識碼。 設定對話框的唯一標識符。

string id

屬性值

string

對話框的識別碼。

備註

如果未指定,系統就會自動產生此專案。

telemetryClient

取得此對話框的遙測用戶端。 設定此對話框的遙測用戶端。

BotTelemetryClient telemetryClient

屬性值

BotTelemetryClient

要用於記錄的 BotTelemetryClient

繼承的屬性詳細資料

EndOfTurn

取得預設回合結束結果。

static EndOfTurn: DialogTurnResult

屬性值

備註

此結果表示對話(或對話內的邏輯步驟)已完成目前回合的處理,仍在使用中,而且正在等候更多輸入。

繼承自Dialog.EndOfTurn

方法詳細資料

addStep(WaterfallStep<O>)

將新的步驟新增至瀑布。

function addStep(step: WaterfallStep<O>): this

參數

step

WaterfallStep<O>

要呼叫的異步步驟函式。

傳回

this

用於 addStep()fluent 呼叫的瀑布式對話。

備註

所有步驟函式都應該是異步的,並傳回 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)

瀑布式Dialog 啟動時呼叫,並推送至對話堆棧。

function beginDialog(dc: DialogContext, options?: O): Promise<DialogTurnResult>

參數

dc
DialogContext

目前交談回合的 DialogContext

options

O

選擇性的初始資訊,要傳遞至 Dialog

傳回

Promise<DialogTurnResult>

代表異步操作的 Promise。

備註

如果工作成功,結果會指出對話處理回合之後,對話框 是否仍在使用中。

continueDialog(DialogContext)

瀑布式Dialog繼續時呼叫,其中它是使用中的對話框,使用者會以新的 Activity回復。

function continueDialog(dc: DialogContext): Promise<DialogTurnResult>

參數

dc
DialogContext

目前交談回合的 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()

取得對話框版本,由標識符和步驟數目組成。

function getVersion(): string

傳回

string

對話框版本,由標識符和步驟數目所組成。

resumeDialog(DialogContext, DialogReason, any)

當瀑布式 子系 完成回合時呼叫,將控件傳回此對話框。

function resumeDialog(dc: DialogContext, reason: DialogReason, result?: any): Promise<DialogTurnResult>

參數

dc
DialogContext

交談目前回合的 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

作業完成之後 可設定

繼承自Configure.configure

getConverter(string)

function getConverter(_property: string): Converter | ConverterFactory

參數

_property

string

條件式選取器組態的索引鍵。

傳回

選取器組態的轉換器。

繼承自可設定.getConverter

onDialogEvent(DialogContext, DialogEvent)

使用 DialogContext.emitEvent()引發事件時,由目前對話框或目前對話框啟動的對話框呼叫。

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

參數

dc
DialogContext

目前交談回合的對話內容。

e
DialogEvent

要引發的事件。

傳回

Promise<boolean>

True 是表示 如果事件是由目前的對話框處理,且反升應該停止。

繼承自Dialog.onDialogEvent

repromptDialog(TurnContext, DialogInstance)

在衍生類別中覆寫時,將使用者重新命名為輸入。

function repromptDialog(_context: TurnContext, _instance: DialogInstance): Promise<void>

參數

_context

TurnContext

回合的內容物件。

_instance
DialogInstance

此對話框的目前狀態資訊。

傳回

Promise<void>

備註

支持驗證和重新提示邏輯的衍生對話應該覆寫此方法。 根據預設,這個方法沒有任何作用。

DialogContext 當目前的對話框應該重新要求使用者輸入時,就會呼叫此方法。 這個方法會針對提示對話框實作。

另請參閱

繼承自Dialog.repromptDialog