Con il capitolo numero 14 della rubrica WWDC16 in Pillole arriviamo finalmente ad uno degli argomenti più interessanti, una innovazione ormai entrata a pieno titolo nel processo di sviluppo di app: il SiriKit

***

Quante volte ci siamo divertiti ad utilizzare Siri per chiedere le cose più incomprensibili – “Antani come se fosse Antani” – oppure un banale “Come stai? e attendere con impazienza la reazione della “signorina”.

E quante volte abbiamo pensato “…se avessi modo di usarlo quanto mi piacerebbe ed integrarlo nella mia app”. È giunto il momento perché… SI PUÒ FAREEEEE!

14.1 Hey Siri, saluta le nostre app!

Con il WWDC 2016 finalmente hanno presentato le nuove API di Siri, integrate nel framework SiriKit. Ma chi è Siri? Siri è il tuo assistente virtuale, sempre pronto ad aiutarti. Con lui (o lei) non mancano le informazioni, e neanche un pizzico di humor.

Come possiamo integrare Siri nella nostra app?

Apple, nel WWDC, ha fatto un esempio per capire quali sono le potenzialità di SiriKit. L’esempio è UnicornChat, la chat dell’unicorno per chattare con chi vuoi…che ovviamente non esiste!

Poniamo ad esempio questa conversazione fatta con Siri per utilizzare UnicornChat:

Anche una conversazione più smart potrebbe andare bene, semplicemente chiedendo a Siri di utilizzare UnicornChat, come segue:

Sicuramente integrare Siri nelle nostre app aumenta la qualità del prodotto finale, per non parlare dell’aiuto che si dà ai nostri utenti per aprire e interagire con l’app semplicemente chiedendolo a Siri.

Ma qual è il processo che sta alla base di SiriKit quando lo integriamo?

Siri, per poter funzionare, segue quattro passi fondamentali per arrivare dalla voce al risultato da fornire:

  • SPEECH. La prima cosa che Siri fa è capire cosa stai dicendo, quindi trasforma l’audio in testo.
  • INTENT. Il testo proveniente dalla nostra voce viene poi riformulato in una rappresentazione strutturata, cioè in qualcosa che Apple definisce Intent: banalmente, ciò che l’utente ha intenzione di chiedere.
  • ACTION. Basandosi sull’intent, quindi sull’intenzione, Siri percepisce l’azione da effettuare per risolvere la richiesta arrivata dalla voce dell’utente.
  • RESPONSE. Siri traduce l’azione più consona alla richiesta in una risposta che può essere sia visuale che verbale.


Sembra semplice, ma c’è tanto lavoro e molto sudore e sangue degli sviluppatori Apple dietro ognuno di questi passi. Tu i sacrifici finalmente sono ora disponibili anche per noi comuni iOS Developer mortali. Tante tecnologie dietro che auto-imparano i comportamenti e reti neurali che noi per fortuna non dobbiamo implementare (!) ma chiaramente per poterle utilizzare occorre che noi implementiamo qualcosa.


Le cose fondamentali da implementare per integrare SiriKit nelle nostre app sono due: 


  • Il VOCABOLARIO, ossia tutte le parole che si possono dire a Siri per farle riconoscere alla nostra app, tutte le parole di cui Siri ha bisogno per recepire le istruzioni per noi. Grazie a queste noi contribuiremo ai primi due step che Siri deve seguire, e cioè SPEECH e INTENT.
  • La LOGICA, ossia le funzionalità della nostra app che vengono richieste tramite Siri. Se si chiede a Siri di inviare un messaggio di testo e dietro non c’è l’app che chiama per poter inviare il messaggio, l’integrazione a Siri non servirà a nulla.
  • La USER INTERFACE: non c’è app senza user interface su cui Siri possa re-dirigere l’utente quando richiede di usare la nostra app.

Cerchiamo di capire bene come funziona. Riprendiamo l’esempio della chat dell’unicorno e associamo le parti che dobbiamo implementare:
VOCABOLARIO

Quando diciamo a Siri “Hey Siri, puoi mandare un UnicornChat a Claudia”, abbiamo la parte variabile che è “Claudia” e il messaggio standard che si può richiedere alla nostra app tramite Siri, e cioè di inviare un messaggio.

Claudia riempie il cosiddetto Recipient, cioè il recipiente dove inserire la parte variabile del messaggio, che in questo caso è il destinatario del messaggio. A questo punto Siri capisce che occorre inviare un messaggio ad un elemento definito nel Recipient, ma manca un’informazione: cosa inviare? Manca cioè il Content, il contenuto.

Dall’esempio precedente di UnicornChat, il contenuto sarà “Ciao Claudia sto arrivando”.

LOGICA e USER INTERFACE

La logica sarà ad esempio l’API REST da popolare con Recipient e Content per poter inviare il messaggio e la user interface la UIView che rappresenta graficamente il nostro fumetto nella chat privata con Claudia.

14.2 Come parlare la lingua di Siri

Per poter utilizzare SiriKit occorre capire i meccanismi che ci sono dietro – e soprattutto come parlare la lingua di Siri per poter comunicare con lui.

Prima di tutto occorre capire come SiriKit si esprime parlando del mondo in generale.
Siri pensa tutto sotto forma di domini. Divide le cose e gli argomenti in domini. Detto in parole povere, divide tutto in categorie di cose.

Un esempio possono essere: mandare un messaggio, fare una chiamata, inviare pagamenti in denaro. Questi sono tre domini differenti e cioè messaggistica, telefonata e pagamento.

INTENT

I domini vengono associati a degli INTENT. Senza dominio, non abbiamo un’intenzione a fare qualcosa. I domini sono degli intent che sono associabili ad azioni che Siri può capire e che può comunicare alla nostra applicazione. Se viene interpellato il dominio “messaggistica” nel messaggio vocale “voglio inviare un messaggio…”, chiaramente l’intenzione è quella di scrivere qualcosa a qualcuno, dunque l’app può recepirla e da essa ed effettuare l’azione.

Poniamo esista, ad esempio, l’app (finta anche questa) per effettuare pagamenti mobile che si chiama UnicornPay. Possiamo a chiedere a Siri: “Hey Siri, invia a Gino 25 euro con UnicornPay”.

Con questo messaggio Siri percepisce che il dominio di appartenenza del contenuto richiesto è l’intenzione di effettuare un pagamento, perché è stato richiesto il trasferimento di denaro con l’app UnicornPay.

Siri capisce inoltre quanto vuoi inviare, perché capisce dal tuo messaggio che sono 25€. Capisce anche che è richiesta l’azione di inviare i 25 euro a Gino. Abbiamo già detto che una Intent è collegata ad una azione. Ovviamente ogni intent, e quindi ogni azione, può avere da zero a molti parametri in input, utili per effettuare l’azione. Nell’esempio dell’app di pagamento abbiamo il contenuto “25 euro” e il recipient “Gino”.

Questa è la lingua che capisce Siri: bisogna definire un dominio da cui partire per poter associare un Intent e quindi un’azione che porta a dei risultati in output (la Intent response).

INTENT RESPONSE

È importante non solo la richiesta ma anche la risposta, altrimenti Siri come fa a capirci? Bisogna parlare la sua lingua per fargli effettuare le azioni di cui disponiamo nelle nostre app. Bisogna comunicare quindi con un output ben preciso in risposta ad un intent, con dei codici ben definiti per ogni dominio che Siri conosce.

Quando Siri riesce a formulare una risposta a partire da una domanda (di cui si capisce bene qual è il dominio e l’intent) questa viene tradotta in un oggetto di tipo NSUserActivity (già visto nelle API di SearchKit nell’articolo precedente).

La NSUserActivity viene utilizzata da Siri per lanciare la nostra applicazione, esattamente come accade per SearchKit. Di default, Siri riesce a generare una sua NSUserActivity associata ad un intent, traducendolo tra i domini di cui è consapevole.

Cosa dobbiamo fare?

  1. Dobbiamo riuscire ad implementare la logica in modo che riesca a recepire bene gli INTENT. Ogni parametro che viene passato tramite l’intent deve essere ben gestito.
  2. Dobbiamo essere sicuri di recepire l’intent e di dare una risposta a Siri.
  3. Dobbiamo effettuare la logica associata all’intent (la famosa API Rest dell’esempio di 
UnicornChat che invia il messaggio a Claudia o il trasferimento effettivo di denaro a Gino tramite UnicornPay).

Il passo più importante per aiutare Siri ad usare la nostra app è sicuramente capire cosa l’utente ha detto, ma soprattutto dare un significato a cosa dice l’utente quando richiede una certa azione alla nostra applicazione. Nell’ordine di dover soddisfare questa richiesta ovviamente poi si deve dare anche una soluzione in risposta all’utente.

Nelle prossime puntate continueremo a svelare tutti segreti di Siri. Alla prossima!

***

Per consultare la guida completa seguite il link (raccolta articoli completa).

Per ricevere l’intero ebook compila il seguente modulo con il tuo indirizzo mail!








NO COMMENTS

LEAVE A REPLY