你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将会话从机器人转给人工
适用于: SDK v4
无论机器人拥有多少人工智能,有时候还是需要将会话传给人工。 这可能是必需的,如果机器人不能理解用户(由于 AI 限制),或者如果请求不能自动完成并需要人工操作的话。 在这种情况下,机器人应识别何时需要进行转交,并为用户提供平稳的过渡体验。
Microsoft Bot Framework 是一个开放平台,允许开发人员与各种代理参与平台集成。
移交集成模型
Microsoft 机器人框架支持两种模型,可用于与代理参与平台集成。 这两种模型的移交协议完全相同,但在模型和代理参与平台之间,载入详细信息会有所不同。
目标不是为任何客户的系统提供一个通用的集成解决方案,而是为机器人开发人员和系统集成商提供一种通用语言和最佳实践,以构建与人在循环中的对话式人工智能系统。
机器人即代理 (Agent)
在第一个模型(称为机器人即代理)中,机器人加入连接到代理中心的人工代理行列,并像响应来自任何其他 Bot Framework 通道的请求一样响应用户请求。 用户与机器人之间的对话可以升级到人工代理,此时机器人将从活动会话中退出。
此模式的主要优点是它非常简单-只需简单操作就可以将现有机器人载入到代理中心,而所有消息路由的复杂性都由代理中心处理。
机器人即代理 (Proxy)
第二个模型称为机器人即代理 (Proxy)。 用户直接与机器人进行讨论,直到机器人决定它需要人工代理的帮助。 机器人中的消息路由器组件将会话重定向到代理中心,代理中心将会话分派给相应的代理。 机器人保持在循环中,可以收集会话的脚本、筛选消息或向代理和用户提供其他内容。
灵活性和控制性是此模型的主要优点。 机器人可支持各种通道,并控制如何在用户、机器人和代理中心之间升级和路由会话。
移交协议
该协议的核心是机器人发送到通道的启动事件以及通道发送到机器人的状态更新。
移交启动
移交启动事件由机器人创建,用于启动移交。
该事件可能包括:
- 将会话路由到正确的代理所需的移交请求的上下文。
- 在启动移交之前,代理可以读取在客户和机器人之间发生的会话。
以下是常见的移交初始事件属性:
名称:必需,名称属性必须设置为“handoff.initiate”。
对话:必须,对话属性用于描述存在的聊天活动。 对话话 必须包含对话
Id
。值:可选,值属性可以包含中心可用于将会话路由到相关代理的特定于代理中心的 JSON 内容。
附件:可选,附件属性可以包含脚本作为附件。 Bot Framework 定义脚本附件类型。 附件可以内联发送(受大小限制),也可以通过提供
ContentUrl
脱机发送。handoffEvent.Attachments = new List<Attachment> { new Attachment { Content = transcript, ContentType = "application/json", Name = "Transcript", } };
注意
代理中心必须忽略它们不理解的附件类型。
当机器人检测到需要将会话移交给某个代理时,它会发送一个移交启动事件来传达意图。
适用于 C# 的 SDK 包括用于创建有效交接启动事件的 CreateHandoffInitiation
方法。
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
。值:必须,值属性用于描述移交操作的当前状态。 本值具有以下属性。
状态:必需,状态属性可以具有以下值之一:
值 含义 “已接受” 代理已接受请求并控制了对话。 “失败” 移交请求失败。 信息属性可能包含与失败相关的其他信息。 “已完成” 移交请求已完成。 消息:可选, 消息 属性是由代理中心定义的对象。
下面是一些示例值对象:
{ "state" : "completed" }
{ "state" : "failed", "message" : "Can't find agent with requested skill" }
移交库
创建移交库是为了补充机器人框架 v4 SDK 以支持移交;具体包括:
- 实现对机器人框架 SDK 的增加,以支持移交给代理(也称为升级)。
- 包含用于信令切换操作的三种事件类型的定义。
注意
库中不包含与特定代理中心的集成。