Alexa Voice Design Patterns

Stop using trees, start designing for situations

Siamo abituati a siti web, applicazioni che hanno un limite fisico come la larghezza dello schermo, la lunghezza della pagina, il numero di pulsanti che possiamo premere e così via. Stiamo a nostro agio con queste limitazioni e elementi grafici (UI elements) che ci guidano nell’interazione. Infatti quando iniziamo a progettare una skill per Alexa siamo tentati da subito di utilizzare un albero decisionale (graph-based) per creare percorsi che mappino il flusso della conversazione, creando inavvertitamente dei vicoli ciechi. Dobbiamo invece considerare che le conversazioni degli utenti sono non-lineari.

Prenotiamo un viaggio aereo

Se voglio prenotare un biglietto aereo per Bogotà (Colombia) sul sito Web di Air France, sono costretto a seguire il flusso logico delle informazioni che mi vengono richieste dall’interfaccia grafica (GUI):

In una Vocal User Interface (VUI) la sfida più grande è riuscire ad estrarre tutte le infomazioni pertitenti dalla voce dell’utente, ad esempio potrei chiedere con un solo comando vocale:

La NLU (natural language processing) di Alexa dev’essere in grado di  estrarre intents ed entities al fine di poter sfruttare le API di prenotazione dei voli esistenti. Partendo da un dominio come prenotazione volo possiamo abbozzare una annotazione linguistica delle utterances che potremmo utilizzare per fare il training di un interaction model:

Le interazioni vocali sono end to end quindi sarà compito della VUI estrarre dalla voce le informazioni e integrarle, se presente, con quelle visive dello schermo nel caso di uno device come l’echo Show 5.  È possibile utilizzare lo schermo per visualizzare la conferma visiva di una scelta compiuta dall’utente, ad esempio i dati della prenotazione del volo.

In una VUI una struttura ad albero non funziona perché crea vicoli ciechi che limitano la libertà dell’utente di saltare da una situazione all’altra.

Situational Design

Il Situational design, termine coniato dall’interacton designer Paul Cautsinger, come metodologia di programmazione card-based consente di liberarsi dell’albero decisionale e di progettare avendo in mente le situazioni e le interazioni vocali.

Per progettare una conversazione più naturale e incentrata sull’utente dobbiamo prima comprendere i principi del situational design:

[1] Be adaptable
[2] Be personal
[3] Be available
[4] Be relatable

Il primo principio be adaptable ci ricorda che dobbiamo consentire ai nostri utenti di parlare con Alexa con le proprie parole fornendo diversi esempi per la stessa signature (es: bookTravel), magari adoperando sinonimi (es: viaggio, vacanza, etc) e slots.

Be personal significa dare un tono di voce alla nostra VUI personalizzando l’interazione vocale con l’utente.  Ad esempio quando utilizziamo una skill veniamo accolti da un messaggio di benvenuto (Welcome Message) che ci chiede che cosa vogliamo fare.  Per migliorare la user experience (UX) potremmo utilizzare:

che suona davvero molto meglio del solo:

Progettare l’interazione vocale come il menu principale (top-level UI) di una GUI , con una struttura ad albero (es:menu, sub-menu,etc) , non aiuta l’utente perché lo vincola nelle sue decisioni e aggiunge il carico cognitivo di dover imparare come è organizzata la navigazione. Infatti Be available significa che dobbiamo comprimere i menu rendendo tutte le opzioni di alto livello. Infine be relatable, dobbiamo parlare con il nostro utente evitando richieste generiche e confuse in modo che possa comprendere che cosa può dire in modo da spostare al passo successivo l’ interazione.
Dobbiamo quindi evitare interazioni di questo tipo:

Gli utenti senza un chiaro invito all’azione (CTA, Call to Action) saranno confusi e certamente non utilizzeranno più la skill.

Sitografia

[1] Justin Jeffress, Getting Started with the Cake Walk Course: Designing the Voice User Interface (VUI) for Your Alexa Skill, 04/06/2019