Interazione dell’utente con una skill di Alexa

I dispositivi Amazon Echo appartengono ad una gamma di prodotti già ricca e che cresce nel tempo. Tutti i dispositivi prevedono un’interazione con le skill di Alexa che condividono dei principi. In questo articolo te li illustro.

Le skill sono le “abilità” che i dispositivi acquisiscono grazie allo sviluppo di soggetti terzi e che gli utenti possono installare sul loro dispositivo in modo facile e veloce.
Ma come funziona l’interazione tra un utente ed una skill installata su un dispositivo?

Intanto il dispositivo deve essere “svegliato” grazie ad una parola – che è fissata fin dal momento della sua produzione in “Alexa” ma che può essere modificata in “Computer”, “Amazon” oppure ancora “Echo”. Comprendere come svegliare il dispositivo è molto semplice, mentre conoscere i principi che sottendono l’interazione con le skill richiede un po’ di pazienza.

Invocation name

Una volta acceso il dispositivo, l’utente può richiamare la skill pronunciando le parole “Apri  “Invocation name” ” oppure “Chiedi a [“Invocation name”] di”.
L’ “Invocation name” assume quindi un ruolo centrale ai fini marketing, un po’ come lo è il nome di dominio per un sito internet, in cui il solo fatto di presidiarlo significa conquistare una fetta di mercato di utilizzatori che lo pronunceranno ed impiegheranno la tua skill. Amazon, proprio per questa ragione, fissa delle regole che devono essere rispettate per la scelta dell’invocation name. Per prima cosa, questo non deve essere necessariamente uguale al nome della skill ma può ad esempio richiamarne l’uso che gli utenti fanno. Circa la sua composizione, deve essere composta da un minimo di due parole escluse le “stop words”. Se possiedi un marchio registrato, però, potrai impiegare una sola parola e richiamare quella (nel nostro caso, ad esempio, abbiamo la skill di eDock in cui la Invocation name è “eDock”).
Alcune parole non possono essere impiegate come “invocation name”, come ad esempio la parola “Alexa” ed infine, come immaginerai, è importante che l’invocation name sia localizzato per la lingua del paese presso cui distribuisci la tua skill e può essere differente per ogni lingua.

Sintassi di un comando vocale
Sintassi di un comando vocale

Architettura tecnica dall’invocation name “in avanti”

Una volta pronunciata l’Invocation name, il cloud di Amazon riceve la registrazione dell’audio che è stato recepito dal dispositivo, elabora il contenuto e stabilisce il da farsi.Se si tratta dell’apertura di una skill terza, Amazon determina qual è l’intento ed i valori degli eventuali slot rispetto a quell’intento avviando una nuova sessione. 
Ti faccio un  esempio.
Nella nostra skill Capitali del mondo quando l’utente pronuncia la frase “Apri Capitali del mondo e digli di chiedermi una Capitale Europea”:

  • “Capitali del mondo” è l’invocation name
  • “Capitale Europea” è lo slot che deve essere valorizzato dalla skill

A questo punto cosa succede dietro le quinte?

  • la skill riceve una richiesta da Amazon per un utente (all’utente viene assegnato un id che assume valori differenti ogni volta che quello stesso utente usa una skill differente. E’ un id dell’utente nell’uso della skill e non un id globale sull’utilizzo dei dispositivi)
  • Amazon passa l’intento alla skill (l’intento è “chiedi una capitale”) con il relativo slot (capitale europa)
  • la skill, infine, manda ad Amazon la risposta
  • Amazon manda la stessa risposta all’utente

In questa architettura, sono due le cose da notare e su cui porre attenzione:

  1. gli sviluppatori terzi quindi non ricevono file audio registrati, poiché questi sono registrati dal dispositivo e comunicati ad Amazon. E questo dovrebbe alleggerire lo sviluppatore della skill ai fini del GDPR.
  2. riuscire a salvare il contesto per mantenerlo lungo la durata di ogni sessione è un’operazione piuttosto sofisticata, di cui ti parlo in un paragrafo dedicato. Salvare il contesto significa, nell’esempio che abbiamo fatto, che alla richiesta dell’utente “apri capitali del mondo e chiedimi una capitale europea” voglio che la skill si ricordi che stiamo parlando dell’Europa. A quella richiesta, quindi, non deve seguire la domanda “di quale continente?”. 

Cos’è una Sessione e come salvare il contesto

Una buona esperienza d’uso di una skill non può evitare di tener conto dello stato della sessione in cui l’utente sta operando. Gli attributi di sessione rappresentano il concetto chiave per Amazon Alexa perché è proprio attraverso questi che puoi salvare lo stato.

Immaginiamo un esempio in cui l’utente inizia una sessione che deve essere risolta dalla tua skill. Amazon, come sai dal paragrafo precedente, manda all’end point della skill stessa una richiesta specificando l’intento. Immaginiamo quindi che l’intento sia relativo alla nostra skill “Missione Terra” e che l’utente voglia riprendere il gioco lasciato incompleto alla precedente sessione. Per questo pronuncerà la frase “Apri Missione Terra e continua la missione”.

Se non esistesse quindi il concetto di sessione, l’interazione sarebbe molto diversa e più frustrante (l’utente non potrebbe salvare la partita giocata per poi riprenderla, come fatto in questo esempio).

Gli attributi di sessione sono attributi che vengono valorizzati dal server (quindi da Amazon) ed inviati al dispositivo e possono avere una qualunque forma (per entrare nel dettaglio tecnico, si tratta di oggetti json) a discrezione dello sviluppatore. 

Svolgono quindi la funzione che i cookie svolgono per i siti web in cui il server li setta, il client li riceve e a tutte le richieste successive – che hanno a che fare con la stessa sessione – li manda.

Nei casi in cui la skill prevedesse In-Skill Purchase sarebbe quantomeno antipatico chiedere all’utente più volte ininterrottamente di fare un upsell se l’utente l’ha già rifiutato. Usando gli attributi di sessione possiamo registrare che l’utente ha rifiutato l’upsell e quindi eviteremo di proporre nuovamente la vendita.

Possiamo poi fare uso degli attributi persistenti se vogliamo che durino anche oltre alla sessione in corso. In questo caso sappi che esistono già delle librerie di Amazon che si integrano perfettamente con DynamoDB di Amazon e che ti consentono di passare da attributi di sessione ad attributi persistenti con una riga di codice per poter salvare ad esempio il nome dell’utente, ecc.

Conclusioni

L’interazione con una skill prevede la scelta di un Invocation Name che svolge anche un ruolo marketing e che deve tener conto della localizzazione sulle culture a cui vuoi distribuire la tua skill, compresa la traduzione. L’architettura con cui si svolge l’interazione è stata congegnata per poter salvaguardare la privacy dell’utente che – in definitiva – comunica i suoi dati (ad esempio le frasi pronunciate) ad Amazon e mai agli sviluppatori terzi. Il concetto di stato di una sessione è fondamentale e può essere gestito tramite l’uso di attributi di sessione.

Lascia un commento

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