/
backup_index.js
49 lines (41 loc) · 1.67 KB
/
backup_index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require('dotenv').load();
console.log("Loaded environment");
var app = new require('alexa-app').app('wolfram');
console.log("Loaded app");
var wolfram = require('wolfram').createClient(process.env.WOLFRAM_APPID);
console.log("Loaded wolfram");
app.pre = function(request,response,type) {
console.log("pre-filtering the request");
if (request.sessionDetails.application.applicationId != process.env.ALEXA_APP_ID) {
// Fail ungracefully
response.fail("Invalid applicationId");
}
console.log("pre-filtered the request; moving on");
};
app.error = function(exception, request, response) {
console.log("app.error detected %s for %j (%j)", exception, request, response);
response.say("Sorry, something bad happened: " + exception.message).send();
};
app.launch(function(request, response) {
console.log("Launching app %j", request);
});
app.intent('wolfram',
function(request, response) {
console.log("Request: %j", request);
console.log("Saw request '%s'", request.slot('query'));
var query = request.slot('query');
wolfram.query(query, function(err, wolfram_response) {
console.log("Saw request response '%s' %j", err, wolfram_response);
if(err) throw err;
console.log("Saw '%j' for query '%s'", wolfram_response, query);
var result = wolfram_response.
filter(function(r) {return r.primary;}).
map(function(r) {return r.value; }).
reduce(function(output, r) {return output != null ? output : r;}, null);
response.say(result).send();
});
console.log("Returning with intent!");
response.say("End of the road!");
return false; // This method is handled asynchronously
});
exports.handler = app.lambda();