6

我正在尝试将 Amazon Echo 用于我公司内的一个公用事业项目。我有一堆 Intranet 站点,我打算从中收集信息并开发自定义技能以让用户查询数据。但是需要将客户端 jar(我使用的是 java)上传到 AWS 以创建 Lambda 函数,然后才能使用该自定义技能。这不起作用,因为我的 jar 需要使用这些 Intranet 系统中的 web 服务。

有没有办法在不使用 AWS 的情况下在私有网络中运行 Echo?我试图在 Internet/stackoverflow 上找到任何相关信息,但找不到。

4

3 回答 3

3

您可以在 Lambda 或可公开访问的网络上使用终端节点创建自定义技能。所以你在这里有几个选择。

1)您可以在 Lambda 上发展您的技能,并在您的公司防火墙中打开一个(适当安全的)网关,以允许访问您需要的 Intranet 资源。

2) 将您的技能开发为 Web 服务(使用 Java、Python、node.js 或其他语言)并将其托管在您的公司内部网中。然后在您的公司防火墙中打开一个(适当安全的)网关,以使该端点可公开访问。把你的技能指向那个。

2a) 创建与 SSL 认证有关的 Web 端点有很多复杂性。许多人(包括我自己)采取的方法是在 Lambda 中创建代理服务。您将技能指向 Lambda,然后将 Lambda 指向您的 Web 服务。

您在这方面的成功将主要取决于您与企业 IT 合作在防火墙中打开漏洞的紧密程度。如果你在一家大公司,那可能很难。但是,如果您需要实时访问内部 Web 服务,确实没有任何办法。

于 2016-06-23T11:46:55.293 回答
3

我们最终使用安全隧道为我们内部托管的 Web 服务创建了一个可公开访问的 URL。它就像一个魅力。我们为此使用了 ngrok:https ://ngrok.com/

于 2016-07-13T00:03:42.930 回答
0

据我所知,任何针对您的 Amazon Echo 设备的语音命令都会发送到 Internet 上某处的 Amazon 服务器进行解释。该服务器解析语音命令并执行技能,可能以 Web 服务调用的形式。Echo 设备本身不调用自定义 Web 服务,而是与 Echo 交互的 Amazon 服务器调用自定义 Web 服务。

我相信 Echo 设备必须收到某种形式的确认,确认任务是否在 Amazon 服务器上成功执行。在某些用途中,例如“Alexa,今天天气如何?” Echo 设备将口头响应最终用户。在这种情况下,亚马逊服务器返回给 Echo 设备的响应也将包含 Echo 设备将“说出”的口头响应。从 Echo 实施的角度来看,口头响应数据不是强制性的。有些命令是一劳永逸的,没有口头回应——例如“Alexa,打开电视”。

我想我想说的是,如果您的 Web 服务位于专用网络上并且无法在您的网络之外访问,则 Amazon 服务器无法调用您的 Web 服务。即使 Echo 设备位于防火墙内并且位于专用网络上,我也认为 Echo 设备本身无法调用 Web 服务——这些来自互联网上某处的亚马逊服务器。

我怀疑随着更多的 Echo 集成(例如现在在汽车中),亚马逊将考虑提供 Echo 解决方案,其中数据可以包含在专用网络中。

语音用户界面 (VUI) 正迅速成为下一个技术前沿。

于 2018-10-18T21:17:35.723 回答