好的,这需要详细说明:首先,当我问“出发地点”的意图时,developer.amazon.com它工作得很好。当我使用真正的设备时,它称之为“unHandledIntent”。其次,当它被重新提示时,它确实工作,比如:“嘿,阿列克谢,问调用名。”在它回复未处理的消息之前,不要说任何话。然后我可以正常地说出话语,它会有反应。第三也是最后一点,它正在与“便利位置”的意图一起工作。我不确定发生了什么或者有什么不同。这是代码。谢谢!
var doc = require('dynamodb-doc');
var db = new doc.DynamoDB();
var Alexa = require('alexa-sdk');
exports.handler = function(event, context) {
var alexa = Alexa.handler(event, context);
var handlers = {
'sessionStartedRequest' : function(){
this.emit(':talk', "welcome.")
},
'AMAZON.StopIntent': function() {
this.emit(':tell', "Goodbye!");
},
'AMAZON.CancelIntent': function() {
this.emit(':tell', "Goodbye!");
},
'Unhandled': function() {
this.emit(':ask', "I'm sorry. I didn't get that. Could you repeat it?", "Ask me a question.");
},
'SessionEndedRequest': function() {
this.emit(":tell", "Goodbye!");
},
'DepartmentLocationIntent': function () {
var name = "";
if (this.event.request.intent.slots.department.value) {
name = this.event.request.intent.slots.department.value.toLowerCase().trim();
}
var key = {
'name': name
};
var tableName = "Department";
var params = {
TableName: tableName,
Key: key,
ProjectionExpression: 'loc'
};
db.getItem(params, function (err, data) {
//alexa.emit(":tell", name);
if (err) {
console.log(err);
//alexa.emit(':tell', "Sorry! I did not catch that!");
alexa.emit(':tell', err);
} else {
var loc = JSON.stringify(data.Item.loc);
alexa.emit(':tell', "The " + name + " department is in " + loc);
}
}, context.done);
},
'FacilityLocationIntent': function() {
var name = "";
if (this.event.request.intent.slots.facility.value) {
name = this.event.request.intent.slots.facility.value.toLowerCase().trim();
}
var key = {
'name': name
};
var tableName = "Facility";
var params = {
TableName: tableName,
Key: key,
ProjectionExpression: 'loc'
};
db.getItem(params, function(err, data) {
if (err) {
console.log(err);
alexa.emit(':tell', "Sorry! This facility does not exist!");
} else {
var response = JSON.stringify(data.Item.loc);
alexa.emit(':tell', name + " is located in " + response);
}
}, context.done);
}
};
alexa.registerHandlers(handlers);
alexa.execute();
};
`
贝迪尔
我不知道您是否仍在寻求解决方案,但我认为您的问题在于代码的嵌套。试着把东西和出口分开。正如AWS lambda指南所说,它更清洁、更易于使用。所以试试这个:
exports.handler = function(event, context, callback){
var alexa = Alexa.handler(event, context, callback);
alexa.registerHandlers(handlers);
alexa.execute();
};
然后在不同的操纵者下面
var handlers = {
'sessionStartedRequest' : function(){
this.emit(':talk', "welcome.")
},
'AMAZON.StopIntent': function() {
this.emit(':tell', "Goodbye!");
},
'AMAZON.CancelIntent': function() {
this.emit(':tell', "Goodbye!");
},
'Unhandled': function() {
this.emit(':ask', "I'm sorry. I didn't get that. Could you repeat it?", "Ask me a question.");
},
'SessionEndedRequest': function() {
this.emit(":tell", "Goodbye!");
},
'DepartmentLocationIntent': function () {
var name = "";
if (this.event.request.intent.slots.department.value) {
name = this.event.request.intent.slots.department.value.toLowerCase().trim();
}
var key = {
'name': name
};
var tableName = "Department";
var params = {
TableName: tableName,
Key: key,
ProjectionExpression: 'loc'
};
db.getItem(params, function (err, data) {
//alexa.emit(":tell", name);
if (err) {
console.log(err);
//alexa.emit(':tell', "Sorry! I did not catch that!");
alexa.emit(':tell', err);
} else {
var loc = JSON.stringify(data.Item.loc);
alexa.emit(':tell', "The " + name + " department is in " + loc);
}
}, context.done);
},
'FacilityLocationIntent': function() {
var name = "";
if (this.event.request.intent.slots.facility.value) {
name = this.event.request.intent.slots.facility.value.toLowerCase().trim();
}
var key = {
'name': name
};
var tableName = "Facility";
var params = {
TableName: tableName,
Key: key,
ProjectionExpression: 'loc'
};
db.getItem(params, function(err, data) {
if (err) {
console.log(err);
alexa.emit(':tell', "Sorry! This facility does not exist!");
} else {
var response = JSON.stringify(data.Item.loc);
alexa.emit(':tell', name + " is located in " + response);
}
}, context.done);
}
};
希望这能解决你的问题。
我是android新手,我能够在kotlin中为我的应用程序设置firebase。如果我在Nexus 5X API 27 emulator中运行该应用程序,我就能够获取数据库,但当我在实际设备三星S5(Google play Services V 12.5.29,android V 5.0)中运行该应用程序时,我无法获得addValueEventListener回调。 Gradle文件: 我知道这
使用Amazon Alexa,可以通过两种方式调用技能的意图: “Alexa start[技能名称]。”然后继续询问该技能的具体意图 与谷歌助理我只知道调用的行动: "好的谷歌对话[动作名]。"然后继续询问该动作的具体意图。 是否有等效的调用来直接从Google助手的操作中调用特定意图?
我尝试从Alexa实现设备控制。我创建了智能家居技能并成功添加了用户授权。我可以打开/关闭我的设备。我明白,我只能使用自定义技能添加新命令(如停止、播放最后一个视频、获取状态等)。但基于这些知识,我仍然无法理解。我可以使用其他命令控制设备吗?例如,“Alexa,请经理播放卧室电视上一段视频”或“Alexa,请经理获取厨房摄像头状态”。
阿列克谢的新技能。开发一个应用程序,其中Alexa技能的状态由语音交互以外的其他方式决定。比如说,这是一种气象技能。我知道我可以从技能意图处理程序访问天气服务来检索“天气状态”,但是我想知道是否有一种方法——在这个例子中——气象站,将天气状态发布到技能并拥有技能将其存储为(全局、独立于用户的)状态变量。这将使我不必构建第二个网络服务,在那里我将维护状态信息。 我已经看到了技能的信息传递能力,但我不
我有一个网站,必须响应移动电话。我用我的桌面创建了它。当我调整浏览器窗口时,它在手机上工作得很好,但当我在我真正的手机上检查它:三星Galaxy S2时,它对手机视图没有反应。 会有什么问题吗?
这个小部件在模拟器4.1.2上工作得很好,当安装在真正的设备上时,它甚至不会显示在小部件列表上,就像安装了一样,但我不能让它正常工作。 下面是manifest.xml 和小部件提供程序