BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Actions on Google和API.AI构建会话式应用

| 作者 Kent Weare 关注 9 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2017年1月3日. 估计阅读时间: 7 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在Amazon re:Invent大会上,Amazon发布了深度学习服务Lex,该服务底层所使用的技术与Alexa应用到Amazon移动蓝牙和Wi-Fi Echo扬声器中的技术一样。在Amazon发布该服务之后不久,Google就发布了Actions on Google项目,使开发者能够构建基于Google Assistant的语音交互应用,并与Google Home设备进行集成。

图片来源: https://madeby.google.com/home/

Google的高级开发工程师Wayne Piekarsk将Actions on Google平台描述为一种集成方式:

开发者可以通过它将自己的服务与Google Assistant集成到一起。

该集成的实现方式是:

会话行为(Conversation Action)允许开发者通过一个双向窗口满足用户的请求。当用户请求一个Action的时候,Google Assistant就会处理该请求,决定由哪个Action处理该请求最好,并调用相关的会话行为。调用之后,开发者开发的会话行为就能掌控剩下的所有事情,包括如何欢迎用户,如何满足用户的请求,以及如何结束会话。

为了阐述Actions on Google的功能,Google使用了一个私人厨师的示例应用,该应用允许最终用户通过Google Home设备与食谱查找服务交互。首先,最终用户需要告诉该应用自己现在的情绪以及所拥有的佐料,然后会话应用会解析用户的情绪,理解可用的佐料有哪些,之后会根据用户的情绪和食欲为其提供食谱。

编写这种类型的应用是非常具有挑战性的,因为很难准确地提取Action的意义。Solvvy的联合创始人和CTO Mehdi Samadi解释说:

现在即使利用AI技术,将“告诉我附近便宜的Indian餐馆在哪里”这样的命令/指令转换成一组可执行的命令集也不是一件容易的任务。我们首先需要理解用户想要寻找“Indian”风味的餐馆,然后需要知道用户心中的“便宜”到底指什么价位。

Google开发会话行为的目的就是为了应对这些上下文敏感的挑战,以帮助开发者构建会话App。

图片来源: (screenshot) https://www.youtube.com/watch?v=HNfE0uaKcfY

会话行为由三个主要的组件组成,包括:

  • 调用触发器(Invocation Triggers)定义了用户如何调用和发现Action。一旦被触发,Action就会展开一个由对话框定义的会话与用户交互。
  • 对话框(Dialogs )定义了用户如何与Action进行交谈,同时它也是Action的用户界面。它们依靠实现代码推动会话的前行。
  • 实现(Fulfillment)是处理用户输入并返回响应的代码,它是一个REST服务。实现通常还包含一些执行具体行为的逻辑,例如检索菜谱或者新闻并大声朗读。

调用会话行为的方式有三种:

  • 会话API,它提供了与Google Assistant通信所必须使用的请求和响应的格式。
  • Actions SDK,包含一个NodeJS客户端类库,行为包(Action Package)定义,CLI和Web模拟器。
  • 包含API.AI在内的其他工具。

API.AI是Google最近收购的一家公司,开发者可以通过它来构建会话接口。Google负责工程的副总裁Scott Huffman在2016年9月曾宣称:

超过60,000名开发者正在使用API.AI在Slack、Facebook Messenger和Kik等环境中构建会话式体验。

在Actions on Google平台上,开发者可以将API.AI接入自己的会话界面上以减少会话API通常所需要的文字转录量。Piekarsk着重强调了在Actions on Google平台上使用API.AI的一些好处:

API.AI为会话接口的创建提供了一个直观的图形用户界面,同时它还会处理会话状态的管理和表单的填充等繁重的任务。

图片来源:(screenshot) https://www.youtube.com/watch?v=HNfE0uaKcfY

为了处理一个会话,开发者可以使用控制台来定义Intents。在Google私人厨师食谱的示例中,Intents包括定义需要从用户那里获取的信息,例如材料、温度、菜式和烹饪时间。

接下来,开发者需要提供一些例句。API.AI会使用这些例句训练机器学习算法,以便于处理其他来自于用户的句子。开发者不需要为API.AI编写正则表达式来解析其他的句子。

图片来源:https://www.youtube.com/watch?v=HNfE0uaKcfY

开发者可以人工地为每个信息指定可接受的值。一旦提供了这些内容,API.AI就能使用这些信息从用户所说的句子中提取语义。例如,开发者可以定义一组映射到某种蛋白质的实体。如果私人厨师App想要在食谱中包含蛋白质,那么可以从开发者定义的一组同义词(例如牛肉、羊肉、豆腐和鸡肉等)中选取。

当用户与应用通信的时候,用户可以提供自然信息,包括一些无序的、只言片语的信息,如果应用没有接收到完整的信息,或者接受到的信息不明确,那么它会通过一些跟进的问题来获取信息。

开发者还可以将Intents连接到后端的webhook,这样就可以通过连接到IFTTT、Zapier或者Azure Logic Apps等第三方平台上实现扩展。当一个webhook被调用的时候,所有适合的数据都会以JSON字符串的方式传送。

开发者在控制台上配置好了自己的Intents和实体之后,他们就可以在API.AI的Web模拟器上启动一个测试,在将其提供给所有的Google Home用户之前首先通过私人的Google Home进行预览。

查看英文原文Building Conversational Apps Using Actions on Google and API.AI

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT