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);
机器人可以使用 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 |
获取集的 Dialogs。 |
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
如果集中已存在要添加的 ,对话 ID 将更新为包含使其唯一的后缀。 因此,向集中添加 2 个名为“duplicate”的对话将导致第一个对话框的 ID 为“duplicate”,第二个对话框的 ID 为“duplicate2”。
createContext(TurnContext)
创建可用于处理集中对话的对话上下文。
function createContext(context: TurnContext): Promise<DialogContext>
参数
- context
-
TurnContext
与用户当前轮次聊天的上下文。
返回
Promise<DialogContext>
表示异步操作的承诺。
find(string)
查找以前使用 add () 添加到集的对话框。
function find(dialogId: string): Dialog | undefined
参数
- dialogId
-
string
对话框的 ID 或查找提示。
返回
Dialog | undefined
如果找到对话框,则为 ;否则为 undefined。
注解
此示例查找名为“greeting”的对话框:
const dialog = dialogs.find('greeting');
getDialogs()
getVersion()
返回集中所有 Dialog.version
值的 32 位哈希。
function getVersion(): string
返回
string
当任何子对话版本更改时将更改的版本。
注解
此哈希将持久保存到状态存储中,并用于检测对对话框集的更改。