Integrare Alexa in un prodotto consumer
Gli assistenti vocali sono sempre più presenti nelle nostre case e sempre più spesso ci viene richiesto di integrare queste tecnologie all’interno di nuovi prodotti. In questo post vi presenterò i problemi che abbiamo affrontato durante l’integrazione di Amazon Alexa in un prodotto consumer e vi lascerò alcuni suggerimenti che avrei voluto sapere prima di imbarcarmi in questo progetto.
Cosa sono gli assistenti vocali
Secondo Wikipedia, “un assistente virtuale è un software che interpreta il linguaggio naturale (Natural Language Processing) e, se opportunamente addestrato, può dialogare con degli interlocutori umani allo scopo di fornire informazioni o compiere determinate operazioni”.
Alexa di Amazon è una delle tante declinazioni di assistenti vocali presenti sul mercato, al pari di Siri di Apple, Cortana di Microsoft, Google Assistant di Google, Bixby di Samsung. Alexa è presente ormai in tanti prodotti: può essere un Amazon Echo, oppure può essere integrato nelle placche della luce, in un lampadario, nelle televisioni.
L’architettura software di Alexa, che poi non differisce molto da quella degli altri assistenti, è composta da un device fisico vicino all’utente e un software sul cloud. I device registrano l’audio ambientale, cioè la voce dell’utente, che viene poi mandato al cloud per l’analisi vera e propria.
Questo passo si chiama natural language understanding, ossia si cerca di interpretare quello che l’utente vuole dire: notate che questa è una cosa abbastanza complicata, perché tutte le interazioni umane sono altamente dipendenti dal contesto. Una volta compreso il comando, c’è l’invocazione di quella che viene chiamata in gergo una skill, che non è altro che un’altra funzione sul cloud; la skill ha come input non più voce ma dati veri e propri, che usa per dare in output il risultato. Alcuni esempi di skill sono il meteo o la gestione della lista della spesa.
L’output della skill ritorna poi al cloud, che lo trasforma in audio che viene riprodotto sul dispositivo fisico vicino all’utente.
Processo di certificazione
Amazon mantiene un controllo molto forte sul branding di Alexa, per cui tutti i dispositivi che escono sul mercato con il logo Alexa devono superare un processo di certificazione in cui Amazon verifica sia la funzionalità che la sicurezza del prodotto. I test di conformità non sono effettuati da Amazon stessa, ma da laboratori di certificazione affiliati. Ogni prodotto deve superare prove di funzionalità e di sicurezza, che sono svolte da due laboratori diversi.
Dovrete quindi prevedere di avere almeno 4 pezzi del vostro device da inviare agli enti certificatori per la fase di test.
Fate attenzione anche ai tempi necessari per i test: tutti i laboratori lavorano a slot, quindi non è detto che una volta finiti gli sviluppi possiate entrare subito nella fase di testing. Siccome i test stessi durano 2 settimane, vi consiglio di stimare 3-4 settimane la durata di questa fase.
Il risultato della certificazione può essere triplice: passato, fallito oppure passato con riserva (recommendations), ossia una o più raccomandazioni che il laboratorio di certificazione vi fa e che dovrete implementare entro un tempo ragionevole (tipicamente 6 mesi).
Fortunatamente, Amazon fornisce una suite di test molto completa, chiamata Alexa Quality Test (AQT), che potete usare per verificare la compatibilità del vostro prodotto. Gli AQT dettagliano molto bene il numero di speaker da usare, l’angolo con cui incidono sul vostro prodotto, i file audio da riprodurre e così via. Vi suggerisco di installare quanto prima una postazione permanente di test.
Requisiti minimi di un prodotto con Alexa a bordo
Ogni prodotto con Alexa ha un insieme minimo di requisiti sia hardware che software. Partendo dai più ovvi, necessita di uno o più microfoni, perché deve registrare l’audio, e uno speaker perché deve riprodurre l’audio. Le linee guida di Amazon richiedono anche di aggiungere al prodotto alcuni pulsanti fisici che servono per esempio per alzare o abbassare il volume o richiamare Alexa in ogni condizione (perché magari a volte non si riesce ad invocarla oppure c’è troppo rumore di fondo). Il dispositivo deve inoltre avere connettività a internet e dei led che danno un feedback visivo sugli stati in cui può essere Alexa.
Tra i requisiti software possiamo citare ad esempio la procedura di autenticazione del prodotto sull’account di Amazon, che serve per certificare che effettivamente quel prodotto è installato nella casa dell’utente. Un’altra cosa importante da menzionare sono le pratiche di sicurezza da seguire che potete trovare nella pagina dedicata, da cui estraggo alcuni esempi:
- non avere password di default,
- validare tutto l’input prima di processarlo,
- utilizzare l’autenticazione TLS 1.2 o superiore,
- avere delle strategie di software update.
Infine, ci sono anche dei requisiti geografici, ossia un prodotto con Alexa non può essere venduto in tutti gli stati.
Implementazione della UX
Fatte le dovute considerazioni sulla certificazione, parliamo adesso di cosa c’è effettivamente da implementare. La parte “difficile”, ossia registrare l’audio, inviarlo al cloud, ricevere le risposte e riprodurre l’audio è già fornita da Amazon nel codice rilasciato su Github. Resta però da implementare la gestione di tutte le funzionalità del prodotto, come ad esempio i pulsanti. Vediamo in dettaglio cosa manca:
- visualizzazione degli attention states: le interazioni che un assistente vocale fa con l’utente si dividono in più stati; nei casi più semplici si inizia con lo stato “listening”, cioè ascolta quello che dice l’utente, si prosegue in stato “thinking” in cui sta aspettando che il cloud gli dia una risposta, infine si arriva allo stato “speaking” in cui parla all’utente. Un prodotto con Alexa a bordo deve comunicare all’utente questi stati; si possono usare dei LED oppure anche lo schermo (se presente);
- led di notifiche: il dispositivo deve avere dei led che notificano l’utente quando il microfono è spento oppure quando Alexa è in modalità Do not disturb.
- pulsanti fisici: devono essere presenti dei pulsanti per abbassare o alzare il volume e per richiamare Alexa in qualunque momento. Il codice che li gestisce non è fornito da Amazon;
- procedura di autenticazione: come dicevamo sopra, ogni prodotto installato in casa deve essere autenticato dall’utente sul proprio account Amazon. L’autenticazione avviene inserendo un codice generato dal dispositivo in una pagina dedicata del sito di Amazon. Se il vostro prodotto ha un qualche tipo di display, potete usarlo per visualizzare il codice, altrimenti dovrete sviluppare una companion app.
Suggerimenti
Ci sono tante cose che ho imparato durante lo sviluppo del nostro prodotto, ma cercherò di essere breve e selezionare i suggerimenti che incidono maggiormente durante lo sviluppo.
La piattaforma di riferimento di Amazon per i device embedded che integrano Alexa è una Raspberry; qualunque bug o problema che riportiamo deve verificarsi anche su Raspberry, altrimenti le chance di avere supporto sono molto basse. Vi suggerisco quindi di avere sempre un setup di riferimento funzionante, con il codice senza modifiche degli SDK di Alexa, aggiornato all’ultima versione.
Tenete presente che il repository di Alexa è gestito in modalità code drop, per cui avanzare di versione significa fare un merge manuale. Vi suggerisco di limitare al massimo le modifiche ai file di Alexa, spostando tutto il vostro codice in file diversi in modo da rendere più facili i merge.
Infine, abbiamo scoperto che gli AQT in inglese sono molto più pressanti rispetto a quelli in italiano, per cui vi suggerisco di usarli sin da subito in inglese per stressare il vostro prodotto al massimo prima di mandarlo in certificazione.
Conclusioni
Creare un prodotto che integra Alexa non è una cosa semplice e richiede una buona dose di pazienza e pianificazione. Dovrete sviluppare sia la vostra user experience che l’integrazione con la libreria di Alexa, sempre tenendo a mente i termini di utilizzo e le date dei test di certificazione. Vi sarà immensamente d’aiuto avere una postazione fissa con i test AQT e una postazione con la piattaforma di riferimento. Vi garantisco però che il risultato ne sarà valsa la pena!
Vuoi integrare Alexa nel tuo prodotto?
Richiedi una nostra consulenza