Realizziamo la nostra prima Skill per Alexa

Dal primo di novembre 2018 è stata presentata anche in Italia Alexa.

Si tratta di un assistente personale intelligente sviluppato da Amazon ed utilizzato per la prima volta nei dispositivi Amazon Echo e Amazon Echo Dot .

Alexa è in grado di interagire con la voce, creare elenchi di cose da fare e liste della spesa, riprodurre brani musicali, impostare sveglie, fornire previsioni meteorologiche e notizie, e tanto altro ancora.

Alexa può anche controllare dispositivi intelligenti come smart TV, prese wireless, lampadine, termostati, espletando la funzione di “concentratore” per la gestione di dispositivi domotici.

Ma come riesce a fare tutto ciò? Alcune funzioni sono integrate direttamente in Alexa, altre possono essere aggiunte grazie all’utilizzo delle cosiddette Skill.
Prendendo spunto dalla documentazione e da alcuni esempi presenti sul Developer Portal di Amazon ho realizzato anche io la mia prima Skill:

Si tratta di una Skill che giornalmente mi informa su quale tipo di rifiuto viene raccolto nella mia città. Provatela e fatemi sapere cosa ne pensate!

In questo articolo vedremo invece come realizzare una semplice Skill che quando viene richiamata fornisce delle curiosità relative ad i più famosi monumenti del mondo.
Per prima cosa, per poter realizzare una Skill dovremo registrarci sull’Amazon Developer Portal .
Una volta registrati dovremo loggarci e dal menu Your Alexa Consoles in alto a destra cliccare sul link Skills.

Dalla console Skills di Alexa clicchiamo sul pulsante Create Skill. Procediamo poi con l’assegnare un nome alla nostra Skill: nel nostro caso la chiamieremo Monumenti del Mondo. Sarà questo il nome mostrato nello Skill Store di Alexa, poniamo quindi attenzione a scriverlo correttamente.
Se necessario modifichiamo le impostazioni internazionali. Come modello scegliamo Custom, cliccando poi su Create Skill in alto a destra.

Dopo qualche secondo verrà creato il modello da cui iniziare e saremo reindirizzati nell’editor della Skill che presenta sulla destra la Skill builder checklist, una sorta di wizard che ci guida progressivamente nella realizzazione della Skill.

Come prima cosa dovremo impostare l’Invocation Name. In pratica diremo ad Alexa quale sarà il nome che dovremo invocare per avviare la Skill. Dovrà essere formato da 2 o più lettere fino ad un massimo di 50. Si possono utilizzare solo lettere minuscole, aprostrofi, virgole e spazi. Nel nostro caso metteremo “monumenti del mondo” e poi cliccheremo su Save Model.

Fatto questo, tornando indietro tramite il pulsante CUSTOM vedremo spuntata la prima voce della checklist.

Ora dovremo occuparci di creare le Interazioni per far eseguire alla Skill ciò che vogliamo. Clicchiamo quindi su Intent, Samples and Slots si aprirà la schermata che ci permetterà di creare una nuova chiamata. Inseriamo  quindi il testo “nuova_curiosita” e clicchiamo su Create custom intent. A questo punto dovremo aggiungere il testo da pronunciare per eseguire la funzione, inseriamo perciò nel campo Sample Utterances il testo dimmi una curiosita” e clicchiamo sul simbolo +.

A questo punto clicchiamo su Save Model per salvare le modifiche. In pratica abbiamo definito una chiamata alla funzione “nuova_curiosita” (che implementeremo più tardi lato server) che viene richiamata ogni volta che pronunceremo il testo “dimmi una curiosità”.  Per migliorarne l’iterazione con l’utente aggiungeremo delle frasi alternative a quella già inserita, ma questa volta lo faremo dall’editor JSON. Aggiungiamo tutte le frasi alternative che l’utente potrà utilizzare per eseguire la funzione “nuova_curiosità” e poi clicchiamo su Save Model.

A questo punto possiamo ritenere concluso lo sviluppo dell’interfaccia della Skill. Ci manca però la parte del back-end, la parte cioè che si occuperà di fornirci appunto, ad ogni chiamata “nuova_curiosita”, un testo estratto a caso da un elenco preimpostato.

Per implementare la parte server ci affideremo ad i servizi di Amazon Web Services: registriamoci sul sito e facciamo l’accesso portandoci poi sulla Management Console. Per prima cosa dobbiamo definire la regione, andremo quindi a settare “EU (Ireland)” dal menù a tendina presente in alto a destra vicino al menù dell’utente. Questo passaggio è fondamentale per riuscire poi a connettere la Skill al server.
Fatto questo nel campo di ricerca inseriamo il testo “Lambda” che è il tipo di servizio serverless che andremo ad utilizzare. Si aprirà così la pagina per gestire le funzioni già realizzate o per crearne nuove. Noi cliccheremo su Crea funzione per crearne una nuova, lo faremo però partendo da una funzione di esempio presente nei repository AWS per risparmiare del tempo. In particolare utilizzeremo l’esempio “alexa-skills-kit-nodejs-factskill”.

Clicchiamo sull’esempio e si aprirà una schermata che ci farà creare la nostra nuova funzione: scendiamo in fondo alla pagina e nel campo “Application name” inseriamo il testo “monumenti-del-mondo”, clicchiamo quindi su Deploy. Attendiamo qualche istante e quando apparirà il messaggio “Application successfully deployed” avremo il nostro back-end configurato!!
A questo punto dovremo aprire la risorsa “alexaskillskitnodejsfactskill” appena creata per poter modificare il codice.

Così facendo si aprirà una schermata contenente l’end-point per collegare la Skill alla funzione e più in basso il codice che sarà eseguito lato server.
Modifichiamo ora il codice del file index.js come segue:

Fatto ciò salviamo tramite il pulsante Salva presente in alto sulla destra e ci copieremo il link presente ad inizio pagina che inizia per “arn:aws:lambda..”, ci servirà per collegarlo alla Skill. Nel codice di esempio sopra riportato l’array “data” contiene due sole righe, una per ogni curiosità, ovviamente dobbiamo aggiungerne molte altre per rendere valida la Skill.

Torniamo sul portale developer di Amazon e selezioniamo dalla Skill builder checklist la quarta voce: Endpoint.
Si aprirà una pagina dove inserire, nel campo “Default Region” l’end-point copiato nel passo precedente. Procediamo a salvare le modifiche cliccando sul pulsante Save Endpoints posto in alto.

A questo punto abbiamo quasi terminato, dobbiamo solo fare il Build della Skill cliccando sul terzo pulsante della Skill builder checklist. Terminata questa fase avremo completato i passaggi obbligatori per la realizzazione della Skill, potremo passare a fare i nostri test.
Possiamo subito provare la nostra Skill direttamente dalla developer console semplicemente cliccando sul tab Test presente in alto.
Come prima cosa dobbiamo abilitare la funzione di test e poi possiamo procedere ad impartire i comandi digitando il testo o pronunciandoli direttamente tramite il microfono del PC.

A questo punto non ci resta altro che procedere con la “Distribution” cliccando sul relativo tab presente in alto, compilare tutti i campi obbligatori e procedere con il salvataggio.

Seguirà un wizard che verificherà la correttezza di tutti i requisiti necessari e ci comunicherà eventuali correzioni da apportare. Quando tutto sarà corretto saremo indirizzati alla pagina Certification dalla quale potremo sottomettere la Skill al team che si occuperà della verifica e dell’approvazione semplicemente cliccando sul pulsante Submit for review.

Dopo qualche istante vedremo, nella nostra console, la Skill in review, in attesa cioè che venga accettata e pubblicata sullo store. Non ci resta che incrociare le dita ed attendere pazientemente qualche giorno…

Spero che l’articolo sia stato di vostro gradimento e che vi torni utile per realizzare la vostra Skill.
A proposito della Skill “Monumenti del Mondo”, tenete d’occhio lo store e quando la pubblicano scaricatela e provatela!!

2 risposte a “Realizziamo la nostra prima Skill per Alexa”

  1. Ciao Massimo, grazie per la guida. Ma vorrei sapere quando ti richiedono il link per i Termini e Condizioni e la Privacy Policy cosa ci hai messo? Noi cosa ci possiamo mettere?
    Grazie

    1. Ciao Andrea, se vedi bene nella form il campo non è obbligatorio, lo sono solo quelli contrassegnati con l’asterisco. Io personalmente l’ho lasciato vuoto.
      Facci sapere poi la Skill che pubblichi!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.