我所有的硬件都已经开发好了。我使用 MQTT 在我的设备之间进行通信,我有灯、风扇、加热器和更多的物联网设备。我可以从我构建的 Android 应用程序中控制所有这些。我也想使用 Google Assistant 来控制我的设备。我的灯的状态(开/关)存储在 sql 数据库中,当数据库发生更改(由硬件检测到)时,我的硬件可以控制特定的灯。在我的 Android 应用程序中,我执行相同的操作,即更新灯的数据库值(开/关),并且我的硬件平台检测到更改。我可以使用 Google Assistant 更新 sql 数据库值吗?如果谷歌助手可以调用用户名或电子邮件,lightID,我可以创建一个网络服务器(ASP.NET C#)并将命令传递给我相关客户的 sql 数据库,命令到我的网络服务器。谷歌助手能做到吗?如果不是如何实现这一点。
问问题
749 次
1 回答
2
听起来您想看看Google Smart Home API 上的 Actions,它可以让 Assistants Smart Home 控件直接与您的控制服务器一起工作。
在不确切知道您的数据库或现有 Web 服务器是如何配置或托管的情况下,我最多只能泛泛而谈。您的网络服务器将需要实现两个主要的东西:
您将需要一个 OAuth2 服务器,该服务器可以发布代表您的用户的令牌。这就是 Google 将 Google 助理上的用户帐户与您的帐户相关联的方式,以及 Google 将如何识别(向您)发出命令的用户。
您需要在 Web 服务器上的 URL 上实现 webhook。这个 webhook 将被发送一个 POST 消息,其中包含一个带有有效身份验证令牌(您发布的)和 JSON 正文的标头。JSON 将包含有关用户已发出的命令的信息。您的 HTTP 回复正文也将是 JSON。有关 JSON 格式的详细信息以及它可以发送以及您必须回复的所有字段,请参阅 Google 的文档。
Google 可以代表用户向您发送许多不同的命令(Google 称之为“意图”)。您应该能够通过查询或修改数据库来处理所有这些问题:
- SYNC - 请求此用户拥有哪些设备、他们的一些配置信息以及他们尊重哪些命令。
- QUERY - 此用户的设备当前状态是什么。
- 执行- 更改某些用户设备的状态。
- RESYNC -(未来更新)用户设备信息的重新请求。
于 2017-06-27T19:01:41.070 回答