对 google 的 python SDK 的操作?

Hyp*_*ian 0 python actions-on-google

我开发了一个基于 python 的智能家居设备云服务,但在尝试将其与 google 上的操作集成时,他们的 python 库是“Google Assistant Library for Python is deprecated as of June 28th, 2019,请改用 Google Assistant Service” ”。

我访问了 google Assistant 服务页面,它说 python 是“你无法启动与 Google Assistant SDK 集成的商业设备。它仅可用于实验和非商业用途。”

为什么会这样?这是否意味着它对他们来说仍处于测试阶段?我不应该打扰 python 吗?我真的很想坚持使用 python,因为我花了很多时间在它上进行开发。

Pri*_*ner 5

我认为您混淆了一些不同但相关的事物,其中一些具有相似或重叠的名称。尝试解决问题:

谷歌助理SDK

Google Assistant SDK和 Google Assistant gRPC 服务使您能够构建像 Google Home 一样工作的设备。因此,人们可以直接与您的设备交互并使用它来控制助手。

  • 有用于此目的的 python 库,因为许多爱好者在他们的设备上使用 python。
  • 曾经有一个功能更全的 SDK(用于 python),但似乎不再支持。
  • 即使支持有限,这主要是针对业余爱好者的。听起来大多数为消费者制造的设备都在使用其他平台,这些平台要求您直接与谷歌合作。

在 Google 上的操作

这是一个广泛的术语,描述了您可以制作人们将通过智能扬声器或手机等设备通过Google Assistant使用的东西的方法。

它可以非常粗略地分为几种不同的方法,其中一些方法是重叠的:

  • Action SDK 和/或 Dialogflow 的对话体验
  • 智能家居行动
  • 通过网络标记和/或模板进行内容操作
  • 移动整合

然而,通常当人们谈论 Actions on Google 时,他们谈论的是前两项之一,并且经常混淆 Action SDK 和 Dialogflow。

这些都没有明确支持,也没有禁止 python。

智能家居行动

智能家居操作专门用于与Google 为其构建对话体验的一组设备和特征配合使用。

智能家居操作有许多重要的区别:

  • 您不需要确切地知道用户会说什么。这取决于您支持的设备和特征。谷歌已经建立了词汇表,并向您发送非常离散定义的命令,而不是广泛的对话。
  • 用户不需要专门通过名称调用您的产品。他们通过 Google Home 设置应用配置与您的产品的连接,然后可以更通用地寻址您的设备。

您的服务器可以用您希望的任何语言编写 - Google 将使用命令发送您注册的 HTTPS 端点 JSON,并希望您也使用 JSON 进行回复。没有专门的 python 库来实现这一点——但大多数情况下不需要。最困难的部分是您需要支持OAuth 进行帐户链接,但这比您使用的语言和整个平台的语言更大。

Smart Home Actions 还可以支持Local Home SDK,它允许直接在许多设备上执行命令,而无需到您的服务器进行处理。这必须用 TypeScript 或 JavaScript 编写,因此不支持 python。

如果您正在构建智能家居设备,则应该使用智能家居操作而不是其他任何东西。您可能不希望这样做的唯一原因是,如果您的设备类型与当前支持的设备非常不同,则需要使用 Dialogflow 和/或 Action SDK 进行对话操作。

对话流

Dialogflow是 Google Cloud 的一款产品,为多种不同的配置和集成提供自然语言处理系统。

使用它的一种方法(也是我在这里讨论的唯一一种)是通过 Google Assistant处理完成对话:

  • 用户通过助理调用您的操作,通常是说“嘿 Google,与莎士比亚的侮辱交谈”之类的话
  • 此调用以及随后对话中的每一步都会由助手从语音转换为文本,然后发送到Dialogflow中的配置
  • Dialogflow 确定哪个Intent与此用户输入匹配
  • 如果匹配的 Intent 配置为这样做,那么它会将请求和附加信息转发到您编写的Fulfillment Webhook ,该 Webhook 在您控制的某处服务器上运行
  • 然后,此履行可以处理输入,确定回复,并将其发送回 Dialogflow,Dialogflow 将其发送回 Assistant,助理再将其发送给用户

此实现可以用几乎任何您想要的编程语言编写,包括 python。唯一的要求是

  1. 它可以在可公开访问的 HTTPS 服务器上运行
  2. 它可以接受Dialogflow 履行请求格式的JSON ,并返回Dialogflow+Action 履行响应格式的JSON 。

Google 没有特定的库支持这些 JSON 格式,但如果您想自己实现的话,它们相当简单。社区也开发了一些 Python 库,但我对它们了解不够,无法建议哪些库是目前最好的,或者哪些库适用于当前协议。

动作SDK

有时,这在文档中被称为“ Conversation API”或“SDK”,尽管现在他们通常将其称为“Action SDK”。

这与 Dialogflow 的工作原理类似(事实上,Dialogflow 使用它),但不同之处在于没有 NLP 系统可以从用户的语音中确定用户的意图:

  • 用户仍然使用诸如“嘿谷歌,与莎士比亚的侮辱交谈”之类的短语来调用该操作
  • 此调用以及之后的每一步都会由助手从语音转换为文本
  • 但不同之处在于,此文本会与对话请求格式 JSON中的一些其他元数据一起直接发送到您的 Webhook
  • 您可以将其发送到 NLP/NLU 系统,以了解用户所做的事情。
    • 您可能认为可以使用正则表达式来做到这一点。你不能。但还有许多其他优秀的 NLP/NLU 库可以与 Python 配合使用。
  • 您的 webhook 将使用 JSON 发送响应,助手会将其发送给用户。

同样,没有特定的 Google 支持的 python 库来处理这个问题,但可能有社区开发的库可以做到这一点。

除非您有充分的理由使用更原始的 Action SDK(例如已经使用现有 NLP/NLU 系统的现有组件),否则您可能应该使用 Dialogflow。