如何从 Google Assistant 发出局域网 HTTP 请求?
Posted
技术标签:
【中文标题】如何从 Google Assistant 发出局域网 HTTP 请求?【英文标题】:How to make local area network HTTP request from Google Assistant? 【发布时间】:2018-02-21 07:04:27 【问题描述】:我想直接从我的 Google 助理向我 LAN 上的服务器(例如 Node-red 或 Arduino)发出 HTTP 请求。
我想重现 this widget 的行为,但它在 Google 助理中不起作用。
将 IFTTT 与 webhook 结合使用可以使 IFTTT 网站从他们的服务器上 ping 互联网,而不是从我的私人 LAN 中的手机。我认为如果我将 google 操作与 api.ai 与 webhook 一起使用,也会发生同样的情况。比如这个应用Wake On Lan可以局域网请求,但是它不会像192.168.0.2:1880/test
那样接受链接,它只接受IP地址,但它可以与谷歌热词OK Google。
那么如何直接从我的 Google 助理发出 HTTP POST 请求?
【问题讨论】:
您是尝试通过 python SDK 实现这一目标,还是使用 grpc 绑定创建了与 android 兼容的 SDK? @Gaurav 我不知道你在说什么,我是初学者,不知道如何使用 action sdk。 您是在手机上使用内置谷歌助手,还是正在使用谷歌助手 sdk developers.google.com/assistant/sdk编写自定义应用程序 @Gaurav 是的,我试图只使用助手上的操作,使用 api.ai 或 IFTTT 工具,但现在我认为它们不可能,我将不得不制作一个应用程序,我不是制作安卓应用程序的专家。我会在手机上使用它,而不是在任何其他设备上。 【参考方案1】:我不能 100% 确定您想在这里做什么,但我认为 ngrok 可能能够帮助您。
如果您的目标是能够访问只能在您的本地网络中访问的服务器,那么您真正需要的是一种使该服务器可以从网络外部访问的方法,但仅限于您自己。你有两种方法可以做到这一点。一种是在路由器上打开一个端口,这本质上是不安全的。另一种是使用ngrok。 ngrok 是您在本地服务器上运行的一个应用程序,它打开了一条通往本地网络的安全隧道。您可以使用如下所示的外部 url 访问它:
https://02355cab0.ngrok.io/
哈希是唯一的,只有你知道。该 URL 可从 Internet 上的任何位置访问,但指向您本地 LAN 上的服务器,即:
https://02355cab0.ngrok.io/ -> http://192.168.0.2:1880
在这里查看: https://ngrok.com/
然后,使用此 ngrok url,您可以将其提供给 Google 助理或任何应用程序(如果您愿意,可以使用 IFTTT),以便从网络直接向您的本地网络拨打电话。
【讨论】:
谢谢,是的,我知道端口转发是可能的,但是我该死的 ISP 给了我从 NAT 后面的连接,所以端口转发需要我与他们的管理员交谈!感谢 ngrok.com 顺便说一句,它很有用,将来会使用它。但我认为谷歌还没有开始支持在你的 apk 中嵌入谷歌助手。以上是关于如何从 Google Assistant 发出局域网 HTTP 请求?的主要内容,如果未能解决你的问题,请参考以下文章
Google Assistant 与 IFTTT 的集成如何运作?
如何禁用 Google Assistant API(现在点击)