DialogSet class
一組相關的對話,可以彼此呼叫。
備註
對話框集的建構函式應該傳遞狀態屬性,以用來保存集合的對話框堆疊:
const { ConversationState, MemoryStorage, ActivityTypes } = require('botbuilder');
const { DialogSet, Dialog, DialogTurnStatus } = require('botbuilder-dialogs');
const convoState = new ConversationState(new MemoryStorage());
const dialogState = convoState.createProperty('dialogState');
const dialogs = new DialogSet(dialogState);
Bot 可以使用 add() 方法,將對話框或提示新增至集合:
class GreetingDialog extends Dialog {
async beginDialog(dc, options) {
await dc.context.sendActivity(`Hi! I'm a bot.`);
return await dc.endDialog();
}
}
dialogs.add(new GreetingDialog('greeting'));
若要與集合對話框互動,您可以呼叫 createContext() 與目前的 TurnContext
。 這會建立 DialogContext
,可用來啟動或繼續執行集合對話框:
// Create DialogContext for the current turn
const dc = await dialogs.createContext(turnContext);
// Try to continue executing an active multi-turn dialog
const result = await dc.continueDialog();
// Send greeting if no other dialogs active
if (result.status == DialogTurnStatus.empty && dc.context.activity.type == ActivityTypes.Message) {
await dc.beginDialog('greeting');
}
建構函式
Dialog |
建立新的 DialogSet 實例。 |
屬性
telemetry |
設定此對話框集的遙測用戶端,並將其套用至所有目前的對話框。 設定此對話框集的遙測用戶端,並將其套用至所有目前的對話框。 未來新增至集合的對話也會繼承此用戶端。 |
方法
add<T>(T) | 將新的對話框或提示新增至集合。 |
create |
建立對話框內容,可用來處理集合中的對話。 |
find(string) | 尋找先前使用 add() add()新增至集合的對話框。 |
get |
取得集合的對話框。 |
get |
傳回集合中所有 |
建構函式詳細資料
DialogSet(StatePropertyAccessor<DialogState>)
建立新的 DialogSet 實例。
new DialogSet(dialogState?: StatePropertyAccessor<DialogState>)
參數
- dialogState
-
StatePropertyAccessor<DialogState>
(選擇性) 用來儲存集合對話框堆疊的狀態屬性。
備註
如果未傳入 dialogState
屬性,則呼叫 createContext() 會傳回錯誤。 您必須手動建立集合的 DialogContext
,並傳入您自己的狀態物件來保存集合對話框堆疊:
const dc = new DialogContext(dialogs, turnContext, state);
屬性詳細資料
telemetryClient
設定此對話框集的遙測用戶端,並將其套用至所有目前的對話框。 設定此對話框集的遙測用戶端,並將其套用至所有目前的對話框。 未來新增至集合的對話也會繼承此用戶端。
BotTelemetryClient telemetryClient
屬性值
BotTelemetryClient
要用於記錄的 BotTelemetryClient。
方法詳細資料
add<T>(T)
將新的對話框或提示新增至集合。
function add<T>(dialog: T): this
參數
- dialog
-
T
要新增的對話框或提示。 如果對話框集上有 telemetryClient,則會將它新增至每個對話。
傳回
this
作業完成之後所設定的對話框。
備註
如果新增 Dialog.id
已存在於集合中,對話框標識符將會更新為包含後綴,使其是唯一的。 因此,將名為 「duplicate」 的 2 個對話框新增至集合會導致第一個對話方塊具有 「duplicate」 的標識碼,而第二個對話框的標識碼為 「duplicate2」。。
createContext(TurnContext)
建立對話框內容,可用來處理集合中的對話。
function createContext(context: TurnContext): Promise<DialogContext>
參數
- context
-
TurnContext
目前與使用者交談回合的內容。
傳回
Promise<DialogContext>
代表異步作的承諾。
find(string)
尋找先前使用 add() add()新增至集合的對話框。
function find(dialogId: string): Dialog | undefined
參數
- dialogId
-
string
對話框的標識碼或要查閱的提示。
傳回
Dialog | undefined
如果找到對話框,則為 ;否則為未定義。
備註
此範例會尋找名為 「greeting」 的對話框:
const dialog = dialogs.find('greeting');
getDialogs()
getVersion()
傳回集合中所有 Dialog.version
值的32位哈希。
function getVersion(): string
傳回
string
當任何子對話版本變更時,將會變更的版本。
備註
此哈希會保存至狀態記憶體,並用來偵測對話框集的變更。