谷歌python SDK的行动?

2024-04-28 21:53:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我开发了一个基于python的智能家庭设备云服务,但在尝试将其与google上的actions集成时,他们的python库是“google Assistant library for python在2019年6月28日被弃用,请改用google Assistant服务。”

我转到google assistant服务页面,页面上说python是“你不能启动与google assistant SDK集成的商业设备。它只能用于实验和非商业用途。”

为什么会这样?这是否意味着他们仍在测试阶段?我不应该为python而烦恼吗?我真的很想继续使用python,因为我已经花了大量的时间来开发它


Tags: actionsfor智能googlelibrary时间sdk页面
1条回答
网友
1楼 · 发布于 2024-04-28 21:53:34

我认为你把一些不同但相关的东西混在一起了,其中一些名字相似或重叠。要想把事情弄清楚:

谷歌助手SDK

{a1}和Google Assistant gRPC服务使您能够构建一个类似Google Home的设备。因此,人们会直接与您的设备交互,并使用它来控制助手

  • 有一些python库可以实现这一点,因为python被许多爱好者在他们的设备上使用
  • 以前有一个功能更全面的SDK(用于python),但现在似乎不再支持它了
  • 即使支持有限,这也主要是针对业余爱好者的。听起来,大多数面向消费者的设备都在使用其他平台,这些平台要求你直接与谷歌合作

谷歌行动

这是一个宽泛的术语,描述了通过智能扬声器或手机等设备制造人们将使用的东西的方法

它可以大致分为两种不同的方法,其中一些方法相互重叠:

然而,通常当人们在Google上谈论动作时,他们谈论的是前两项中的一项,并且经常混淆动作SDK和Dialogflow

所有这些都不支持也不禁止python

智能家居行动

Smart Home Actions是专门为使用谷歌为之建立对话体验的devices and traits集合而构建的

智能家居行动有许多重要区别:

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

您的服务器可以用您希望的任何语言编写-谷歌将发送您注册的HTTPS端点JSON with the commands,并希望您也用JSON回复。这方面没有特定的python库,但基本上不需要。最困难的部分是您将需要支持OAuth for account linking,但这是一个比您正在使用的语言更大的问题,它将进入您的整个平台

智能家居操作还可以支持Local Home SDK,它允许在许多设备上直接执行命令,而无需转到服务器进行处理。这个必须用TypeScript或JavaScript编写,因此不支持python

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

Dialogflow

Dialogflow是谷歌云的一个产品,它为许多不同的配置和集成提供了一个自然语言处理系统

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

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

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

  1. 它可以在可公开访问的HTTPS服务器上运行
  2. 它可以在Dialogflow fulfillment request format中接受JSON,并在Dialogflow+Action fulfillment response format中返回JSON

Google没有支持这些JSON格式的特定库,但是如果您想自己实现的话,它们非常简单。社区也开发了一些python库,但我对它们了解不够,无法告诉大家哪些是目前最好的,哪些是使用当前协议的

行动SDK

有时这在文档中被称为Conversation API or SDK,尽管现在他们通常称之为ActionSDK

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

  • 用户仍然使用诸如“嘿,谷歌,跟莎士比亚讲话,侮辱”这样的短语来调用这个动作
  • 这个调用以及之后的每个步骤都由助手从语音转换为文本
  • 但是,不同之处在于,此文本与conversation request format JSON中的一些其他元数据一起直接发送到webhook
  • 您可以将其发送到NLP/NLU系统,以了解用户所做的工作。
    • 您可能认为可以使用regexp实现这一点。你不能。但是还有许多其他优秀的NLP/NLU库可以与python一起使用
  • 您的webhook将send a response using JSON,助手将把它发送给用户

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

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

相关问题 更多 >