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');
}
建構函式
Dialog |
建立新的 DialogSet 實例。 |
屬性
telemetry |
設定此對話方塊集的遙測用戶端,並將它套用至所有目前的對話。 設定此對話方塊集的遙測用戶端,並將它套用至所有目前的對話。 新增至集合的未來對話方塊也會繼承此用戶端。 |
方法
add<T>(T) | 將新的對話方塊或提示新增至集合。 |
create |
建立對話方塊內容,可用來處理集合中的對話方塊。 |
find(string) | 尋找先前使用 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 () 新增至集合的對話方塊。
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
當任何子對話方塊版本變更時,將會變更的版本。
備註
此雜湊會保存到狀態儲存體,並用來偵測對話集的變更。