Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 0 additions & 40 deletions .ask/config

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.ask
.idea
node_modules
6 changes: 0 additions & 6 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

12 changes: 0 additions & 12 deletions .idea/vanhack.iml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,15 @@ There is currently a bug where the skill always responds to the previous utteran
* R: The laser is currently off

I think there is a scope issue with the getWebRequest function returning speechText

### Development

- Install ASK
- `npm install -g ask-cli`
- Setup ASK
- `ask init`
- Make sure you have set up your AWS developer account and your AWS account
- Create a new ASK project
- `ask new -n vanhack`
- Clone this project
- `git clone [email protected]:<user>/alexa-vanhack.git alexa-vanhack`
126 changes: 60 additions & 66 deletions lambda/custom/index.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,36 @@
/* eslint-disable func-names */
/* eslint-disable no-console */
/* jslint esversion: 6 */

const Alexa = require('ask-sdk-core');
const https = require('https');
var rp = require('request-promise');

const noList = ["Sorry", "Unfortunately", "Sadly", "Alas", "I\'m sad to say that", "Out of luck", "No", "Nope", "What a bummer", "My magic eight ball says"];
const yesList = ["Yes", "Thankfully", "Indeed", "Yup", "I\'m happy to report that", "In fact", "Luckily", "What do you know", "Look at that", "Your stars have aligned", "Sure"];

function getWebRequest(url,doWebRequestCallBack) {
https.get(url, function (res) {
var webResponseString = '';
function getWebRequest(url) {
let params = {
uri: url
};

if (res.statusCode !== 200) {
doWebRequestCallBack(new Error("Non 200 Response"));
}

res.on('data', function (data) {
webResponseString += data;
});
return rp(params).then(function (response) {
if (typeof response != 'object')
response = JSON.parse(response);

res.on('end', function () {
var webResponseObject = JSON.parse(webResponseString);
if (webResponseObject.error) {
doWebRequestCallBack(new Error(webResponseObject.error.message));
} else {
doWebRequestCallBack(null, webResponseObject);
}
});
}).on('error', function (e) {
doWebRequestCallBack(new Error(e.message));
if (response.error) {
throw new Error(response.error.message);
} else {
return response;
}
}).catch(function (err) {
return err;
});
}

function randReply (options) {
function randReply(options) {
i = Math.floor(Math.random() * options.length);

return(options[i]);
return (options[i]);
}

const LaunchRequestHandler = {
Expand All @@ -55,61 +50,60 @@ const LaunchRequestHandler = {

const IsVHSOpenIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'IsVHSOpenIntent';
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'IsVHSOpenIntent';
},
async handle(handlerInput) {
handle(handlerInput) {
let url = "https://api.vanhack.ca/s/vhs/data/door.json";

await getWebRequest(url, function webResponseCallback(err, data) {
if (err) {
speechText = "Sorry I couldn't connect to the server: " + err;
} else {
const doorStatus = data.value;
if (doorStatus === 'open') {
speechText = randReply(yesList);
} else {
speechText = randReply(noList);
}
speechText += ', we are ' + doorStatus;
return getWebRequest(url).then(function (data) {
var doorStatus = data.value;

switch (doorStatus) {
case 'open':
return randReply(yesList) + ', we are ' + doorStatus;
case 'closed':
return randReply(noList) + ', we are ' + doorStatus;
default:
return "I'm not really sure if the space is open or not! Better check isvhsopen.com!";
}
}).catch(function (err) {
return "An error occured! The error was " + err;
}).then(function (speechText) {
return handlerInput.responseBuilder
.speak(speechText)
.withSimpleCard('VHS', speechText)
.getResponse();
});

return handlerInput.responseBuilder
.speak(speechText)
.withSimpleCard('VHS', speechText)
.getResponse();
},
}
};

const EquipmentUseIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'EquipmentUseIntent';
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'EquipmentUseIntent';
},
async handle(handlerInput) {
handle(handlerInput) {
let url = "https://api.vanhack.ca/s/vhs/data/laser.json";

await getWebRequest(url, function webResponseCallback(err, data) {
if (err) {
speechText2 = "Sorry I couldn't connect to the server: " + err;
} else {
const EquipmentStatus = data.value;
speechText2 = 'Currently the laser is ' + EquipmentStatus;
}
return getWebRequest(url).then(function (data) {
const EquipmentStatus = data.value;
return 'Currently the laser is ' + EquipmentStatus;
}).catch(function (err) {
return "An error occured! The error was " + err;
}).then(function (speechText) {
return handlerInput.responseBuilder
.speak(speechText)
.withSimpleCard('VHS', speechText)
.getResponse();
});

return handlerInput.responseBuilder
.speak(speechText2)
.withSimpleCard('VHS', speechText2)
.getResponse();
},
};

const HelloIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'HelloIntent';
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'HelloIntent';
},
handle(handlerInput) {
const speechText = 'Hello Hacker!';
Expand All @@ -123,8 +117,8 @@ const HelloIntentHandler = {

const HelpIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent';
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent';
},
handle(handlerInput) {
const speechText = 'You can say hello to me! Of course if you want to put me to work, you can ask if VHS is open as well.';
Expand All @@ -139,9 +133,9 @@ const HelpIntentHandler = {

const CancelAndStopIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& (handlerInput.requestEnvelope.request.intent.name === 'AMAZON.CancelIntent'
|| handlerInput.requestEnvelope.request.intent.name === 'AMAZON.StopIntent');
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
(handlerInput.requestEnvelope.request.intent.name === 'AMAZON.CancelIntent' ||
handlerInput.requestEnvelope.request.intent.name === 'AMAZON.StopIntent');
},
handle(handlerInput) {
const speechText = 'Happy hacking!';
Expand Down Expand Up @@ -191,4 +185,4 @@ exports.handler = skillBuilder
SessionEndedRequestHandler
)
.addErrorHandlers(ErrorHandler)
.lambda();
.lambda();
23 changes: 0 additions & 23 deletions lambda/custom/node_modules/ask-sdk-core/CHANGELOG.md

This file was deleted.

Loading