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 | 對話框的唯一標識碼。 設定對話框的唯一標識符。 |
telemetry |
取得此對話框的遙測用戶端。 設定此對話框的遙測用戶端。 |
繼承的屬性
End |
取得預設回合結束結果。 |
方法
add |
將新的步驟新增至瀑布。 |
begin |
當 瀑布式Dialog 啟動時呼叫,並推送至對話堆棧。 |
continue |
|
end |
對話框結束時呼叫。 |
get |
取得對話框版本,由標識符和步驟數目組成。 |
resume |
當瀑布式 子系 完成回合時呼叫,將控件傳回此對話框。 |
繼承的方法
configure(Record<string, unknown>) | 用於設定物件的 Fluent 方法。 |
get |
|
on |
使用 |
reprompt |
在衍生類別中覆寫時,將使用者重新命名為輸入。 |
建構函式詳細資料
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
屬性值
備註
此結果表示對話(或對話內的邏輯步驟)已完成目前回合的處理,仍在使用中,而且正在等候更多輸入。
方法詳細資料
addStep(WaterfallStep<O>)
將新的步驟新增至瀑布。
function addStep(step: WaterfallStep<O>): this
參數
- step
要呼叫的異步步驟函式。
傳回
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>
參數
目前交談回合的 DialogContext。
- options
-
O
選擇性的初始資訊,要傳遞至 Dialog。
傳回
Promise<DialogTurnResult>
代表異步操作的 Promise。
備註
如果工作成功,結果會指出對話處理回合之後,對話框 是否仍在使用中。
continueDialog(DialogContext)
當 瀑布式Dialog繼續時呼叫,其中它是使用中的對話框,使用者會以新的 Activity回復。
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()
取得對話框版本,由標識符和步驟數目組成。
function getVersion(): string
傳回
string
對話框版本,由標識符和步驟數目所組成。
resumeDialog(DialogContext, DialogReason, any)
當瀑布式 子系 完成回合時呼叫,將控件傳回此對話框。
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 當目前的對話框應該重新要求使用者輸入時,就會呼叫此方法。 這個方法會針對提示對話框實作。
另請參閱