你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于: SDK v4
不管机器人拥有多少人工智能,它可能仍然需要将对话交给人类。 如果机器人由于 AI 限制而无法理解用户,或者请求无法自动执行且需要人工作操作,那么转交给人工可能是必要的。 在这种情况下,机器人应识别何时需要交出对话,并为用户提供流畅的过渡。
Microsoft Bot Framework 是一个开放平台,可让开发人员与各种代理参与平台集成。
移交集成模型
Microsoft Bot Framework 支持两种模型来与代理参与平台集成。 这两个模型的交接协议是相同的,但载入详细信息在模型和代理参与平台之间有所不同。
目标不是提供与任何客户系统集成的通用解决方案,而是为机器人开发人员和系统集成商提供公共语言和最佳实践,以便在有人参与的情况下构建对话式 AI 系统。
机器人作为代理
在第一个模型(称为 机器人作为代理)中,机器人加入连接到代理中心的实时代理的行列,并响应用户请求,就好像请求来自任何其他 Bot Framework 通道一样。 用户与机器人之间的聊天可以升级到人工代理,此时机器人会脱离活动对话。
此模型的主要优点是其简单性-你可以尽量少地将现有机器人添加到代理中心,代理中心将处理消息路由的复杂性。
机器人作为代理
第二个模型称为 机器人作为代理。 用户直接与机器人交谈,直到机器人决定它需要人工代理的帮助。 机器人中的消息路由器组件将会话重定向到代理中心,将会话调度到相应的代理。 机器人留在循环中,可以收集对话记录、筛选消息,或向代理和用户提供附加内容。
灵活性和控制是此模型的主要优势。 机器人可以支持多个通道,并控制用户、机器人和代理中心之间的对话升级和路由方式。
移交协议
协议以启动和状态更新事件为中心,其中启动事件由机器人发送到通道,而状态更新由通道发送到机器人。
移交启动
机器人会创建 一个移交启动 事件,以启动移交。
活动可以包括:
- 移交请求的上下文,用于将会话路由到合适的代理。
- 客户和机器人之间发生的对话记录,以便代理可以在移交开始之前阅读对话内容。
以下是常见的移交初始事件属性:
名称:必需, 名称 属性必须设置为“handoff.initiate”。
对话:必需, 对话 属性描述活动所在的会话。 对话 必须 包含
Id
的内容。值:可选,值 属性可以包含代理中心的特定 JSON 内容,供中心用于将会话路由到相关代理。
附件:可选, 附件 属性可以包含脚本作为附件。 Bot Framework 定义 脚本 附件类型。 附件可以内联发送(受到大小限制)或通过
ContentUrl
脱机发送。handoffEvent.Attachments = new List<Attachment> { new Attachment { Content = transcript, ContentType = "application/json", Name = "Transcript", } };
注释
代理中心 必须忽略 它们无法理解的附件类型。
当机器人检测到需要将会话移交给代理时,它通过发送移交启动事件来表明其意图。 适用于 C# 的 SDK 包括一个方法,用于创建有效的交接启动事件。
var activities = GetRecentActivities();
var handoffContext = new { Skill = "credit cards" };
var handoffEvent =
EventFactory.CreateHandoffInitiation(
turnContext, handoffContext, new Transcript(activities));
await turnContext.SendActivityAsync(handoffEvent);
移交状态
代理中心将 移交状态 事件发送给机器人。 该事件通知机器人有关启动的移交操作的状态。
注释
机器人 无需 处理移交状态事件;但是,他们 不得 拒绝它。
以下是常见的移交状态事件字段:
名称:必需, 名称 属性必须设置为“handoff.status”。
对话:必需, 对话 属性描述活动所在的会话。 对话 必须 包含
Id
的内容。值:必需,描述交接操作当前状态的值属性。 该值具有以下属性。
状态:必需, 状态 属性可以具有以下值之一:
价值 含义 接受了 代理接受了请求并控制了会话。 “failed” 移交请求失败。 消息属性可能包含与失败相关的其他信息。 完成了 交接请求已完成。 消息:可选, 消息 属性是由代理中心定义的对象。
下面是一些示例值对象:
{ "state" : "completed" }
{ "state" : "failed", "message" : "Can't find agent with requested skill" }
移交库
已创建 移交库 ,以补充 Bot Framework v4 SDK 以支持切换;具体说来:
- 实现 Bot Framework SDK 的新增功能,以支持向代理移交(也称为 升级)。
- 包含三种事件类型的定义,用于指示切换操作。
注释
与特定代理中心的集成不属于库。