虽然这项技术允许我们开发一个可以以任何方式运行的机器人,但这并不意味着我们应该这样做。用户对他们的消息通信有一定的期望,例如确认收到消息、快速响应以及稍后继续对话的能力。虽然与机器人交谈不同于与人交谈,但给朋友发消息是最相似的体验。由于用户仍在习惯机器人,将这些交互作为机器人行为的样本是合理的。
成功的机器人可以表现出许多类型的行为,但有一些共同的模式和风格。这并不是说创新停滞了;一点也不!在给定技术和预算限制的情况下,这些使用案例基于空间中常见的观察模式。创新的空间已经成熟,唯一的问题是,我们集体想象力的极限是什么?
这些常见的用例在与用户交流时也遵循一定的规则。在我的职业生涯中,对我来说,最重要的是要认识到大多数技术用户并不像我一样使用技术。我喜欢命令行及其精确性。不是以英语为母语的人,自然语言的模糊性一直令人困扰。但是机器人给了用户使用这种模糊自然语言的能力。因此,bot 开发者需要进行一定程度的自我约束。开发人员可以很容易地创建一个更像使用命令行的机器人体验。
考虑到自然语言处理(NLP)的局限性和用户的期望,小心机器人在不理解事物和要求用户反馈时的行为变得比以往任何时候都重要。通过谨慎的方法和有意识地选择我们发送给用户的回复类型,创造愉快的体验是可以实现的。
开发人员正在创造各种各样的对话体验。我们可以体验专门从事销售物品、回答产品问题、发送订单状态、回答订单查询、提供云基础设施、搜索多个数据源、共享 cat GIFs 以及做数百万其他事情的机器人。
在高层次上,我们将把机器人分成两个更大的类别:消费者和企业。当然,子类别之间有重叠,但也有一些明显的分界线。
消费者机器人通常可以通过 Facebook Messenger、Slack 和其他公共消息应用等通道获得;网络聊天;语音接口;或者甚至是定制的移动应用。在质量等级的低端,它们只不过是玩具。在高端,它们可能是令人印象深刻的设计和工程壮举。由于我们在第 1 章中讨论的人工智能和机器人热,许多公司都在他们的产品中部署机器人。例如,Atlassian 为其 JIRA 产品设计了一款 Slackbot。甚至亚马逊也在其移动购物应用中集成了聊天机器人。你还会发现一些品牌通过 Facebook Messenger 涉足机器人。脸书页面使公司很容易拥有一个面向外部的公共通道,通过公共帖子或 Messenger 与客户交谈。如果是 Messenger,人工代理需要登录到页面收件箱并回复每条消息。许多公司的第一步是部署一个信使机器人,它可以回复一些类型的用户查询,剩下的就交给人类来回复。就效用而言,我们仍在试图回答这个问题,什么对用户最有意义?该领域的各种机器人无疑表明了这一点。以下是一些有效方法的大类。
FAQ bot 通常是团队首次进入 bot 和 NLP 领域进行技术测试。这是一个简单的用例:让我们将现有的 FAQ 作为一个机器人放在 Facebook Messenger 或企业消息中。这样,最常见的问题可以在员工花时间回答之前被机器人捕捉到。从用户的角度来看,一个简单的基于文本的 FAQ 机器人可以变成非常有趣和美观的东西。一个常见问题的答案不仅仅是一段无聊的文字。答案可以包括更多的内容,例如图像、视频和附加内容的链接。
例如,考虑一个金融服务机器人,它可以回答关于金融话题的不同类型的问题。在其响应中,它可以嵌入额外的感兴趣的建议主题作为按钮。此时,用户可以查看相关术语及其定义。如果有网站直观地表现了一个概念,例如,铁秃鹰期权投资策略,这些链接可以包含在用户点击以获得更多信息的响应中。当然,我们的对话设计需要平衡所有的内容和可能的用户超载。介于两者之间的最佳点可以有效地为用户提供愉快的机器人体验。图 4-1 是国际儿童基金会嵌入网页的 FAQ bot 的一个例子。
图 4-1
一个基本的 FAQ 机器人
面向任务的机器人是一个虚拟代理,可以帮助用户完成特定领域的各种任务。这些类型的机器人有时被称为礼宾机器人。例如,JIRA 的 Slackbot(图 4-2 )是面向任务的。它可以根据团队正在进行的对话创建任务和分配任务。
图 4-2
JIRA Slackbot 公司
我曾经做过一个糖尿病教练聊天机器人,它可以帮助患有二型糖尿病的用户根据之前的对话和其他用户数据,个性化地询问饮食和锻炼建议。还有一些金融服务机器人连接到交易账户,更新用户的账户余额和头寸,甚至进行交易,如 TD Ameritrade 机器人(图 4-3 )。我们在第三章中开发的日历路易斯应用是日历任务机器人的基础。
图 4-3
使用 TD Ameritrade bot 进行股票交易
广播机器人是一个有趣的概念,非常普遍。我们可以认为这是一个无需提示就向用户伸出手的机器人,而不是用户先联系机器人。在一些机器人中,让机器人参与进来更像是一种模式。例如,不同的新闻机器人,如 Facebook Messenger 上的 CNN 机器人,将每天发布当天的重大新闻。
在一些名人机器人实现中可以看到这种情况的子集和更细微的版本。通常,这些类型的机器人是为了好玩而存在的。他们采用名人的个性,可以与用户谈论感兴趣的话题、产品以及与名人分支机构互动的其他方式。这个机器人可以引导你浏览主题脚本,给你发送视频和图像,也许还可以谈论名人代言的产品。对话几乎完全由机器人驱动,而不是用户。这是一个有趣的讲故事的设备,但它的成功归结于一致的新鲜内容。图 4-4 展示了一个项目 Cali 的例子,这是一个为了好玩而创建的 Snoop Dogg 机器人。
图 4-4
卡利项目:Snoop Dogg bot
尽管机器人在北美还不算大,但它们正慢慢开始向消费者出售产品。从技术角度来看,这并不是一个非常具有挑战性的任务;更大的挑战是让用户使用短信,而不是应用或网站。这些类型的机器人中电子商务集成的数量各不相同。例如,一些机器人提供完整的端到端购物体验。通过机器人看衣服(图 4-5 )或鲜花(图 4-6 )与网购体验是不同的。一些机器人倾向于这一点,并提供古怪或创新的方式来计算出什么产品显示给用户,以获得冲动购买!
图 4-5
路易威登机器人
我们还遇到过这样的情况,机器人只负责广播购买收据和订单状态更新,具有有限的机器人功能。其他所有事情都会自动发送给人工客户支持代表。虽然这种体验并没有完全融入电子商务,但它是进入这一旅程并让客户熟悉机器人的第一步。简而言之,公司正在拥抱所谓的数字化驱动的消费者之旅,机器人是这一战略的一部分。 1
图 4-6
1-800-Flowers.com 助手
不同的消息平台提供不同级别的支付支持。我们当然可以通过机器人创建电子商务,提供一个自定义的结帐页面,用户可以在那里输入他们的支付信息。对话在此暂停。一旦付款被处理,一条消息被发送到机器人继续对话。另一方面,Facebook Messenger 提供了与 Stripe 和 PayPal 等系统的更深层次的集成。在这个版本中,支付体验完全保留在 Facebook Messenger 应用中。从用户的角度来看,摩擦越少越好。随着用户开始更加信任消息应用来存储他们的支付信息,我们将会看到越来越多这样的支付集成。苹果发布了其商务聊天 2 产品,你可以打赌 Apple Pay 支付已经完全集成。 3
企业机器人可能更专门针对某个领域或主题。它们通常使用网络聊天组件部署,或者集成到企业消息系统中,甚至集成到企业呼叫中心和交互式语音应答(IVR)系统中,如思科的统一通信中心。它们也可以部署在电子邮件端点上。机器人可以与单点登录解决方案、强大的现有企业后端和知识管理数据库集成。根据企业的实践,这些将从简单的试点机器人到机器学习驱动的大规模部署。
企业场景中最常见的用例之一是事件自助服务。企业拥有庞大的知识库,内部问讯台代理使用这些知识库向用户传达可能的解决方案,并指导他们解决问题。机器人可以向用户传达这些一步一步的故障诊断指导。例如,对内部帮助台最常见的查询之一是密码重置。如果公司能够自动处理这样的请求,它们可以减少大量的交易量,坦率地说,还可以节省资金。你可以想象一个电器制造商发布了一个聊天机器人来帮助诊断和修复问题,然后才让服务工程师介入。
这些自助服务机器人背后的想法是,它们可以为用户提供各种自助服务内容,尤其是最常见的查询,甚至可以自动化客户支持团队正在进行的一些常见工作。这些机器人通常与实时聊天系统集成在一起,这样用户最初可能会与机器人聊天,但在机器人的指示不能解决问题的情况下,可以迅速重新路由到与人类客户服务代理的实时聊天或电话对话。
机器人过程自动化(RPA)是当今的一个大话题。像 IPsoft 这样的公司专注于构建能够自动化业务和 IT 任务的机器人和技术。在这种情况下,机器人不一定是聊天机器人,而是执行自动化的计算机代理。这些任务可以包括从账户供应、网站自动化和业务流程自动化的一切。有些公司专注于创建自动化平台,如 Automation Anywhere 和 UiPath。随着机器学习这些天被用于从合同分析到皮肤癌诊断的一切,聊天机器人可以作为这些过程的优秀前端。在 RPA 场景中,聊天机器人更像是一个指挥者,而不是自动化者。此外,这些机器人可能会集成到 Remedy 和 ServiceNow 等票务系统中,以跟踪其工作。
在其他情况下,聊天机器人对用户不太可见。例如,Slack 是一个很好的机器人平台,可以监听团队对话,并在合适的自然语言出现时显示数据。简单监听一些自然语言输入并提供答案的机器人是一种自动化机器人。举例来说,一组医学专家浏览程序的文本描述,并负责将它们翻译成保险代码。这个过程可以由机器学习算法自动完成,该算法可以观察团队的行为和结果,然后接管数据。
同样,逻辑背后的实际大脑可能不在机器人本身内部。可能有一个单独的系统实现保险代码的机器学习模型。或者,自动化代码可以是 Python、PowerShell 或任何其他脚本。机器人充当接收自然语言和编排自动化的前端(图 4-7 )。
图 4-7
自动化机器人流程示例
另一种类型的企业机器人可以解决跨各种数据源的自然语言搜索问题。许多公司在不同的系统上有巨大的知识库。能够使用自然语言集成所有这些资源是非常重要的。在这些机器人中有一些有趣的选择,比如向用户显示哪些内容,以什么格式显示,以及如何收集反馈,以确定哪些内容对查询最有用。
这些项目试图解决的自然语言搜索的更大问题非常有趣,超出了本书的范围。这种类型的机器人在群组对话环境中非常有趣,当群组就感兴趣的主题进行对话时,机器人会查询文章、报告、白皮书和案例研究。在搜索过程中,小组对机器人的反馈可以进一步提供监督学习数据,以进一步改善搜索体验。
我们如何开始开发一个对话式聊天机器人?一个好的地方是试图用图形表示对话流。聊天机器人可以处理什么样的任务?它需要寻找什么意图和实体来实现这些目标?它如何帮助填充缺失的数据?
我们将这个对话称为一个图,它是由边连接的 Node 的集合。图 4-8 展示了一个无向图。图中的每个 Node 都至少与一个其他 Node 相连。每个 Node 代表对话的一个状态,边代表状态之间的转换。
图 4-8
无向图
我们将在边缘使用箭头来显示流向。这被称为有向图。我们从根 Node 开始。根 Node 是会话开始时的状态。使用我们的日历机器人作为示例,我们知道我们的机器人应该支持添加新条目、编辑现有条目、删除条目、检查可用性以及提供日历或事件的摘要。我们可以用图 4-9 来表示这个机器人。
图 4-9
日历礼宾机器人对话的表示
注意,会话基于用户的话语在状态之间移动,这决定了 LUIS 意图。会话中的每个 Node 都有内置的逻辑来解析实体并为状态执行正确的逻辑。在一个状态执行完它的逻辑后,会话转移回根 Node。
状态之间的转换可以通过编程或用户输入来调用。例如,假设我们的机器人支持创建日历约会。回想一下在第 3 章中,我们创建了一个 LUIS 应用,它允许我们传递几个实体或者不传递实体作为话语的一部分来添加一个日历条目。如果我们的添加新条目对话框没有收到关于主题和被邀请者的信息,例如在话语“明天下午 2 点见面”中,我们可以在另一个状态中引出该信息。另一方面,如果用户使用包含这些实体的话语,例如“明天下午 2 点和 kim 见面喝咖啡”,我们不需要引出这些额外的信息。这种有条件的状态转换如图 4-10 所示。
图 4-10
基于用户输入有条件地转移到状态
创建对话图的过程通常被称为意图和实体映射;我们将意图和实体组合建模为状态 Node 之间的转换。
机器人对用户查询的响应可以采取多种形式。理解不同的选项以及如何最好地利用它们是任何 bot 设计的关键。在接下来的章节中,我们将深入探讨各种通道中的一些概念。
我们现在理解了如何获取用户输入并将其映射到机器人状态和功能。我们也知道如何将我们的机器人代码组织成各种对话状态。我们设计的下一步是弄清楚机器人给用户发送什么作为回报。机器人可以以多种方式做出反应。默认情况下,我们认为文本或语音输出。最典型的情况是,我们简单地发送回纯文本。一些消息通道支持更复杂的东西,比如 Markdown 或 HTML。Markdown 是一种纯文本格式语法。 5 以下降价输入转换成图 4-11 中的格式化内容:
图 4-11
格式化的减价文件
# H1
# H2
Hello, my _name_ is **Szymon Rozga**
I like:
1\. Bots
1\. Dogs
1\. Music机器人平台也可以支持语音响应。许多平台也支持语音合成标记语言(SSML)作为语音输出格式。SSML 是一种标记语言,它提供了关于应该如何使用诸如停顿、中断、速率和音高的变化等元素来构造语音的元数据。这里有一个来自 WC3 推荐 6 的不言自明的例子:
<?xml version="1.0"?>
<speak version="1.0" xmlns:="http://www.w3.org/2001/10/synthesis"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis/synthesis.xsd"
xml:lang="en-US">
That is a <emphasis> big </emphasis> car!
That is a <emphasis level="strong"> huge </emphasis>
bank account!
</speak>对用户的输出不一定总是文本。我们可以使用图像和视频向用户传达许多想法。作为发送回用户的任何消息的一部分,我们可能会附加各种内容,如视频、音频文件和图像。具体支持的格式将取决于底层操作系统和通道。一些系统还允许其他文件附件,例如 XML 文件或某种本机格式。
向用户展示内容的另一种机制是卡片。卡片通常是图像、文本和作为行动号召的可选按钮的组合。我们的 YouTube 搜索机器人从第章 1 (图 4-12 )清晰地显示了视频名称、描述,以及一组卡片中的观看按钮。
图 4-12
卡片横向列表;也称为旋转木马
这种布局被称为传送带。它并排展示了几个卡片,并让用户能够滑动或滚动各个卡片。
按钮通常作为卡片的一部分发送,但是它们也可以作为没有关联图像的独立元素发送。按钮有很多种。最受欢迎的三个按钮用于打开网页、向机器人发回消息(IM back)或向机器人发回消息(post back)。IM back 和 post back 的区别在于,post back 消息不会出现在消息历史中,而 IM back 消息会出现在消息历史中。不是所有的通道都支持这两种方法,但是通过点击按钮向机器人发送消息的总体精神得到了广泛的支持。
另一种按钮是登录按钮。登录按钮通过 web 视图中的登录启动身份验证或授权流程。登录完成后,机器人会收到任何必要的访问令牌,并可以继续进行认证会话,如图 4-13 所示。
图 4-13
具有建议操作/快速回复的认证机器人
前面描述的所有内容都保存在用户的聊天记录中。传送带、卡片、按钮,当然还有所有的文本都可供用户滚动浏览。有一种形式的元素只在包含它的消息的上下文中显示。该功能是建议操作,也称为快速回复。这些按钮显示在用户界面的底部,直到用户做出响应。这些按钮是清晰的行动号召,也是愉悦对话体验不可或缺的工具。图 4-14 显示了一个使用建议动作引导用户到 TD Ameritrade bot 中可用的视频类别的示例。
图 4-14
TD Ameritrade bot 中的视频类别建议操作
老实说,没有人会向机器人聊天窗口发送用户名和密码。这是一个安全风险。我们不希望脸书或 Slack 或任何其他通道在他们的消息历史中有我们用户的登录凭证。归根结底,bot 只是一个 web 服务,因此使用标准的 OAuth 或 OpenID 连接流是一种自然的选择。
正确的方法是利用登录卡,这是一种包含按钮的卡,该按钮可以打开登录网页,供用户输入他们的凭据(图 4-15 )。
图 4-15
标准的签到卡
通常,这个登录页面将是一个 OAuth 页面(图 4-16 )。
图 4-16
OAuth 授权代码流
OAuth 2.0 7 是互联网上基于令牌授权的标准。OAuth 2.0 支持几种不同类型的授权流。三足 OAuth 流允许资源所有者(用户)向 API(服务提供者)授予对应用(消费者)的访问权。在 bot 的上下文中,它看起来如下:
-
用户点击按钮以在第三方的 web 视图中打开服务的登录页面,并输入他们的用户名/密码组合。这个登录页面的 URI 通常包括一个客户端 ID 和一个重定向 URI。重定向 URI 是我们的 bot web 服务的一个端点。
-
一旦用户成功登录,该服务会将用户重定向回机器人重定向 URI。机器人重定向 URI 端点接收授权码。这是用户对应用使用服务的授权。机器人用授权码交换来自令牌端点的访问令牌(和可选的刷新令牌)。
-
当代表 bot 用户向服务发出请求时,bot 使用访问令牌。
-
通常,访问令牌是短期的,而刷新令牌是长期的。在任何时候,机器人都可以通过发布刷新令牌从令牌端点请求新的访问令牌。
关于这个和其他 OAuth 流程的细节有大量的文档。RFC 是一个很好的起点。 8 关键是 bot 是一个 web 服务,完整的 OAuth 流程可以以集成的方式发生。从 UX 的角度来看,唯一棘手的部分是确保浏览器窗口在登录完成后自动关闭。各种通道处理这一问题的方式略有不同。虽然我们可以手动实现整个流程,我们在第 8 章中展示了这一点,但是 Bot 框架确实提供了额外的工具来促进这一过程。9
在支持卡片的平台上,卡片是用户体验的一个重要组成部分。我们讨论了通用卡的概念。一些频道提供几种专用卡。例如,可以发送收据卡(图 4-17 )来传达购物收据,其中包含总额、税款、付款确认等信息。
图 4-17
信使收据模板
此外,Messenger 使开发人员能够使用四种航空旅行卡,如行程、登机牌(图 4-18 )、值机和航班更新。
图 4-18
Messenger 登机牌模板
轻按登机牌会显示一个带有二维码的全屏版本,可以在机场使用(图 4-19 )。根据我们的目标平台,可能会有其他模板供我们使用。如果它们存在并且符合你的用例,就使用它们。它们提供了良好的本地用户体验。
图 4-19
Messenger 登机牌模板详细信息
另一种形式的专用卡是使用自定义图形的卡。一种常见的方法是在机器人处理用户输入时在 web 服务上生成自定义图形。在第 11 章中,我们将使用 Headless Chrome 构建一个简单的自定义图形渲染器,以展示使用 HTML 和 JavaScript 构建自定义图形是多么容易。
最后,微软推出了一种新的卡片格式,叫做适配卡。 10 自适应卡,我们将在第 11 章展开,是一种平台无关的方式,使用简单的基于容器的布局引擎来描述文本、图像和输入字段的布局。然后,Microsoft Bot 通道连接器能够将这些卡渲染成特定于平台的渲染。自适应卡是定制图形方法的专用版本,集成了逻辑以在卡中生成按钮和行为。有多少频道最终会支持这种格式还有待观察,但许多微软拥有的频道已经这样做了。
图 4-20 显示了一个适配卡的 HTML 渲染示例。
图 4-20
自适应卡样本
图 4-21 显示了微软团队应用上输入表单卡的渲染。
图 4-21
输入表单卡示例
机器人可能包括几个其他有趣的功能,可以真正使机器人体验发光。以下是其中的一些功能:
-
主动消息传递:机器人可以异步联系用户,由事件而不是传入的消息触发。如果 bot 存储了用户的地址(服务 URL、对话和用户 id 的组合),它可以利用它与用户进行通信。
-
人工移交:在客户服务场景和高度可见的面向公众的机器人部署中,拥有一种将对话从机器人无缝转移到人工代理的机制是一个成功机器人的必要条件。
-
支付:越来越多的平台开放他们的支付系统,以方便对话整合。Facebook Messenger 的支付程序集成了 easy Stripe/PayPal。微软为整个 Windows 生态系统和 Bot 框架的支付提供了简单的条纹集成。
在开发 bot 体验时,我们应该遵循一些重要的指导原则。其中一些可能并不适用于每种类型的机器人,或者可能与消费者机器人和企业机器人更相关,但是在设计机器人时应该至少记住这个列表。
正如在第 1 章和第 2 章中所讨论的,机器人的技术和智能程度是有限的。我们的机器人不应该试图变得太聪明;人类总是能以这样或那样的方式破解机器人。例如,处理来自用户的问候,如“嗨”或“你好”,这是完全可以的。我们不想陷入处理各种不同类型问候的困境。不要开始为“怎么了?"对"嗨。“如果你正在读这本书,你很可能没有微软或谷歌的预算(图 4-22 )。我们是来帮忙做任务的,不是一般的 AI。诚实地承认我们机器人的局限性是可以的。
图 4-22
构建机器人的好建议
我们不希望我们的机器人最终出现在恐怖谷。 11 也就是说,与大多数(如果不是全部的话)类人物体一样,真实的人类会觉得有些事情不太对劲,从而产生奇怪和诡异的感觉(图 4-23 )。我们不希望我们的用户有这种感觉。这与用人类的形象来表现你的机器人是相辅相成的。如果你通过一个虚拟形象来表现你的机器人,使用一个明显暗示非人类实体的图标。Siri 和 Cortana 在这方面做得非常好。
图 4-23
我们绝对是在恐怖谷
围绕这个话题有很多文章。 12 值得注意的是,即使 Siri、Cortana 和 Alexa 以及一些较老的虚拟助手都有女性名字,但谷歌和脸书却选择了谷歌助手和 m。这种非性别化机器人的趋势在业内一直持续着。采用女性角色会很快变得怪异,就像电影中 AI 的性感化一样。
我们的机器人不应该在用户不知道下一步该做什么的情况下让用户无所事事。bot 应该有一个欢迎消息,向用户介绍它自己、它的功能以及它能做什么。当用户感到困惑并寻求帮助,或者机器人无法识别用户的输入时,机器人也应该建议一些选项。关键是,如果在对话的任何一点,用户看到一个没有建议后续步骤的空白消息框,这将成为令人困惑的对话体验。Facebook Messenger、Skype 和其他频道具有上下文快速回复功能,在聊天界面底部显示按钮选项(图 4-24 )。提出这样的建议是一个很好的方式来交流我们的机器人的能力和局限性。
图 4-24
下一步最佳行动
机器人通常最终会获得一个名字和个性。虽然我不认为性别化的名字有意义,但你的机器人应该有个性和一致的语气。记住,这些是品牌在向你的顾客说话。有些机器人很健谈。其他人就不那么想了。有些是正式的。其他的更轻松。为你的机器人选择一个并保持一致。此外,尽管这是一项有趣的技术,但如果我们想保持以品牌为中心的声音,我们应该避免使用自然语言生成模型(自动生成响应的机器学习算法)。
机器人为我们提供了不仅仅利用文本的机会。我们可以格式化文本并包含图像、视频和音频文件。我们可以渲染卡片(图 4-25 ),甚至在您的卡片中创建一些自定义图形。我们需要最大限度地利用这些功能
图 4-25
丰富的机器人内容是一个好主意
自然语言很复杂。预计用户输入是模糊的。我们的机器人应该有对话路径来确认信息或引出丢失的数据。如果希望用户输入一个数字,我们应该解析任何可能的输入,但也要清楚机器人的期望。如果可能的话,通过使用快速回复功能向用户提供一些可能值的建议。用户会对这些建议感到满意。没有什么比不知道和不被教导如何与机器人交流更令人沮丧的了。
在我们的机器人的任何一点上,用户应该能够改变对话主题。除非绝对必要,否则我们的机器人应该尝试卡在对话上下文中。例如,让我们假设一个日历机器人正在向用户询问日期。我们的机器人需要一个解析为日期的字符串。如果用户输入“删除明天上午 9 点的约会”,我们的机器人应该优雅地处理查询,而不是说“对不起,这不是一个日期”。请以年/月/日的格式输入日期。
机器人给了我们随时联系用户的能力,即使机器人看不到来自用户的消息。不要滥用这种特权。在消息应用中,用户在收到消息时会收到通知。没有比不断发送提醒或试图重新参与更简单的方法了。一些频道对此也有具体的政策。在信息传递通道中做一个好公民。
如果现在有一件事应该是清楚的,那就是机器人不能理解一切。即使功能范围有限,也会有机器人无法处理的问题。如果与用例相关,我们的机器人应该有能力以某种方式将用户连接到人类代理。无论是显示带有案例号的电话号码,还是无缝集成到实时聊天系统中,我们的机器人都应该清楚我们的用户如何与人类交流,以帮助他们解决问题(图 4-26 )。比如我曾经遇到过一个可以回答常见问题的 bot。我看了一篇关于这个机器人的新闻稿,所以我决定尝试一下。我开始对话,收到一条关于点击按钮的消息。没有按钮。我问:“我能怎么办?”我被转到了一个人类特工那里。在这一点上,我不能做任何事情,直到一个人类处理我的情况。我也不知道需要多长时间。他们的呼叫中心还开着吗?一旦代理人来了,我就和他们说话,然后被送回机器人那里。我完全沉默,没有按钮。我说的是“测试”我得到的下一条消息是我又要被调走了。在这一点上,我只是退出。不要让你的用户沮丧地退出。
图 4-26
与人类交谈的清晰路径
使用对话式体验从用户那里收集数据很简单。使用用户输入来解决 LUIS 的冲突意图并利用该数据来训练 LUIS 也很容易。当然,给予用户输入的重要性应该与给予培训师提供的话语的权重有很大不同。但是如果我们有数据,我们应该利用它。图 4-27 显示了我们如何实现这种方法的例子。在图中,我们将用户反馈存储到主动学习数据存储中,并且我们的主动学习过程确定在使用数据点训练 LUIS 之前应该观察多少相同的反馈。小心基于用户输入的自动化训练。你不想走泰的路。 13
图 4-27
实施主动学习
随着你在不同的消息通道中积累经验,你可能会学到更多的规则,但这个列表是一个很好的起点,我建议我们在每个聊天机器人项目中遵循。
对话设计是一个丰富的领域。对于如何与用户互动,以及如何以文本之外的形式交流想法,我们有许多选择。当开发机器人时,我们的方法应该总是“由用户做正确的事情”用户的会话体验可能对语气、品牌、冗长和过度使用非常敏感(你不需要事事都用卡)。尽管在早期阶段有一些关键的抽象,比如卡片,但这个领域已经发展到可以最好地处理机器人与用户的交互。随着机器人变得越来越普遍,这些机制将会改进,数量也会增加。例如,微软的 adaptive cards 是一个试图拓展机器人在与用户对话中所能提供的功能的项目。我希望随着 bot 变得越来越普遍,消息通道将支持越来越多类型的 bot 卡行为。
我们现在对机器人执行的常见操作以及它们是如何执行的有了很好的基本理解。唯一剩下的问题是,我们如何将所有这些放在代码中?在下一章中,我们将会这样做,并将这些想法付诸实践。
Footnotes [1](#Fn1_source)品牌必须把握数字化驱动的消费者之旅,否则有成为猎物的风险: www.adweek.com/digital/brands-must-grasp-the-digitally-driven-consumer-journey-or-risk-becoming-prey/
苹果商务聊天: https://developer.apple.com/business-chat/
ipsoften Amelia:https://www.ipsoft.com/amelia/
Markdown:语法: https://daringfireball.net/projects/markdown/syntax
语音合成标记语言 1.1 版 WC3 推荐: https://www.w3.org/TR/speech-synthesis11/
OAuth 2.0 文档: https://oauth.net/2/
oath 2.0 RFC:
恐怖谷:为什么我们会觉得类似人类的机器人和玩偶如此令人毛骨悚然: https://www.theguardian.com/commentisfree/2015/nov/13/robots-human-uncanny-valley
机器人仅仅花了六年时间就开始抛弃过时的性别刻板印象: https://qz.com/1033587/it-took-only-six-years-for-bots-to-start-ditching-outdated-gender-stereotypes/
微软让新的人工智能机器人 Tay 沉默: https://techcrunch.com/2016/03/24/microsoft-silences-its-new-a-i-bot-tay-after-twitter-users-teach-it-racism/


























