共用方式為


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

若要與集合對話方塊互動,您可以使用目前的 TurnContext 呼叫createCoNtext () 。 這會建立 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 () 新增至集合的對話方塊。

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 () 新增至集合的對話方塊。

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

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

備註

此雜湊會保存到狀態儲存體,並用來偵測對話集的變更。