48: SiriKit, part 1

Les liens

SiriKit

SiriKit dans iOS 10.

On sait déjà que SiriKit propose 6 domaines d'interactions.
Avec un peu de chance, Apple proposera d'autres domaines d'ici à la sortie de l'iPhone 7. Pour rappel, ces 6 domaines sont:

  • la réservation de trajet (3 intentions)
  • l'envoi de messages (3 intentions)
  • la recherche de photos (3 intentions)
  • les transactions monétaires (2 intentions)
  • les conversations en VoIP (3 intentions)
  • les exercices physiques (5 intentions)

Il existe deux autres domainest, restreints à des usages bien spécifiques:

  • la réservations de restaurant lorsqu'on est dans l'application Maps (5 intentions)
  • la modifications de réglages dans la voiture (quand l'iPhone est en mode Carplay) (7 intentions)

Flow

D'un point de vue haut niveau, le flow est le suivant:

  • l'utilisatrice demande à Siri de réaliser une action
  • Siri traduit les paroles de l'utilisateur en Intention
  • Si votre application est concernée par cette intention, Siri appelera votre code
  • Vous répondrez à Siri de façon à ce qu'elle puisse informer l'utilisatrice du résultat de l'action.

L'avantage le plus important est que Siri faisant la traduction des paroles vers l'intention, vous n'avez pas à vous souciez de la langue de l'utilisatrice.

Technique

Et techniquement, comment ça marche Jamie ?
Bien évidemment, il faut créer une extension qui contiendra le code appelé par iOS, mais ce n'est pas tout:

  • dans le fichier Info.plist de votre application, il vous faudra déclarer toutes les "intentions"
  • au lancement de votre application, demander toutes les autorisations nécessaires pour le code de votre extension Siri.
  • il y a une nouvelle autorisation, celle d'utiliser Siri, qui fonctionne de la même façon que la demande de géoloc, c'est-à-dire avec l'affichage d'un message explicatif

Résolution

La grande question est : une fois que la question est posée, que l'intention est calculée, que l'extension est appelée, que se passe-t-il ?

La documentation d'Apple divise ce travail en deux étapes:

  • valider les paramètres de l'intention
  • traiter l'intention

La première étape est de faire savoir à Siri si l'intention est complète et traitable. Si l'intention est de réserver une course de taxi mais que votre application/service ne gère pas l'endroit où se trouve l'utilisateur, il est indispensable de le faire savoir à l'utilisatrice via Siri.

Il y a donc plusieurs résultats possibles à la validation des paramètre d'une intention:

  • tout est OK
  • un paramètre est superflu (fixer un but pour un exercice physique)
  • un paramètre est ambigu (envoyer un message à une personne: chosir entre deux contacts)
  • un paramètre nécessite une confirmation (appeler un contact)
  • un paramètre nécessite des précisions (appeler un contact)
  • un paramètre est manquant (rembourser qqun sans préciser le montant)
  • un paramètre n'est pas pris en charge (trajet en taxi dans un endroit non couvert par le service)

Vocabulaire

Mais comment indiquer à Siri que les paroles de l'utilisatrice concernent notre application ?
Tout simplement en indiquant à Siri un vocabulaire particulier. Et là encore, deux cas:

  • un vocabulaire général, décrit dans le fichier AppIntentVocabulary.plist
  • un vocabulaire spécifique à l'utilisateur, stocké via le singleton INVocabulary.sharedVocabulary

Un vocabulaire est une association entre un ensemble de mot et des concepts.
Apple explique précisément en quoi consiste ces concepts.

Pour le vocabulaire général, il s'agit:

  • de noms d'exercices physiques ou
  • d'options pour la réservations de trajet

Pour le vocabulaire spécifique, il s'agit:

  • de noms de contacts
  • de tags de photos
  • de noms d'album photos ou
  • de noms d'exercices physiques

Le vocabulaire spécifique, via le singleton, est une simple définition clé-valeur.
Le vocabulaire général, définie dans un plist, est un peu plus intéressant car il permet, en plus des clés-valeurs, de définir des synonymes et des phrases d'exemples.

Je vous garde la création d'UI customisé pour la semaine prochaine.

A vot' bon cœur m'sieur-dame

Le lien du podcast sur iTunes