繁体   English   中英

如何在自己的服务器上使用带有Node.js的alexa-sdk运行Alexa技能而不使用Lambda drop-in?

[英]How to run Alexa skill with the alexa-sdk on own server with Node.js without Lambda drop-in?

Alexa技能文档最终将允许您将webhooks发送到https端点。 然而,SDK仅记录lambda样式alexa-sdk用法。 如何在没有任何抽象Lambda的情况下在自己的服务器上运行Alexa应用程序? 是否可以包装eventcontext对象?

您已经可以使用自己的端点了。 创建新技能时,在配置选项卡中,只需选择HTTPS并提供https端点。 ASK将调用您的端点,您可以在其中运行任何您想要的东西(提示,检查ngrok.com以隧道到您自己的开发机器)。 关于eventcontext对象; 您的端点将收到event对象信息。 您不需要任何context对象,只允许您与Lambda特定的东西进行交互( http://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html )。 只要确保你遵守ASK的(未记录的)超时,你就可以了。

这是一种方法,只需要对您的技能代码进行少量更改:

  1. 在主index.js入口点,而不是:

     exports.handler = function (event, context) { 

    使用类似的东西:

     exports.myAppName = function (funcEvent, res) { 
  2. 在此之下,添加以下解决方法:

     var event = funcEvent.body // since not using Lambda, create dummy context with fail and succeed functions const context = { fail: () => { res.sendStatus(500); }, succeed: data => { res.send(data); } }; 
  3. 在笔记本电脑上安装并使用Google Cloud Functions Local Emulator 当您启动函数并将其部署到模拟器时,您将获得类似http:// localhost:8010 / my-project-id / us-central1 / myAppName的资源URL。

  4. ngrok创建一个隧道。 然后取ngrok端点并将其放在上面资源URL中的localhost:8010的位置。 您生成的履行URL将类似于: https//b0xyz04e.ngrok.io/my-project-id/us-central1/myAppName

  5. 使用Alexa dev控制台中Configuration下的履行URL(如上所述),选择https作为服务端点类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM