我正在尝试创建一个用Java实现的Amazon Lambda函数,以便与Amazon Echo/Alexa一起使用.我正在使用Eclipse Mars作为IDE.
以下是我LambdaFunctionHandler将收到Alexa请求的内容,如下所示:
public class LambdaFunctionHandler implements RequestHandler<SpeechletRequestEnvelope, SpeechletResponse> {
@Override
public SpeechletResponse handleRequest(SpeechletRequestEnvelope input, Context context) {
context.getLogger().log("Input: " + input);
// TODO: implement your handler
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用Alexa的示例JSON输入进行测试时,我在Eclipse中收到错误:
{"errorMessage":"JSON解析期间发生错误","errorType":"java.lang.RuntimeException","stackTrace":[],"cause":{"errorMessage":"Lcom/fasterxml/jackson/databind /ObjectMapper;","errorType":"java.lang.NoClassDefFoundError","stackTrace":[java.lang.Class.getDeclaredFields0(Native Method)","java.lang.Class.privateGetDeclaredFields(Class.java:2583 ) " "java.lang.Class.getDeclaredFields(Class.java:1916)", "com.fasterxml.jackson.databind.introspect.AnnotatedClass._findFields(AnnotatedClass.java:689)"," com.fasterxml.jackson. databind.introspect.AnnotatedClass.resolveFields(AnnotatedClass.java:470) "" com.fasterxml.jackson.databind.introspect.AnnotatedClass.fields(AnnotatedClass.java:282)", "com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:390)", "com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collect(POJOPropertiesCollector.java:243)", "com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.collectProperties(BasicClassIntrospector.java:197)", "com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:110)","com.fasterxml .jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:15) " "com.fasterxml.jackson.databind.DeserializationConfig.introspect(DeserializationConfig.java:703)"," com.fasterxml.jackson.databind.deser .DeserializerCache._createDeserializer(DeserializerCache.java:330)", "com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:265)", "com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:245)", "com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:143)", "com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:439)","com.fasterxml.jackson .databind.ObjectReader._prefetchRootDeserializer(ObjectReader.java:1588) " "com.fasterxml.jackson.databind.ObjectReader.(ObjectReader.java:185)"," com.fasterxml.jackson.databind.ObjectMapper._newReader(ObjectMapper.的java:558)", "com.fasterxml.jackson.databind.ObjectMapper.reader(ObjectMapper.java:3098)"],"原因":{ "的errorMessage": "com.fasterxml.jackson.databind.ObjectMapper", "ERRORTYPE": "抛出java.lang.ClassNotFoundException", "堆栈跟踪":["java.net.URLClassLoader.findClass(URLClassLoader.java :381)","java.lang.ClassLoader.loadClass(ClassLoader.java:424)","java.lang.ClassLoader.loadClass(ClassLoader.java:357)","java.lang.Class.getDeclaredFields0(Native Method) ) " "java.lang.Class.privateGetDeclaredFields(Class.java:2583)", "java.lang.Class.getDeclaredFields(Class.java:1916)"," …
java amazon-web-services aws-lambda alexa-skill alexa-skills-kit
我从亚马逊开发的 Alexa 技能包中创建了一项技能。API 端点来自我运行 PHP 的家庭服务器。它工作正常,但现在我有另一台服务器正在运行并且正在侦听端口 444(使用 SSL)。我在这个新服务器 (Apache) 上使用相同的域名和 SSL 证书。但是现在 Alexa 技能包似乎没有向我的 API 端点发送任何内容。
我不知道 Alexa 技能套件是否仅发送超过 443 的请求,还是我的设置有误?
比如我当前的工作节点是: https://myserver.com/api/main.php
我的新服务器: https://myserver.com:444/api/main.php
这个奇怪的 444 端口的原因是端口 443 占用了我的家庭公共 ip(端口转发)。所以如果我的新服务器看到端口 444,我需要我的公共 IP 将请求转发到我的新服务器。我是这一切的新手,所以请原谅我在这里设置的所有菜鸟。
我正在为亚马逊回声编写自定义技能,我需要获得一个唯一的设备ID,以便我可以将产品注册到我的服务中.我读到的一切都说你无法从设备中获取id.亚马逊改变了吗?是否有工作来获取设备ID?
alexa-skill alexa-skills-kit amazon-echo alexa-voice-service
我正在使用现有服务为Alexa Echo创建自定义技能。
该服务具有许多功能,可满足不同目的。
我希望我的技能能够服务于所有这些功能。
所有服务都是HTTPS POST服务,它接受JSON RAW主体请求并以JSON提供结果。
Q1。我是否可以像单独意图那样使用我的技能中的每个功能?
Q2。我应该使用Lambda还是可以直接使用我的服务?
Q3。如果使用Lambda,我可以构造所需的有效负载并将其发送到我的服务并获取并解析我的响应吗?
Q4。使用Lambda付费服务?
Q5。无需使用Lambda就能直接完成吗?如果是,怎么办?
Q6。 两种方法都有视频教程吗?
alexa aws-lambda alexa-skills-kit amazon-echo alexa-voice-service
如何在Echo Alexa卡中显示超链接,即在与Echo交谈后显示在Alexa应用程序中的卡?我理解它包含在lambda函数返回的响应中,但找不到除https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/providing-home-cards-之外的 任何文档. for-the-amazon-alexa-app https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/handling-requests-sent-by-alexa
两者都没有讨论超链接.当我尝试诸如`google.com之类的东西时,整个ahref被输出为常规文本.
向Alexa询问餐厅建议会显示格式良好的Yelp数据,以及指向地图和/或Yelp页面本身的链接.
我编写了Alexa技能,该技能使用Lambda函数播放给定URL中的独特音频。
名为“ PlayAudio”的Intent正在运行,并播放我们JSON格式的API中的第一个音频项目。
名为“ PlaybackNearlyFinished”的Intent无法正常运行,也就是无法播放我正在馈送的音频文件。谁能确切解释为什么这行不通?
这是我的Lambda函数的一部分,其中包含两个Intent:
Fact.prototype.intentHandlers = {
"PlayAudio": function (event, context, response) {
fetchEnseParse("/latest", function(body) {
if(body == "error") {
}
else {
var directives = body.enses.map(function(ense) {
var a = ense[1].fileUrl;
return {
'playBehavior': 'REPLACE_ALL',
'audioItem':
{
'stream':
{
'url': 'https://s3.amazonaws.com/media.ense.nyc/enses/2017_01_13T16_57_20.190Z/30312/0',
'token': '33529',
'offsetInMilliseconds': 0
}
},
'type': 'AudioPlayer.Play'
};
})
}
var jsonresponse = {
'outputSpeech': {
'text': '',
'type': 'PlainText'
},
'directives': [directives[0]]
};
response.justUseThisJsonPlease( { response: jsonresponse } );
});
},
"AudioPlayer.PlaybackNearlyFinished" : function(event, …Run Code Online (Sandbox Code Playgroud) 我继续使用Amazon Lambda和alexa技能工具包获得以下代码的问题.我花了无数个小时在这上面,无法让它发挥作用.我一直收到这条消息,无法弄清楚为什么http get失败了."请稍后再试".它甚至不打印控制台消息.
var Alexa = require('alexa-sdk');
var http = require('http');
var APP_ID = "omitted";
var SKILL_NAME = 'omitted';
var options = {
host: 'api.forismatic.com',
path: '/api/1.0/?method=getQuote&lang=en&format=text',
method: 'GET'
};
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};
var handlers = {
'LaunchRequest': function () {
this.emit('Inspiration');
},
'IntentRequest': function() {
this.emit('Inspiration');
},
'InspirationIntent': function () {
this.emit('Inspiration');
},
'Inspiration': function () {
var speechOutput = '';
var text = ''; …Run Code Online (Sandbox Code Playgroud) amazon-web-services alexa node.js aws-lambda alexa-skills-kit
是否有可能远程触发Alexa,即我有一个场景,根据移动应用程序上的某些操作应该触发Alexa,并且回显点将读出所提供的响应.
Varun的
我正在开发一个Alexa技能,它基本上播放一组基于不同调用存储在S3上的音频文件.
我已经包含了音频所需的所有意图.在Alexa技能网络模拟器上进行测试.当它必须播放媒体时,它会给出错误."AudioPlayer当前是一个不受支持的命名空间".
以下是调用音频播放器的行.
this.response.audioPlayerPlay(playBehavior, podcast.url, token, null,offsetInMilliseconds);
Run Code Online (Sandbox Code Playgroud)
以下文档
https://developer.amazon.com/docs/alexa-voice-service/audioplayer.html#play
不确定是什么问题,因为我看到屏幕底部只有一个弹出窗口出现错误.PFA截图.
我无法从设备日志中找到任何东西.
{
"header": {
"namespace": "AudioPlayer",
"name": "Play",
"messageId": "5e045877-5961-47c5-8536-f744e52e45b7",
"dialogRequestId": "68d45ba0-0a07-4b3a-9ed6-2a4f9aec1090"
},
"payload": {
"audioItem": {
"audioItemId": "amzn1.as-ct.v1.ThirdPartySdkSpeechlet#ACRI#url#ACRI#{\"directedCustomerId\":\"amzn1.ask.account.AGTPFQMY4J7GPQXFR7GWAFUGXPGVAJO5DCXU4I3NM5PVNIZ53LFRBLQLD4EGSPX3W5RY6I5XYQFTFJRWLJBHDBBIJNAKU2JEGNTDPK6PCDUMRBXUNOZ26CNVMVIH75GW2B3NVUH6SKOAM3BDFVSJ33DGUUWZHNW5XYZ7YTG73FIE2BF2MVRYXPXHRBMG2ZO5YE4IMBFBWL3IBXA\",\"modelKey\":\"amzn1.ask.skill.22c39f48-18bc-4c65-a126-6bc1f7ff4d66\",\"obfuscatedCustomerId\":\"A336WR8U44ZY26\",\"token\":\"0\"}",
"stream": {
"offsetInMilliseconds": 0,
"expiryTime": "2019-04-10T23:50:30+0000",
"url": "https://s3.amazonaws.com/sumanth-alexa-skill-bucket/How+to+Live+Happily+-+Sadhguru+Answers.mp3",
"token": "amzn1.as-ct.v1.ThirdPartySdkSpeechlet#ACRI#url#ACRI#{\"directedCustomerId\":\"amzn1.ask.account.AGTPFQMY4J7GPQXFR7GWAFUGXPGVAJO5DCXU4I3NM5PVNIZ53LFRBLQLD4EGSPX3W5RY6I5XYQFTFJRWLJBHDBBIJNAKU2JEGNTDPK6PCDUMRBXUNOZ26CNVMVIH75GW2B3NVUH6SKOAM3BDFVSJ33DGUUWZHNW5XYZ7YTG73FIE2BF2MVRYXPXHRBMG2ZO5YE4IMBFBWL3IBXA\",\"modelKey\":\"amzn1.ask.skill.22c39f48-18bc-4c65-a126-6bc1f7ff4d66\",\"obfuscatedCustomerId\":\"A336WR8U44ZY26\",\"token\":\"0\"}"
}
},
"playBehavior": "REPLACE_ALL"
}
Run Code Online (Sandbox Code Playgroud)
}
有没有人在亚马逊技能开发方面的音频工作,遇到类似的问题.任何人都可以给我一个方向去寻找.
我正在关注Amazon中的Alexa Node.js SDK 教程
该示例代码在所有响应中都有此行-
.withSimpleCard('Hello World', speechText)
Run Code Online (Sandbox Code Playgroud)
我检查了功能定义文件,它说:
呈现具有以下标题和内容的简单卡片
有人可以解释一下这是什么意思吗?
什么是Alexa卡?
alexa-skills-kit ×10
alexa ×5
aws-lambda ×5
alexa-skill ×3
amazon-echo ×2
apache ×1
java ×1
node.js ×1
php ×1
ssl ×1
webserver ×1