共用方式為


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');
}

建構函式

DialogSet(StatePropertyAccessor<DialogState>)

建立新的 DialogSet 實例。

屬性

telemetryClient

設定此對話框集的遙測用戶端,並將其套用至所有目前的對話框。 設定此對話框集的遙測用戶端,並將其套用至所有目前的對話框。 未來新增至集合的對話也會繼承此用戶端。

方法

add<T>(T)

將新的對話框或提示新增至集合。

createContext(TurnContext)

建立對話框內容,可用來處理集合中的對話。

find(string)

尋找先前使用 add() add()新增至集合的對話框。

getDialogs()

取得集合的對話框。

getVersion()

傳回集合中所有 Dialog.version 值的32位哈希。

建構函式詳細資料

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()

取得集合的對話框。

function getDialogs(): Dialog[]

傳回

Dialog[]

Dialog陣列。

getVersion()

傳回集合中所有 Dialog.version 值的32位哈希。

function getVersion(): string

傳回

string

當任何子對話版本變更時,將會變更的版本。

備註

此哈希會保存至狀態記憶體,並用來偵測對話框集的變更。