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

问题描述 投票:3回答:2

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

node.js alexa-skills-kit
2个回答
1
投票

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


0
投票

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

  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的位置。您生成的履行网址将类似于:https://b0xyz04e.ngrok.io/my-project-id/us-central1/myAppName
  5. 使用Alexa dev控制台中Configuration下的履行URL(如上所述),选择https作为服务端点类型。
© www.soinside.com 2019 - 2024. All rights reserved.