--------------------------------------------------------------------
const Alexa = require('ask-sdk');
var http = require('http');
--------------------------------------------------------------------
si crea poi una funzione di richiesta http. Attenzione: questa funzione e' di tipo asincrono e si deve inserire la Promise per fare in modo che il risultato entri nello scope della funzione principale
--------------------------------------------------------------------
function httpGet() {
return new Promise(((resolve, reject) => {
var options = {
host: '80.211.xxxx,xxxx', //solo ip o nome dominio ..niente http od https prima
port: 80,
path: '/dpc.php',
method: 'GET',
};
const request = http.request(options, (response) => {
response.setEncoding('utf8');
let returnData = '';
response.on('data', (chunk) => {
returnData += chunk;
});
response.on('end', () => {
resolve(returnData);
console.log("returnData "+returnData);
});
response.on('error', (error) => {
reject(error);
});
});
request.end();
}));
}
--------------------------------------------------------------------
Il custom intent che deve gestire la funzione asincrona sopra indicata deve essere modificato ponendo async nell'handler e deve aspettare il ritorno della funzione httpGet prima di procedere in modo da popolare in modo corretto la variabile response
--------------------------------------------------------------------
const geo = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return (request.type === 'IntentRequest'
&& request.intent.name === 'geo');
},
async handle(handlerInput) {
const response = await httpGet();
const { intent } = handlerInput.requestEnvelope.request;
const activity = intent.slots.luogo.value;
var speechOutput = response;
if (activity == "firenze")
{
//speechOutput = "firenze si trova in toscana";
}
if (activity == "milano")
{
speechOutput = "milano si trova in lombardia"
}
return handlerInput.responseBuilder
.speak(speechOutput)
.getResponse();
},
};
--------------------------------------------------------------------
Nessun commento:
Posta un commento