'use strict';
var Firebase = require('firebase');
var config = {
apiKey: "apiKey",
authDomain: "projectId.firebaseapp.com",
databaseURL: "https://databaseName.firebaseio.com",
storageBucket: "bucket.appspot.com"
};
if(Firebase.apps.length === 0) {
Firebase.initializeApp(config);
}
exports.handler = function(event, context,callback) {
try{
var request = event.request;
if(request.type === "LaunchRequest"){
let options = {};
options.speechText= "Welcome to TV. Using this skill you can control over 60 channels on your tv. To change to a different channel? You can say for example, play BBC Earth on tv";
options.endSession= false;
context.succeed(buildResponse(options));
}else if(request.type ==="IntentRequest"){
let options ={};
if(request.intent.name === "ChannelIntent"){
var message = 'hey guys';
var ref = Firebase.database().ref().child("hello");
var messagesRef = ref.child('messages');
var messageRef = messagesRef.push(message);
let ChannelName = request.intent.slots.ChannelName.value;
options.speechText= "Channel changed to " +ChannelName+ ". ";
options.endSession= true;
context.succeed(buildResponse(options));
}else{
throw "unknown intent type";
}
}else if(request.type ==="SessionEndedRequest"){
}else{
throw "unknown intent type";
}
} catch(e){
context.fail("Exception: "+e);
}
}
function buildResponse(options){
var response = {
version: "1.0",
response:{
outputSpeech: {
type: "PlainText",
text: options.speechText
},
shouldEndSession: options.endSession
}
};
if(options.repromptText){
response.reponse.reprompt ={
outputSpeech: {
type: "PlainText",
text: options.repromptText
}
};
}
return response;
}
这个想法是利用alexa技术来控制android电视应用程序。firebase用于将alexa技能与android电视应用程序连接起来。代码在AWS lambda中成功运行,但firebase db未更新。如果有人遇到了类似的问题,并找到了解决方案,请分享解决方案。
我将添加我的aws函数的代码片段。
发布于 2017-09-04 08:34:27
大多数Firebase操作都是异步的,所以不能仅仅假设成功。您必须等待调用完成:
messagesRef.push(message, (err) => {
if (err) return context.fail(err);
let ChannelName = request.intent.slots.ChannelName.value;
options.speechText= "Channel changed to " +ChannelName+ ". ";
options.endSession= true;
context.succeed(buildResponse(options));
})
https://stackoverflow.com/questions/46040900
复制相似问题