Files
old-tellall/backend/t_server.js
2018-01-08 10:33:15 +00:00

145 lines
4.0 KiB
JavaScript

var amazonHelper = require('./helpers/amazon');
var databaseHelper = require('./helpers/database');
const config = require('./config');
require('isomorphic-fetch');
var express = require('express');
var alexa = require('alexa-app');
var bodyParser = require('body-parser');
var MongoClient = require ('mongodb').MongoClient;
var ObjectID = require ('mongodb').ObjectID;
const router = express.Router ();
var skillID = 'amzn1.ask.skill.7115bfc9-313e-4728-830b-ebd19ce96cb3';
var skillDbID = '5a5016e775becaef2015da10'; //_id in database
//***********/
//var express = require("express");
//var alexa = require("alexa-app");
var PORT = process.env.port || 5000;
var app = express();
// ALWAYS setup the alexa app and attach it to express before anything else.
var alexaApp = new alexa.app("step3");
alexaApp.express({
expressApp: app,
// verifies requests come from amazon alexa. Must be enabled for production.
// You can disable this if you're running a dev environment and want to POST
// things to test behavior. enabled by default.
checkCert: false,
// sets up a GET route when set to true. This is handy for testing in
// development, but not recommended for production. disabled by default
debug: true,
preRequest: function(request,response){
console.log('pre');
const alexaRequest = new alexa.request(request);
if (alexaRequest.type() === "IntentRequest") {
db.collection('skill_list').findOne({_id: ObjectID(skillDbID)}, (err,skill)=>{
if (skill) {
console.log(alexaRequest.data.request.intent);
let intentId = findElementByAttr(skill.intents, 'intentName', alexaRequest.data.request.intent.name);
const response = new alexa.response(alexaRequest.getSession());
if (intentId !== -1){
return response.say(skill.intents[intentId].answer);
}else{
return response.say('Sorry, I could not find desired intent');
}
}
});
}
}
});
// now POST calls to /test in express will be handled by the app.request() function
// from here on you can setup any other express routes or middlewares as normal
app.set("view engine", "ejs");
alexaApp.launch(function(request, response) {
console.log('launch');
response.say("You launched the app!");
});
//alexaApp.dictionary = { "names": ["matt", "joe", "bob", "bill", "mary", "jane", "dawn"] };
/*
alexaApp.intent("GetFirstQuestion", {
"slots":[],
"utterances": [
"Tell me about your process", "Give me info about your process"
]
},
function(request, response) {
console.log('My name');
response.say("Success!");
}
);
*/
var findElementByAttr = function (data, attr, val){
for(var i = 0; i < data.length; i ++) {
if(data[i][attr] === val) {
return i;
}
}
return -1;
}
/*
alexaApp.request = (jsonRequest) => {
/*
const alexaRequest = new alexa.request(jsonRequest);
if (alexaRequest.type() === "IntentRequest") {
db.collection('skill_list').findOne({_id: ObjectID(skillDbID)}, (err,skill)=>{
if (skill) {
console.log(alexaRequest.data.request.intent);
let intentId = findElementByAttr(skill.intents, 'intentName', alexaRequest.data.request.intent.name);
const response = new alexa.response(alexaRequest.getSession());
if (intentId !== -1){
response.say(skill.intents[intentId].answer);
}else{
response.say('Sorry, I could not find desired intent');
}
}
});
}
};
*/
alexaApp.intent("SimpleIntent", {
"slots": [],
"utterances": ["Tell me somethin"]
},
function(request, response) {
response.say("This is sample");
}
);
//app.listen(PORT);
//console.log("Listening on port " + PORT + ", try http://localhost:" + PORT + "/test");
MongoClient.connect (config.dbURL).then (database => {
db = database;
db.collection ('intent_list');
databaseHelper.initModule(db);
app.listen (config.PORT, () =>{
console.log ('Express server running on port ' + config.PORT);
databaseHelper.loadTokens();
});
}).catch(e=>{
console.log("error : " + e);
})