https://eu-west-1.console.aws.amazon.com/lambda
Cette fonctionnalité fournie par Amazon permet d’exécuter du code sans serveur.
Exemple avec Node-JS :
Le code doit comporter à minima un fichier index.js qui contient un événement
console.log(‘Loading function’);
exports.handler = async (event, context) => {
console.log(‘Received event:’, JSON.stringify(event, null, 2));
console.log(‘value1 =’, event.key1);
console.log(‘value2 =’, event.key2);
console.log(‘value3 =’, event.key3);
//throw new Error(‘Something went wrong’);
return event.key1; // Echo back the first key value
};
Si on souhaite ajouter un package NPM (exemple
https://www.npmjs.com/package/amazon-date-parser) il faut télécharger sur GIT le package (
https://github.com/niklongstone/amazon-date-parser), exporter la fonction Lambda (box « Action », choisissez » Exporter la fonction ») pour créer un fichier Zip, ouvrir le ficher Zip, ajouter le répertoire du package Lambda, rezippez, créez une nouvelle fonction lambda puis dans la combo « Modifier le code en ligne » sélectionnez « Chargez un fichier en ligne ».
var AmazonDateParser = require(‘amazon-date-parser-master’);
var date = new AmazonDateParser(‘2018-W48’);
exports.handler = async (event, context) => {
console.log(‘Val Date –>’,date);
console.log(‘Received event:’, JSON.stringify(event, null, 2));
console.log(‘value2 =’, event.key2);
return event.key1; // Echo back the first key value
};
Affiche la date reçue d’un slot Alexa Skill de date (cf.
https://medium.com/@niklongstone/alexa-amazon-date-and-js-5c8e819913b2)
Fonction pour lire le résultat d’un appel à une fonction HTTPS :
function httpGet(query, callback) {
https.get("https://url.com/" + encodeURI(query), (resp) => {
let data = "";
//-- A chunk of data has been recieved.
resp.on("data", (chunk) => {
data += chunk;
});
//-- The whole response has been received. Print out the result.
resp.on("end", () => {
//console.log(JSON.parse(data).mainText);
callback(JSON.parse(data).mainText);
});
}).on(" error ", (err) => {
callback("Error: " + err.message);
});
}
L’appel de la fonction lors d’un intent :
'<<Nom Intent>>': function () {
speechOutput = "";
var query = "<<comande>>.php?xx=yy"; //-- Exemple
httpGet(query, (theResult) => {
//console.log("sent : " + query);
//console.log("received : " + theResult);
speechOutput = theResult;
this.emit(":ask", speechOutput, speechOutput);
});
},
Ne pas oublier de placer au début du script :
const https = require("https");
Cas d’un intent avec SLOT :
'<<Intent>>': function () {
speechOutput = '';
let sSlot = resolveCanonical(this.event.request.intent.slots.xxx);
var query = "zzz.php?nom=" + xxx;
//console.log("sent----> : " + query);
httpGet(query, (theResult) => {
console.log("sent : " + query);
console.log("received : " + theResult);
const theFact = theResult;
speechOutput = theFact;
this.emit(':ask', speechOutput, "Désirez-vous d'autre renseignemts ou quitter ?");
});
},
Pour tester la fonction Lambda :
{
"session": {
"new": false,
"sessionId": "amzn1.echo-api.session.xxxx", //--> [unique-value-here] exemple copiez User Account
"attributes": {},
"user": {
"userId": "amzn1.ask.account.xxxx" //--> https://console.aws.amazon.com/billing/home?#/account
},
"application": {
"applicationId": "amzn1.ask.skill.xxxxx" //--> Your Skill ID : https://developer.amazon.com/alexa/console/ask/build/custom
}
},
"version": "1.0",
"request": {
"locale": "fr-FR",
"timestamp": "2016-10-27T21:06:28Z", //--> Exemple
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.xxxx", //--> Pour test valeur unique exemple 123456789
"intent": {
"slots": {
"Color": {
"name": "Color",
"value": "blue"
}
},
"name": "MyColorIsIntent"
}
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"System": {
"device": {
"supportedInterfaces": {
"AudioPlayer": {}
}
},
"application": {
"applicationId": "amzn1.ask.skill.xxxx" //--> Your Skill ID : https://developer.amazon.com/alexa/console/ask/build/custom
},
"user": {
"userId": "amzn1.ask.account.xxx" //--> https://console.aws.amazon.com/billing/home?#/account
}
}
}
}
cccc
WordPress:
J’aime chargement…