Created
August 5, 2019 07:37
-
-
Save snobu/eac303a15f158e18dff59eca2aab0eea to your computer and use it in GitHub Desktop.
azure-functions-fulfill-intent-for-alexa
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let Client = require('azure-iothub').Client; | |
let Message = require('azure-iot-common').Message; | |
let names = require('docker-names'); | |
let IOTHUB_CONNSTR_SERVICE = process.env.IOTHUB_CONNSTR_SERVICE; | |
let serviceClient = Client.fromConnectionString(IOTHUB_CONNSTR_SERVICE); | |
module.exports = function(context, req) { | |
context.log('JavaScript HTTP trigger function processed a request.'); | |
let intent = req.body.request.intent.name; | |
context.log('------------------'); | |
context.log('Intent: ' + intent); | |
serviceClient.open(function(err) { | |
if (err) { | |
context.error('Could not connect: ' + err.message); | |
} else { | |
context.log('Service client connected'); | |
var message = new Message(intent); | |
message.messageId = names.getRandomName(); | |
message.expiryTimeUtc = Date.now() + 60000; // one minute | |
context.log('Sending message: ' + message.getData()); | |
switch(intent) { | |
case 'juststeve': | |
context.res = { | |
version: "1.1", | |
response: { | |
outputSpeech: { | |
type: "PlainText", | |
text: "Alright, let's play some Steve on the Pi..." | |
}, | |
shouldEndSession: true | |
} | |
}; | |
serviceClient.send('jazzy', message, (err) => { | |
context.log(err); | |
}); | |
break; | |
case 'developers': | |
context.res = { | |
version: "1.1", | |
response: { | |
outputSpeech: { | |
type: "PlainText", | |
text: "Alright, you'll find that out in a few seconds. Just watch the Pi." | |
}, | |
shouldEndSession: true | |
} | |
}; | |
serviceClient.send('jazzy', message, (err) => { | |
context.log(err); | |
}); | |
break; | |
case 'arduino_temperature_cold': | |
context.res = { | |
version: "1.1", | |
response: { | |
outputSpeech: { | |
type: "PlainText", | |
text: "Ok, the temperature is being set to a low-key blue..." | |
}, | |
shouldEndSession: true | |
} | |
}; | |
var arduinoMsg = { | |
Name: "RunCold", | |
Parameters: {} | |
}; | |
message.data = JSON.stringify(arduinoMsg); | |
context.log(message.data); | |
serviceClient.send('WINC1500', message, (err) => { | |
context.log(err); | |
}); | |
break; | |
case 'arduino_temperature_hot': | |
context.res = { | |
version: "1.1", | |
response: { | |
outputSpeech: { | |
type: "PlainText", | |
text: "Ok, making it hotter..." | |
}, | |
shouldEndSession: true | |
} | |
}; | |
var arduinoMsg = { | |
Name: "RunHot", | |
Parameters: {} | |
}; | |
message.data = JSON.stringify(arduinoMsg); | |
context.log(message.data); | |
serviceClient.send('WINC1500', message, (err) => { | |
context.log(err); | |
}); | |
break; | |
case 'arduino_xmas_lights': | |
context.res = { | |
version: "1.1", | |
response: { | |
outputSpeech: { | |
type: "SSML", | |
ssml: '<speak><prosody pitch="high">HO,</prosody>' + | |
'<prosody pitch="medium">HO,</prosody>' + | |
'<prosody pitch="low">HO.</prosody> Hold the servers! ' + | |
'Summoning the Serverless Christmas spirit!</speak>' | |
}, | |
shouldEndSession: true | |
} | |
}; | |
var arduinoMsg = { | |
Name: "XmasLights", | |
Parameters: {} | |
}; | |
message.data = JSON.stringify(arduinoMsg); | |
context.log(message.data); | |
serviceClient.send('WINC1500', message, (err) => { | |
context.log(err); | |
}); | |
break; | |
default: | |
context.res = { | |
version: "1.1", | |
response: { | |
outputSpeech: { | |
type: "PlainText", | |
text: "This is Azure Functions backend, " + | |
"but i'm not sure what you mean. Try again?" | |
}, | |
shouldEndSession: true | |
} | |
}; | |
} | |
context.log('-------------------'); | |
context.done(); | |
} | |
}); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment