Dialogflower-适用于Yandex Alice的Google Dialogflow


几个月前,Yandex 推出了语音助手Alice的Beta版 ,并在其中打开了API。 就在最近,我把所有东西都公开了。 现在,数百万用户可以直接从移动搜索,导航器和Yandex浏览器通过语音启动各种功能和服务。 毫不奇怪,有越来越多的语音技能。 但是对话框API假设您必须能够进行编程,必须拥有自己的带有HTTPS的服务器,并且还必须能够以自然语言处理请求...

同时,Google长期以来都有一个免费且相当方便的对话框设计器,名为Dialogflow。 当然,他不开箱即用地支持Alice的协议,因此这个主意纠正了这种情况,以便开发人员(不仅是)无需服务器即可快速(并且不仅如此)为Alice创造技能,使他们能够理解自然的语音和对话上下文。

什么是Dialogflow?


图片

Dialogflow是Google的一项在线服务,可让您为Google助手 (称为agent )创建自己的聊天机器人或功能 。 Habré上已经有一些不错的文章,讨论了该产品的主要工具。 这是其中之一

实际上,Dialogflow可以将用户的自然语言(以及俄语)短语与某些“非语言”含义(称为intent )匹配,并回答一些问题。 此外,他还掌握了对话的上下文,以便可以在先前的评论中对下一个短语做出反应。

该工具非常易于管理,并且仍然存储请求的所有统计信息,因此您可以使用新的意图重新培训代理,或者一键补充现有的意图。 实际上,这就是培训的过程-您仅显示与代理中特定意图有关的请求示例,而Dialogflow会自动构建模型并越来越好地了解用户。 如果您需要执行某些功能,他还可以从短语中选择一些实体,例如日期或城市。

为什么是爱丽丝?


爱丽丝有一个类似于电报API的API。 换句话说,要创建Alice的技能,您需要提高一个服务器,该服务器将接收来自Alice的用户的文本请求,并以所需的格式响应数据。 一切似乎都很简单,但是为了创建甚至最简单的技能,您将需要学习Alice的协议,使用HTTPS来提高您的公共服务器,编写可以理解人类语言并维护对话上下文的代码。

这样您不必每次都执行所有这些步骤,但是同时,如果您不是程序员,并且确实需要直接掌握该技能,则可以使用Dialogflow。

对话花


图片

仅Dialogflow不支持Alice的协议,因此您不能仅仅将特工变成一种技能。 为此,制作了dialogflower.com服务,该服务本质上是一个适配器-它一方面实现Alice的协议,另一方面连接到Dialogflow代理。 从而将代理变成一种技能。 没有任何服务器和代码。

图片

创建一个代理


图片

因此,现在我们只能集中讨论代理中对话本身的逻辑。 首先,您需要在dialogflow.com网站上创建此代理。

输入后,将要求我们提供代理商的名称并选择其语言。 名称中只能使用拉丁字母,并且请记住将语言切换为俄语。

之后,您可以添加意图-我们的代理可以理解并以某种方式响应它们的主题。

默认欢迎意向


默认情况下,每个代理中都存在此意图。 它不是在某些用户短语上触发的,而是在welcome事件上触发的。 也就是说,当用户使用“启动该技能是我最必要的技能”这样的短语来启动您在Alice中的技能时。 然后,仍然没有来自用户的命令,作为响应的代理通常应简单地告诉下一步该做什么。

如果您在意向列表中单击“默认欢迎意向”,则可以在页面底部添加“响应-答案”,座席每次都会从中随机选择一个并将其发送给Alice。

爱丽丝仍然知道如何显示按钮和链接,然后我们将展示如何将它们添加到答案中

单击添加响应-文本响应,然后添加文本响应选项。

默认后备意图


图片

当用户说出代理不能归因于任何现有意图的短语时,就会触发该意图。 即,当代理根本不理解用户的请求时。 在这里,您还可以设置当我们不知道该怎么回答时,爱丽丝将给出的答案。

我们回应副本


如果单击左侧菜单中的“意图”一词旁边的加号,则可以添加新的意图,并为其指定一个短语列表,您需要对这些短语进行回答。 在“ 训练短语”列表中,添加用户可能发音的短语。 他们越多越好。

当然,Dialogflow对英语的理解比对俄语的理解要好。 因此,不要指望他理解所有含义适当的同义词。 在这方面,我们的模拟Aimylogic效果更好,我将在下面讨论。

不要忘记添加意图的答案,然后单击“ 保存”按钮。 没有它,什么都不会起作用。
您可以在此处-屏幕右侧进行测试。 在立即尝试字段中写下测试短语,然后查看您的代理回答了什么。

建立技能


现在一切准备就绪,可以将我们创建的代理固定到Alice并在Yandex Dialog控制台中对其进行测试。 为此,请访问dialogflower.com ,然后单击创建技能 。 在出现的窗口中,指定来自代理的客户端访问令牌 。 可以在Dialogflow的代理设置页面上找到它。 单击“ 完成”,然后您将拥有一个Webhook URL ,我们将使用该URL进入Yandex对话框。

图片

然后为Alice创建一项新技能,并在他的设置中指定此Webhook URL。 除此之外,对于测试,您只需要想出技能的名称,就不需要其他所有字段。 单击保存,然后转到测试选项卡。 在这里,您可以编写一些内容并验证您的技能是否按预期工作。

我们增加了功能


现在我们的技能已经准备就绪,所有更改将只影响Dialogflow上的代理。 只需添加和更改意图,别忘了单击“保存”按钮并在Yandex.Dialogs控制台中测试结果。

如何理解背景


Dialogflow可以链接意图,因此您的技能可以适当地响应对话上下文中所说的短语。 为此,只需将意图添加到另一个意图。 为此,请转到意图列表并将鼠标悬停在它们之一上。 右侧出现模糊的“ 添加后续意图”消息。 单击它并添加一个可以在上一个上下文中使用的意图。

就是说,例如,如果您有一个意图响应诸如“天气如何”之类的短语,则可以添加具有诸如“明天”之类的短语的意图。 然后,只有在用户首先要求告知天气时,代理才会处理此短语。

如何在Alice的答案中添加按钮


爱丽丝不仅可以使用文本进行响应,还可以显示按钮和链接。 通过单击该按钮,用户就可以构成一个新请求,而不会发声,也无需键入。

要将按钮添加到响应中,您需要以Alice可以理解的格式编写一段JSON。 为此,请转到所需的意图,转到那里的答案,然后单击添加响应-自定义有效负载 。 在这里,您可以指定Alice API的响应。 例如,要添加按钮,请编写

{"buttons": [ {"title": " ", "hide": true} ]} 


此处添加了一个按钮,当按下该按钮时,它将向Alice发送请求“请求文本”,并且此后将自动从聊天记录中消失。 这是另一个例子

 {"buttons": [ {"title": " ", "hide": true}, {"title": "  ", "url": "https://dialogflower.com"} ]} 


这里将添加两个按钮,其中一个是指向dialogflower.com的链接

通常,您可以使用Alice协议中“响应”字段格式在有效负载中编写任何JSON。

逻辑在哪里?


当然,您并非总是需要用随机但静态的短语来回答。 为了添加一些逻辑,您将需要编写一些代码。 好吧,还是很多,这取决于您。 但是Dialogflow允许您无需租用服务器即可执行此操作。

转到“ 实现”标签,然后打开“禁用”开关。 在这里,您可以编写Javascript代码,该代码将根据需要对触发的意图进行响应,并在将响应发送给用户之前执行某种逻辑。 实际上,答案本身可以在代码中立即重新定义。

在这里,我将不描述如何以及如何使用此代码,我将在github上仅举一个很好的例子 ,其中代理能够在Google日历上创建事件,记录用户在空闲时间修理自行车的情况。

这里的主要优点是您不必提高单独的服务器来为代理实现某种逻辑。 Google将为您免费提供一切服务。

最后


该国越来越多的人正在使用爱丽丝 。 她在搜索,导航器和浏览器中工作,很快, 装有Alicehome栏将开始销售。

爱丽丝有一个API,并且每天都有越来越多的语音技能出现在她身上。

来自Google的Dialogflow为开发语音应用程序提供了一个很好的工具,即使没有编程技能,也可以在Google服务器上免费运行代码。

DialogflowerDialogflow上的代理与Alice联系起来,以便您可以快速创建技能并进行实验。

那怎么了? 此外,Dialogflower与Alice一样免费。

美中不足


这些都是互动花,但并不是现实世界中的一切都那么美丽。 当然,Dialoglfow是一个很酷的工具,但是在俄语中它的效果不如英语。 到目前为止,他还不了解很多同义词,因此在创建意图时必须手动将其杀死。

另一个缺点是,在Dialogflow中,即使是稍微复杂的对话也很难管理。 您根本无法查看它,因为意图只是一个简单的清单。

就在几天前 Habré 推出了具有类似功能的工具,该工具也知道如何理解自然的俄语语音,但是即使您只用了几个短语来训练该机器人,它也能更好地理解俄语。 Dialogflow功能还不多,例如实体提取或统计信息。 但是有一个很酷的可视化编辑器,在该编辑器上可以直接看到与用户对话的整个过程。 而且,您无需编写代码即可添加逻辑。

但是,开发人员总是在开发人员工具制造商之间的激烈竞争中获胜。

Source: https://habr.com/ru/post/zh-CN412863/


All Articles