当我关注部署AWS Lambda函数的教程时,我在其中看到它使用包含Speechlet接口的AWS Java SDK。
以下是该示例的屏幕截图:
官方文档还说明我应该在这里使用Speechlet接口:https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/handling-requests-sent-by-alexa
但遗憾的是,当我安装AWS Toolkit for Eclipse时,其工具包中没有这样的界面。我还从其官方站点下载了AWS Java SDK,但未找到Speechlet接口。
所以,我再次搜索了一些关于如何使用java创建Lambda函数的教程,然后我想出了这个:http://docs.aws.amazon.com/toolkit-for-eclipse/v1/user-guide/lambda-tutorial.html
本教程使用没有Speechlet接口的Java SDK!这真让我感到困惑,因为在其他文档中它清楚地表明它有一个Speechlet接口,现在却没有。我不知道如何继续这个。
答案 0 :(得分:2)
您的AWS Lambda函数在Java中需要支持的最小功能是拥有一个实现具有以下签名的方法的类:
outputType handler-name(inputType input) {
...
}
如果您的签名看起来像这样,则不需要第三方库。你可以拥有一个看起来像这样的Lambda处理程序,它可以正常工作。
package LambdaExample;
public class Hello {
public String lambdaHandler(String name) {
return String.format("Hello %s!", name);
}
}
在非平凡的用法中,您可能会看到处理程序签名看起来更像这样:
outputType handler-name(inputType input, Context context) {
...
}
Context
object可用于检索有关Lambda处理程序的信息,以及可用于将有关处理程序的信息记录到Cloudwatch的记录器。
Context
类型在com.amazonaws.services.lambda.runtime.Context
中定义,aws-lambda-java-core
由aws-lambda-java-core
提供,alexa-skills-kit SDK
是AWS发布的一组库的一部分,用于使用Java / JVM语言处理Lambda。 Speechlet
与AWS SDK for Java分开。
您遇到的似乎是使用非常具体的资源的情况。您的图像显示了用于构建自定义Alexa技能并将其部署到Lambda的代码。如果您正在构建Alexa技能,那么您还需要包含{{3}},这是您提供的<dependencies>
界面。 Alexa Skills Kit SDK也与AWS SDK for Java分开。
假设您的项目使用Maven进行项目管理/依赖项,将以下内容添加到<dependency>
<groupId>com.amazon.alexa</groupId>
<artifactId>alexa-skills-kit</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-log4j</artifactId>
<version>1.0.0</version>
</dependency>
部分可以让您使用Lambda和Alexa:
' & '