我尝试将Amazon Echo用于公司内的公用事业项目。我有一堆内部网站点,我打算从中收集信息并开发自定义技能,让用户查询数据。但是需要将客户端jar(我使用java)上传到AWS以创建Lambda函数,然后才能使用该自定义技能。这不起作用,因为我的jar需要从这些Intranet系统中使用Web服务。
有没有办法在不使用AWS的情况下在专用网络中运行Echo?我试图在互联网/ stackoverflow上找到任何相关信息,但不能。
答案 0 :(得分:3)
您可以在Lambda或可公开访问的网络上创建端点的自定义技能。所以你在这里有一些选择。
1)您可以在Lambda上开发技能,并在公司防火墙中打开(适当安全的)网关,以允许访问您需要的Intranet资源。
2)将您的技能发展为Web服务(使用Java,Python,node.js或其他语言),并将其托管在公司内部网中。然后在公司防火墙中打开(适当安全的)网关,以使该端点可公开访问。指出你的技能。
2a)创建与SSL认证有关的Web端点有很多复杂因素。许多人(包括我自己)采取的路线是创建proxy service in Lambda。您的观点是Lambda的技能,然后将Lambda指向您的Web服务。
您的成功主要取决于您与公司IT部门合作在防火墙上打开漏洞的程度。如果你在一家大公司,那可能很难。但是,如果您需要对内部Web服务进行实时实时访问,那么实际上并没有任何解决方法。
答案 1 :(得分:3)
我们最终使用安全隧道为我们内部托管的Web服务创建可公开访问的URL。它就像一个魅力。我们为此目的使用了ngrok:https://ngrok.com/
答案 2 :(得分:0)
据我所知,任何指向您的Amazon Echo设备的语音命令都会发送到Internet上的Amazon服务器以进行解释。该服务器可能以Web服务调用的形式解析语音命令并执行技能。 Echo设备本身不会调用自定义Web服务,而是与Echo进行交互的Amazon服务器将调用自定义Web服务。
我相信Echo设备必须收到某种形式的确认,证明任务是否已成功在Amazon服务器上执行。在某些用途中,例如“ Alexa,今天的天气如何?” Echo设备将口头响应最终用户。在这种情况下,从Amazon服务器返回到Echo设备的响应还将包含Echo设备将“说出”的口头响应。从Echo实施角度来看,口头回应数据不是强制性的。某些命令很容易忘记,并且没有口头反应,例如“ Alexa,打开电视”。
确切地说,我想说的是,如果您的Web服务在专用网络上并且无法在网络外部访问,那么Amazon服务器将无法调用您的Web服务。即使Echo设备位于防火墙内部和专用网络上,我也看不到Echo设备本身调用Web服务的方式-这些来自Internet上的Amazon服务器。
我怀疑通过更多的Echo集成(例如现在在汽车中),亚马逊将考虑提供一种Echo解决方案,其中数据可以包含在专用网络中。
语音用户界面(VUI)迅速成为技术的下一个前沿。