Per usare Alexa Skill in Europa si deve usare la zona AWS denominata Ireland
Per creare un custom intent in lambda NodeJS che legga le variabili passate da Alexa ASK si procede cosi
il modello prevede un custom intent di nome geo che ha uno slot (ovvero una variabile) di nome luogo
---------------------------------------------------------------------------
{
"interactionModel": {
"languageModel": {
"invocationName": "geografia",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": [
"aiuto "
]
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "geo",
"slots": [
{
"name": "luogo",
"type": "AMAZON.City"
}
],
"samples": [
"dimmi dove si trova {luogo}",
"dimmi dove è {luogo}"
]
}
],
"types": []
}
}
}
---------------------------------------------------------------------------
le righe in azzurro servono a leggere la variabile luogo che e' passata da ASK (via JSON) e la mettono nella variabile JS ac
---------------------------------------------------------------------------
const geo = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return (request.type === 'IntentRequest'
&& request.intent.name === 'geo');
},
handle(handlerInput) {
const { intent } = handlerInput.requestEnvelope.request;
const ac = intent.slots.luogo.value;
var speechOutput = " ";
if (ac == "firenze")
{
speechOutput = "firenze si trova in toscana"
}
if (ac == "milano")
{
speechOutput = "milano si trova in lombardia"
}
console.log(ac);
//const speechOutput = activity;
return handlerInput.responseBuilder
.speak(speechOutput)
.getResponse();
},
};
---------------------------------------------------------------------------
i messaggi di console.log si leggono si Amazon CloudWatch Logs.Dalla finestra della funzione di Lambda in alto ci sono i tab Configurazione e Monitoraggio..si clicca Monitoraggio e poi visualizza log in CloudWatch
Per fare interagire Alexa con informazioni derivanti da un server esterno mediante richieste http
(lo script test.php e' semplicemente un echo("stringa");
---------------------------------------------------------------------------
var http = require('http');
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
//console.log(JSON.parse(data).explanation);
console.log(data);
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
---------------------------------------------------------------------------