首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置sam-cli来启动Alexa skills lambda进行测试?

如何设置sam-cli来启动Alexa skills lambda进行测试?
EN

Stack Overflow用户
提问于 2019-07-08 13:35:30
回答 1查看 310关注 0票数 1

我似乎想不出如何让Alexa skills lambda函数在本地运行。使用ngrok亚马逊可以正确地连接到我正在运行的sam容器,但我得到的只是一个产生404的POST /

我从AWSLABS sam repo中为Alexa复制了一个示例:

代码语言:javascript
复制
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Demonstrates a basic skill built with the Amazon Alexa Skills Kit.
Parameters: 
  TopicNameParameter: 
    Type: String
Resources:
  alexaskillskitcolorexpert:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: .
      Description: Demonstrates a basic skill built with the Amazon Alexa Skills Kit.
      MemorySize: 128
      Timeout: 3
      Policies:
        - SNSPublishMessagePolicy:
            TopicName: !Ref TopicNameParameter
      Events:
        AlexaSkillEvent:
          Type: AlexaSkill
EN

回答 1

Stack Overflow用户

发布于 2019-07-10 01:25:50

Alexa Skills可以连接到两种不同类型的后端。它可以是AWS Lambda函数或任何HTTPS exposed web services。您试图将两者混合在一起,这就是您的示例代码不起作用的原因。

当技能作为HTTPS端点托管时,使用AWS Lambda集成与Alexa技能时不需要的it has to provide extra code。例如,Alexa服务将通过HTTP POST发送您的技能必须回复的签名请求。另一方面,当作为AWS Lambda函数托管时,不需要签名,因为AWS Lambda触发机制确保只有Alexa服务可以调用您的技能代码。

您下载的示例将代码公开为AWS Lambda函数,并创建一个Lambda触发器来授权Alexa服务调用您的函数。这就是这行:

代码语言:javascript
复制
Events:
        AlexaSkillEvent:
          Type: AlexaSkill

但是,当您公开通过ngrok在本地运行的代码时,您正在切换到另一种模型:自定义HTTPS端点。因此,Alexa服务希望您的代码能够响应它发送的POST请求,而本例并没有这样做。

我建议不要使用ngrok来测试暴露为AWS Lambda函数的Alexa技能。仅当您计划测试要部署为Alexa Skill自定义HTTPS端点的代码时,才使用ngrok

要在本地测试代码,可以使用单元测试框架,例如用于NodeJS的mocha。这个想法是在Alexa开发人员控制台或Lambda日志中捕获Alexa发送的请求,并在您的笔记本电脑上本地重播。

下面是我用这个技术测试我的技能的一个例子:https://github.com/sebsto/maxi80-alexa/tree/master/lambda/test

您还可以使用第三方测试框架,例如bespoken。下面是我编写的另一个示例,用来展示如何使用定制的本地单元测试:https://github.com/alexa/skill-sample-nodejs-audio-player/tree/mainline/single-stream/test/unit

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56928939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档