IDialogWaterfallStep interface
傳遞為步驟的函式簽章,DialogAction.waterfall()。
瀑布圖可讓您使用一連串的問題提示使用者提供資訊。 瀑布的每個步驟都可以執行其中一個內建 提示、呼叫 session.beginDialog()來啟動新的對話框,然後使用 skip()手動移至瀑布的下一個步驟,或終止瀑布。
從瀑布步驟呼叫對話或內建提示時,對話或提示的結果會透過 results 參數傳遞至瀑布的下一個步驟。
使用者可以說「永遠不會」之類的專案取消內建提示,因此您應該至少先檢查結果 回應,再繼續。 藉由查看傳回 results.resumed傳回的 程式代碼,可以更詳細地說明瀑布繼續的原因。
您可以使用傳入的 skip() 函式,手動前進到瀑布的下一個步驟。 使用 skip({ response: "some text" }) 呼叫 可讓您更準確地模擬內建提示的結果,並簡化整體瀑布邏輯。
您可以使用呼叫 skip() 或直接不啟動另一個提示或對話,提早終止瀑布。
注意:如果您從最後一個步驟呼叫提示或對話框, 瀑布有隱藏的最後一個步驟,這會自動結束目前的對話框。 當您有深層對話堆疊,而且想要從堆疊上最後一個子系呼叫會話.endDialog() ,以結束整個堆棧,這非常有用。 最後一個子系的關閉會觸發其所有父系移至這個隱藏步驟,而這個隱藏步驟會串聯堆棧的關閉。 這通常是一種想要的行為,但如果您想要避免或阻止它位於中間的某個地方,您需要將步驟新增至瀑布的結尾,該瀑布不會執行任何動作,或呼叫類似 session.send() 之類的專案, 不會向前推進瀑布。