【问题标题】:How to access REST APIs hosted locally on Alexa如何访问 Alexa 上本地托管的 REST API
【发布时间】:2018-05-06 20:18:26
【问题描述】:

我正在开发一个自定义的 Alexa Skill,并且有一个要求,我希望 Alexa 访问在本地托管在 http://localhost:8080 上的 REST API?知道怎么做吗?

谢谢!

【问题讨论】:

  • 你已经尝试过 ngrok 了吗?只需几个步骤,ngrok 就可以让您在本地托管的应用程序在互联网上可用。

标签: rest web-services aws-lambda alexa alexa-skills-kit


【解决方案1】:

如果您真的想这样做,并且我假设您在 AWS Lambda 上托管该技能,这将涉及大量工作。

您的本地端点需要可从您的网络外部访问,这需要在您的路由器中将端口转发到托管端点的计算机。这需要在您的路由器中进行配置。

一种更简单的方法是将包含 API 的项目部署到 Heroku 之类的东西上,这很容易完成。它们为您提供域并使 Lambda 可以访问端点。这在他们的免费套餐中应该是可能的。

【讨论】:

  • 谢谢!我的本地应用程序是为 WildFly(Jboss) 托管和配置的,并使用 PostgreSQL 作为数据库。在 Heroku 上托管是否需要更改这些参数?
  • @Sambhav 考虑在 AWS 上托管您的应用程序。您可以设置 API Gateway 以接收请求并转发到您的应用程序所在的 Lambda 或 EC2 端点。
【解决方案2】:

在这里,link 是一篇关于 IP 地址如何工作的非常好的文章。

允许从本地网络外部(例如,从 AWS 上运行的服务)访问位于本地网络上的设备(例如,笔记本电脑或连接到 wifi 的 Raspberry Pi)将涉及映射 2 个单独的 IP 地址:

  1. 分配给您的路由器的 IP 地址(您的公共 IP)
  2. 路由器分配给您的设备(笔记本电脑、iPhone、RPi 等)的私有 IP 地址。

您有几个选项可让您从本地网络外部访问路由器的 IP (#1):

一个。向您的互联网提供商付款,以向您提供静态 IP 地址 湾。使用动态 DNS 服务,例如 DuckDNSNo-IP

一旦您拥有可用于访问路由器的固定公共 IP,您就需要将路由器 (#1) 上的端口映射到本地网络 (#2) 上的设备 IP。这通常被称为“端口转发”。大多数路由器将支持配置它。实际上,你告诉你的路由器“当你收到一条消息时:将它传递给我的笔记本电脑:”

您的本地私有 IP 地址通常具有类似 192.168.0.23 的 IP 值(其中 23 可以是 1 到 254 之间的任何值)。

外部 IP 的开头不是 192。有关 IP 范围,请参阅上面的第一个链接。

您可以搜索“端口转发”和“公共 IP”以获取有关 IP 地址和端口转发如何工作的更多信息,但希望这将有助于您入门。乍一看可能有点复杂,但如果我能理解,那么任何人都可以:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2018-03-18
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2020-10-12
    相关资源
    最近更新 更多