你当前正在访问 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 的新增功能,以支持向代理移交(也称为 升级)。
  • 包含三种事件类型的定义,用于指示切换操作。

注释

与特定代理中心的集成不属于库。

其他资源