Skill Alexa che semplificano la vita: come crearne una con Java?

Leanid Herasimau Leanid Herasimau

Skill Alexa

Quante attività, di per sé non difficili ma che portano via tanto tempo, potresti rendere più semplici sfruttando le skill Alexa?

Chiunque al mondo conosce ormai Amazon Echo e i dispositivi di comando vocali; in questo articolo vedremo come fare per sfruttarne appieno tutte le potenzialità: scegliere la musica preferita, guardare l’ultima serie tv oppure, perché no, ordinare la pizza in pochi secondi!

Introduzione alle Skill Alexa

In questo articolo vedremo come sia possibile creare una Skill Alexa nuova, finalizzata nello specifico a ordinare una pizza senza usare le mani.

Per prima cosa indichiamo 5 buoni motivi per iniziare a studiare il mondo degli assistenti vocali e le varie customizzazioni che possiamo apportare alle Skill:

1) L’utilizzo degli assistenti vocali è il modo più naturale per comunicare con la tecnologia, non sono necessarie conoscenze particolari di computer per poter comunicare con Alexa.

2) Gli assistenti vocali sono usciti da poco sul mercato, le aziende e gli sviluppatori hanno la possibilità di proporre al mercato le loro idee con poca concorrenza.

3) Gli assistenti vocali possano essere utilizzati mentre stai facendo qualcos’altro.

4) I clienti possono acquistare dei prodotti direttamente con la sola voce. Ciò può semplificare l’acquisto per chi è già un cliente e facilitare quello dei nuovi.

5) Ci sono oltre 100 milioni di utenti che usano dispositivi Alexa. In media ogni utente utilizza l’assistente vocale almeno tre volte al giorno.

Cos’è Amazon Echo?

Amazon Echo

Amazon Echo è un altoparlante wireless e un dispositivo di comando vocale sviluppato da Amazon.

Il dispositivo risponde al nome “Alexa” e funziona in modo simile al servizio di Apple Siri. Ad esempio, posso dire “Alexa, che ore sono?” per ricevere una risposta immediata.

Per iniziare basta collegare Echo alla tua rete wireless e siamo pronti all’utilizzo.

"Quante attività, di per sé non difficili ma che portano via tanto tempo, potresti rendere più semplici sfruttando le skill Alexa?"

Background

La Skill Alexa che proviamo a sviluppare oggi si chiama Mia Pizza. Questa Skill consente agli utenti di ordinare la pizza a domicilio in modo semplice e veloce.

La skill avrà i seguenti comandi:

Alexa, apri Mia Pizza -> Messaggio di benvenuto;

Ordina una margherita -> Aggiunta della pizza nel carrello, conferma dell’ordine.

Per implementare questa skill, abbiamo bisogno di avere un account come sviluppatore Amazon, l’accesso alla console Alexa e l’accesso alla AWS Lambda.

Sviluppo

Iniziamo dalla creazione della Skill Alexa. Procederemo dapprima sul portale di sviluppatori Amazon, in modo da avere una comprensione di base della struttura prima di creare le nostre API.

Questi i passi da seguire:

1. Accedi al Portale per sviluppatori Amazon.

2. Vai alla sezione “Alexa Skills Kit“.

3. Vai alla seziona “Crea Skill” sul lato destro dello schermo.

immagine skill alexa

4. Segui i passaggi della procedura guidata per creare la skill. Chiamerò questa skill “Mia Pizza”. Selezionare il modello di skill “Personalizzato”.

5. Seleziona “Invocation” e fornisci un nome. Il nome della mia chiamata sarà lo stesso del nome skill: “apri Mia Pizza“.

immagine skill alexa 2

6. Seleziona “Intents” e aggiungi un nuovo intento. Questo sarà un intento personalizzato chiamato “ADD_PIZZA”. Di seguito sono riportate alcune delle espressioni che ho fornito:

{PIZZA}

ordina {PIZZA}

ordina una {PIZZA}

skill alexa 3

Queste espressioni aiutano Alexa a identificare le varie parti di una richiesta vocale. In questo caso la Skill Alexa è semplice e non necessita di molte espressioni, ma più è complicata la richiesta (e di conseguenza i parametri) e maggiori saranno le espressioni che si dovranno fornire.

Nella nostra espressione usiamo il parametro {PIZZA}, che determinerà la pizza che vogliamo acquistare. Ho creato questo parametro tramite Intent Slot, in modo che Alexa possa interpretarlo in un parametro per le nostri API di backend da utilizzare.

Alexa skill slot

7. Infine, dobbiamo selezionare “Build the model” per compilare le espressioni e gli slot di intenti e verificare gli eventuali errori.

Backend

Iniziamo adesso a scrivere il codice. Come punto di partenza scegliamo di usare un esempio fornito da amazon per Java.

Per completare l’ordine sul sito della pizzeria ci serve:

1. Autorizzazione.

2. Aggiungi al carrello.

3. Conferma dell’ordine.

Per fare in modo che la nostra skill possa essere usata anche da altri persone, dobbiamo prevedere l’abilitazione di Accounting Linking tra la nostra skill e la pizzeria. Per semplicità e per non allungare troppo la trattazione, tale argomento non sarà coperto in questo articolo.

Ci ritroviamo quindi con questi servizi da chiamare per poter concludere un ordine:

AuthService (1 endpoint) per autenticare l’utente;

CartService (1 endpoint) [addToCart] per aggiungere la pizza nel carrello;

OrderService (1 endpoint) [confirmOrder] per confermare l’ordine.

Autorizzazione

Il nostro servizio di autorizzazione si occuperà di autenticare l’utente sul sito della pizzeria, in modo da poter effettuare delle chiamate successive come “Aggiunta pizza nel carrello” e “confermare l’ordine”.

Questo è un semplice end-point della Auth, dove dobbiamo passare username e password dell’utente con le varie scope, ed infine (se tutto ok) ottenere un token JWT.

Aggiunta della pizza

CartService è il servizio che ci permette di aggiungere la pizza selezionata dall’utente nel carrello. Il sito della pizzeria che stiamo usando per questo esempio ci richiede, oltre all’ID della pizza, anche altri dati quali:

• clientId – id del cliente;

• zoneId – id della zona di consegna;

• device – dispositivo dal quale viene effettuato l’ordine;

• addToCart – oggetto principale della richiesta il quale contiene ID della pizza.

Una volta effettuata la chiamata a questo servizio la nostra pizza sarà successivamente  aggiunta al carrello.

Conferma dell’ordine

Infine non ci resta che confermare il nostro ordine, utilizzando servizio OrderService.

Anche questa chiamata è abbastanza semplice, dobbiamo passare i dati del nostro carrello e, nel caso tutto vada a buon fine, ci sarà restituito l’orario indicativo della consegna.

AWS Lambda

Una volta scritto il codice dobbiamo provvedere a metterlo su AWS Lambda e collegarlo con la nostra Skill.

Per poterlo fare dobbiamo accedere alla console di AWS Lambda, fare clic sul pulsante crea nuova funzione, selezionare l’opzione From scratch, dare un nome alla nostra funzione (come ad esempio “MiaPizza”) e selezionare Runtime per Java 8.

Ora siamo pronti per collegare la skill con la nostra funzione AWS. Apparirà un’immagine come la seguente:

Alexa skill AWS

Risultato

Il risultato sarà quello di ricevere in modo semplice e veloce una buona pizza direttamente a casa!

Pizza con Alexa

Conclusioni

Spero sia stato divertente trascorrere un po’ di tempo insieme e imparare qualcosa in più su Amazon Alexa.

Abbiamo visto che il processo di sviluppo della Skill Alexa può variare in base alle nostre esigenze. Ricordiamoci dunque di partire sempre dalla strategia e dalle finalità che vogliamo raggiungere (ovvero dai nostri requisiti), e solo in un secondo momento partire con la scrittura del codice.

Scopri le tecnologie che usiamo

Social Sharing

Lascia un commento

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