我是如何教Yandex.Alice谈论性玩具的

我们通过Spring Boot整合了Yandex.Alisa和性用品商店。

语音助手这一主题正在蓬勃发展,我决定加入这一趋势,整合最大的私人用品批发供应商和Yandex.Alisa。

想法 :供应商拥有在线商店所有者的个人帐户,因此有必要通过Alice的语音渠道提供来自供应商的分析数据。

集成包括两个部分:

  • Web服务和商品供应商的REST API的集成。
  • Yandex.Alice与用于处理用户请求的Web服务的集成。

集成Web服务和商品供应商的REST API


服务应了解用户的确切要求,并向供应商的服务器请求此数据。 我们决定在Spring Boot上编写服务。

项目设置


我们在Git中创建一个存储库,并使用spring initializr在spring boot上部署项目(我们在依赖项中指定了web)。

对服务的请求采用JSON格式。 它具有详细记录的结构 ,因此生成类非常简单:

图片

方便地,关键字在请求中突出显示,例如公认的地址。 它们位于“entities”块中:

图片

但是在我们的例子中,使用Command字段更加方便。 它包含用户指示的文本。 由于集成服务从事对意义的识别,因此我们需要解析请求。 它们之间可以很好地分离(对下订单的请求,对处理中的订单的请求),因此我们决定使用正则表达式来解析它们。

与提供程序的集成是通过Apache httpclients库实现的,而XML响应是通过jaxb反序列化的。

因此,我们整理了请求,并要求供应商提供数据。 但是爱丽丝是个严格的女孩,因此三秒钟后才接受我们的回答。 并且用户可能希望获得过去两年中他的商店的比较描述,这将花费更多时间。 为了解决此问题,我们启用了通过ehCache库进行缓存并配置了用户数据的加载。 面临一个新的细微差别:爱丽丝几乎不提供任何个性化的用户数据。 也就是说,您甚至在收到的请求中都看不到电子邮件。 只有userId显示设备的唯一标识符。 这是识别用户的关键。

关键在那儿,缓存在那儿,它仍然可以理解何时将信息加载到其中。 用户不会立即请求数据,而是会先启动该技能(这是Alice中使用的术语,我将在下文中详细介绍)。 对于服务器,这看起来像一个带有空Command标签的请求。 此时,您可以开始下载客户端数据,然后在发送第一个用户请求时,所有数据都已经上传到我们的服务中。

为了对产品进行全面测试和进一步的工作,我们决定将应用程序部署在Heroku的云中。 为此,请访问Heroku网站,进行注册,下载heroku cli并进行安装。 然后打开控制台并输入heroku login 。 转到包含项目heroku create / myapp的目录,然后执行heroku create

创建应用程序时,Git将创建一个名为heroku的远程存储库,该存储库与本地Git存储库相关联。 默认情况下,Heroku在服务器上为您的项目生成一个随机名称。 您可以使用heroku create myapp通过传递应用程序名称来替换它。

要检查应用程序的启动,请执行命令。

heroku ps:scale web=1

如果您需要沿着“ /”路径前进,那么我们将执行heroku open
第一个集成点已准备就绪。

Yandex.Alice和请求处理服务的集成


我们通过在Yandex平台上创建所谓的技能来实现集成。 首先,在Yandex中注册,然后转到开发人员页面 。 点击“创建对话”,然后选择对话类型:

图片

在“设置”标签上,您需要填写以下字段:

图片

  • 技能名称-将在爱丽丝的目录中显示的名称。 有了它,用户将能够激活技能,例如“启动技能[技能名称]”。
  • 激活名称 -您可以在此处指定访问技能的各种选项。 默认情况下,激活名称的一个选项是技能名称。
  • 请求的一个示例是Alice激活该技能的短语。 发布后,请求将在目录中显示为按钮。
  • Webhook URL-您必须指定将处理用户请求的Web服务的URL。
  • Yandex.Cloud-Yandex可以为其云提供赠款,但是我们会将服务部署在heroku上,因此我们不会对其打勾。
  • 声音 -您可以在此处选择技能会说的声音。 男性和女性有不同的变异。 但值得考虑的是,用户最有可能会说:“爱丽丝,发动这项技能”,如果爱丽丝与男男中音回答,这可能会有些混乱。
  • 所使用平台的限制 -使用技能时是否需要屏幕。 在我们的情况下,不,所以不要打勾。
  • 隐私 -如果您不希望此技能反映在目录中,请选中此框。
  • 品牌验证站点 -技能的站点地址。 仅当您在Yandex.Webmaster中确认对指定站点的权限时,才需要填充此字段的技能。
  • 类别 -在我们的例子中是“商业和金融”。
  • 说明 -为什么需要技巧。 技能描述将显示在技能目录中,并且可供用户使用。
  • 主持人注意事项 -也许是最有趣的领域。 要进入目录,必须熟练掌握该技能,这意味着它必须符合此处描述的某些规则。 在此字段中,您可以描述测试过程。 例如,如何进行授权和一种典型的用户方案。
  • 年龄限制 -尽管具有本技能,但我们将传输适合任何年龄段的数据。 因此,请勿打勾。
  • 图标是必须的:)

保存对话。 仅在单击“保存”按钮后,对技能设置的所有更改才会生效。

我们配置了集成,编写了服务,现在您可以对其进行测试了。

转到“测试”标签。

图片

在这里,您可以检查技能的表现。 为了方便起见,我们为该功能添加了快速访问功能按钮的功能。

有限制:您不能检查技能以确保起始短语的正确性,也无法检查语音输入/输出。 而且,如果该短语不存在任何问题,那么只有在发布该技能后,才能检查答案的正确发音。
完成所有测试后,可以将该技能发送给审核。 为此,请转到选项卡“常规信息”,然后单击“审核”。

图片

审核后,将显示“发布”按钮而不是此按钮。 发布后,该技能将出现在Yandex官方目录中。

特点和局限性


目前,这些技能与Alice自己有所不同(我不得不说“推出该技能”),这使得很难将Alice视为成熟的语音助手。 塑造您的技能背景并直接向爱丽丝提问是非常棒的。 除了userId(设备标识符)之外,没有其他方法可以获取任何用户信息。 因此,必须重新授权每个设备,这使得难以存储单个用户会话。 此外,该技能无法发送推送消息,因此无法使提醒技能起作用。

另一方面,技能可以是实现语音控制(例如家用电器)的良好平台。 同样,该技能在培训或进行实验,澄清订单,价格等信息时可能会很有用。 通常,用户可以在其中提出一个简短的确切问题或给出简短的命令。

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


All Articles