让alexa在浏览器中打开URL

时间:2018-02-28 16:29:35

标签: node.js aws-lambda alexa

尝试使用Amazon lambda函数在新的浏览器窗口中打开URL时,我遇到了错误。我正在使用OpenURL,我需要从Lambda函数打开一个Ui5应用程序URL。我在这里使用Node.js.我在本地安装了OpenURL,并将其上传到lambda函数中。 当我尝试执行以下语句时

var url = require(“openurl”)。open(“www.google.com”);

我收到以下错误(请参阅图片)

虽然当我在本地Node.js上执行它时这个语句工作正常。 感谢解决问题的任何线索。

1 个答案:

答案 0 :(得分:0)

我认为它适用于您本地,因为您的节点服务器正在与您的操作系统共享资源。当它到达本地机器之外的任何其他服务器时,我怀疑它是否会起作用。

原因是,该服务器将尝试在您的客户端(机器)上调用应用程序,这是一种违规行为;除非主机分发了一个已经设置了直通机制的映像,该映像充当服务器和客户端之间的中介。

在你的情况下,我不知道真正知道这样做的最佳方法,但我可以建议:

  1. 在您的计算机上设置本地服务器(介体) - 基本上您的openurl实现将存在于您的本地服务器上
  2. 使用ngrok或类似技术获取可发布的网址或使用您的IP地址
  3. 当Alexa收到open url命令时,它会调用Lambda,而Lambda又会调用本地端点(通过Ngrok)
  4. 然后,您的本地服务器将打开所需的URL。
  5. 这种方法的问题在于它不可分发,因为这实际上要求用户设置服务器的实例,这可能是您不想要的。

    另一种方法是使用可分发的映像/包,它在Lambda和本地计算机之间提供一种中介。基本上这个图像将包含用于启动服务器以始终监听Lambda调用的脚本以及打开Web浏览器(openurl)的逻辑。

    让我知道这一切是否有意义?