¿Tiene Siri una API?

Apple lanzó una API para Siri en iOS 10. Se llama SiriKit. Craig Federighi presentó SiriKit en la WWDC 2016. Salta al minuto 55 de la Keynote de 2016 para ver la introducción.

main-qimg-b8c9a56eaf9e76b852661c7d241cc9de.webp

Para un anuncio tan esperado se dedica un tiempo sorprendentemente corto a SiriKit. Apenas recibe dos minutos.

Para iOS 10 sólo se permiten seis tipos de peticiones (denominadas dominios):

Reserva de viajes: «Consígueme un viaje a SFO a través de Uber». Solicita un viaje a través de apps que ofrecen servicios de transporte compartido y otros similares a los de taxi.

Mensajería: «Envía un mensaje a Joanna usando WhatsApp». Enviar mensajes de texto a través de apps que admitan servicios de mensajería.

Búsqueda de fotos: «Buscar fotos de la playa tomadas el verano pasado en Instagram». Buscar fotos y vídeos de determinado tipo de contenido y reproducir presentaciones en la app que elijan.

Pagos: «Envía 100 dólares a Juan por la cena de anoche usando Venmo». Enviar y solicitar pagos a y de otras personas, usando apps que soporten pagos personales.

Llamadas VoIP: «Llamar a Pedro por Skype». Iniciar videollamadas y llamadas de audio con apps que soportan voz sobre IP.

Ejercicios: «Empezar mi entrenamiento diario para correr con Runkeeper». Inicia, pausa y finaliza los entrenamientos con tu app de entrenamiento favorita.

Climatización y radio de CarPlay: «Poner la calefacción a 72 grados». Diseñada específicamente para las apps de los fabricantes de automóviles, permite a los usuarios configurar los controles de climatización y ajustar la radio mientras están en su coche.

En futuras versiones se añadirán más dominios. Craig Federighi habló con John Gruber después de la WWDC sobre la elección de los dominios en un episodio en directo de The Talk Show. Dijo que los dominios fueron elegidos porque son áreas en las que Apple tiene experiencia y está familiarizada.

SiriKit está programado usando «Intentos» que representan una acción particular que el usuario quiere que se haga. Cada dominio tiene varios intents asociados. Cada intent tiene propiedades que son opcionales o necesarias. La intención «enviar pago» tiene propiedades para el beneficiario, la cantidad de moneda, el método de pago y una nota. SiriKit le ofrece la posibilidad de aclarar las propiedades (por ejemplo, si pide «llamar a Samantha» pero hay dos Samanthas en su agenda). Puede haber varias idas y venidas mientras la extensión de SiriKit intenta obtener toda la información que necesita para cumplir la intención del usuario. Cuando la extensión tiene éxito o no en la realización de la intención, envía una respuesta de vuelta a Siri para que Siri pueda informar al usuario sobre el resultado.

Puede crear una interfaz personalizada que Siri mostrará utilizando la interfaz de usuario de Intents, que envía un controlador de vista creado por su aplicación a Siri.

Todo funciona a través de Extensiones (la misma tecnología que los widgets de Today) por lo que la aplicación principal nunca se invoca. Esto requiere que el programador separe el código común en un framework que tanto la app principal como la extensión de SiriKit puedan usar (por ejemplo el código que hace el trabajo de enviar un mensaje).

Apple tiene una buena guía sobre SiriKit y el framework de Intents.

La mayoría de la gente que ve la lista de dominios comenta que es una bolsa muy mezclada sin lógica en las elecciones. Por qué no listas de tareas, con las que Apple también tiene experiencia? Por qué no la búsqueda general de aplicaciones, que es fácil de modelar? ¿Por qué no hay mapas? Creo que los dominios elegidos sólo están disponibles para las grandes empresas establecidas. Los ejemplos que da Craig Federighi son Slack, WhatsApp, WeChat, Uber, Lyft, Didi, EyeEm, Shutterfly, Pinterest, MapMyRun, Runtastic, Runkeeper, SquareCash, AliPay y Vonage. Creo que esto es para que Apple pueda hacer un despliegue limitado y controlado, y limar cualquier problema antes de abrir dominios que puedan utilizar los desarrolladores más pequeños.

Unos meses antes de que saliera SiriKit, escribí un artículo sobre cómo pensaba que se desplegaría la API de Siri, argumentando que la búsqueda sería la primera etapa, seguida de un conjunto limitado de acciones clave. Mucho de lo que escribí estaba equivocado, atribuyendo más magia a Siri sobre cómo entendería los comandos. En realidad, SiriKit es muy rígido en cuanto a las intenciones que permite, pero permisivo en cuanto a las formas en que el usuario puede expresar esas intenciones.

Las aplicaciones que utilizan SiriKit estarán disponibles para el público en general cuando iOS 10 se lance en otoño de 2016. Si tienes una cuenta de desarrollador, puedes probarlo ahora descargando UnicornChat desde el sitio de documentación para desarrolladores de Apple y obtener más información viendo la sesión 217 de la WWDC 2016: Presentando SiriKit y Sesión 225: Extendiendo tus aplicaciones con SiriKit.