mercoledì 14 novembre 2018

Alexa Skills



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": []
        }
    }
}
---------------------------------------------------------------------------

il custom intent deve intercettare una richiesta di tipo IntentRequest e di nome geo
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'); 

http.get('http://80.211.xxx,xxx/test.php', (resp) => {
  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);
});
---------------------------------------------------------------------------

Nessun commento:

Posta un commento

Alpine Linux 2024 su IBM A31

Ho provato a far resuscitare un IBM A31 destinato alla discarica. La macchina ha processore P4, 256 Mb di RAM, la batteria CMOS morta ed e&#...