Share via


Descripción de los conceptos de SiriKit

En este artículo se describen los conceptos clave necesarios para trabajar con SiriKit en una aplicación Xamarin.iOS.

Novedad de iOS 10, SiriKit permite que una aplicación Xamarin.iOS proporcione servicios accesibles para el usuario mediante Siri y la aplicación Maps en un dispositivo iOS. Esta funcionalidad se proporciona en una o varias extensiones de aplicación con los nuevos marcos de Intenciones y UI de intenciones.

SiriKit permite que una aplicación iOS proporcione servicios accesibles para el usuario mediante Siri y la aplicación Maps en un dispositivo iOS mediante extensiones de aplicación y los nuevos marcos de Intenciones y UI de intenciones.

Siri trabaja con el concepto de Dominios, grupos de acciones conocidas para tareas relacionadas. Cada interacción de la aplicación con Siri debe incluirse en uno de sus dominios de servicio de la siguiente manera:

  • Llamadas de audio o vídeo.
  • Reservar un viaje.
  • Administrar entrenamientos.
  • Mensajería.
  • Buscar fotos.
  • Enviar o recibir pagos.

Cuando el usuario realiza una solicitud de Siri que implica uno de los servicios de la extensión de aplicación, SiriKit envía a la extensión un objeto Intent que describe la solicitud del usuario junto con los datos auxiliares. A continuación, la extensión de aplicación genera el objeto Response adecuado para el Intent dado, que detalla cómo la extensión puede controlar la solicitud.

Extensiones Intenciones y UI de intenciones

Tanto Siri como la aplicación Maps interactúan con los servicios de la aplicación a través de dos tipos diferentes de extensiones de aplicación:

  • Extensión Intenciones: proporciona a Siri y Maps el contenido de la aplicación y realiza las tareas necesarias para cumplir las intenciones admitidas.
  • Extensión UI de intenciones: proporciona una interfaz de usuario personalizada que se mostrará para el contenido de la aplicación dentro de Siri o Maps.

La aplicación debe proporcionar una extensión Intenciones para admitir SiriKit y es responsable de proporcionar información que Siri y Mapas pueden presentar al usuario y de controlar Intenciones.

La creación de una extensión UI de intenciones es opcional, ya que Siri normalmente controla toda la interacción del usuario y tiene una interfaz de usuario integrada estándar para presentar información en cada uno de los dominios admitidos. Al proporcionar una extensión UI de intenciones, la aplicación puede usar el marco de UI de intenciones para presentar una interfaz de usuario completa y personalizada con la personalización de marca y la información adicional de la aplicación.

Siri y el rol de aplicación Maps

Siri procesa las solicitudes habladas del usuario según el idioma y las analiza semánticamente, convirtiéndolas en Intenciones accionables que las extensiones Intenciones pueden controlar.

Maps usa las extensiones Intenciones de la aplicación para mostrar información en la interfaz de Maps en respuesta a las acciones del usuario. Por ejemplo, solicitar restaurantes cercanos u obtener las opiniones sobre restaurantes de la aplicación.

Tanto Siri como Maps administran todas las interacciones del usuario y muestran los resultados mediante la interfaz del sistema estándar. El rol de extensiones de aplicación sirve principalmente para proporcionar los datos que se muestran. Opcionalmente, la aplicación puede proporcionar una extensión UI de intenciones y presentar una interfaz de usuario personalizada para mejorar la interfaz del sistema predeterminada.

Interacción con Siri a través de SiriKit

En esta sección se presentará información general sobre cómo SiriKit permite al usuario interactuar con la aplicación mediante Siri. Para este ejemplo, usaremos la aplicación MonkeyChat falsa:

Icono de MonkeyChat

MonkeyChat mantiene su propio libro de contactos de los amigos del usuario, cada uno asociado a un nombre de pantalla (como Bobo, por ejemplo), y permite al usuario enviar chats de texto a cada amigo por su nombre de pantalla.

Hay muchas formas en que el usuario puede iniciar una interacción con la aplicación, ya que diferentes personas pueden realizar la misma solicitud de muchas maneras distintas.

Por ejemplo, si el usuario quisiera enviar un mensaje a su amigo Bobo, podrían tener la siguiente conversación con Siri:

Usuario: Oye Siri, envía un mensaje de MonkeyChat.
Siri: ¿A quién?
Usuario: Bobo.
Siri: ¿Qué quieres decir a Bobo?
Usuario: Envía más plátanos.

Otra persona podría realizar la misma solicitud con una conversación diferente:

Usuario: Envía un mensaje a Bobo en MonkeyChat.
Siri: ¿Qué quieres decir a Bobo?
Usuario: Envía más plátanos.

Y otro usuario podría realizar una solicitud aún más corta:

Usuario: Bobo de MonkeyChat, envía más plátanos.
Siri: De acuerdo, enviando el mensaje "envía más plátanos" a Bobo en MonkeyChat.

O incluso realizar la misma solicitud en otro idioma:

Usuario: MonkeyChat Bobo s’il vous plaît envoyer plus de bananes.
Siri: Oui, envoi message s’il vous plaît envoyer plus de bananes à Bobo sur Monkeychat.

Otro usuario más podría utilizar demasiada información en su conversación:

Usuario: Oye Siri, ¿puedes hacerme un favor e iniciar la aplicación MonkeyChat para enviar un mensaje de texto que diga "envía más plátanos"?
Siri: ¿A quién?
Usuario: Mi mejor amigo, Bobo.

Además, hay muchas maneras en que Siri podría responder a una solicitud, algunas en función de cómo se realizó la solicitud:

  • Mantener presionado el botón Inicio: Siri proporcionará respuestas más visuales con comentarios verbales limitados.
  • Decir"Oye Siri": Siri será más verbal y proporcionará menos respuestas visuales.

Siri también está diseñada para satisfacer las necesidades de accesibilidad del usuario e interactuará y responderá en función de esas necesidades.

Independientemente de cómo se realiza una solicitud o cómo responde Siri a esta, Siri controla la conversación con el usuario y la aplicación (a través de sus extensiones) proporciona la funcionalidad.

Cuando el usuario realice una solicitud verbal de Siri, estos son los pasos que Siri seguirá:

Los pasos que Siri seguirá

  1. En primer lugar, Siri toma el audio de la Voz del usuario y lo convierte en texto.
  2. A continuación, el texto se convierte en una Intención, una representación estructurada de la solicitud del usuario.
  3. En función de la Intención, Siri llevará a cabo una Acción para realizar la solicitud del usuario.
  4. Por último, Siri presentará Respuestas (tanto visuales como verbales) al usuario en función de la Acción realizada.

Hay tres formas principales en que la aplicación puede participar en la conversación del usuario con Siri:

Las tres formas principales en que la aplicación puede participar en la conversación del usuario con Siri

  1. Vocabulario: así es como la aplicación le indica a Siri las palabras que necesita saber para interactuar con ella.
  2. Lógica de aplicaciones: estas son las acciones y respuestas que tomará la aplicación en función de las Intenciones especificadas.
  3. Interfaz de usuario: esta es la interfaz de usuario personalizada opcional en la que la aplicación puede proporcionar sus respuestas.

Ejemplo

Dada la información anterior, examine cómo interactuaría la siguiente conversación con la aplicación MonkeyChat:

Usuario: Oye Siri, envía un mensaje a Bobo en MonkeyChat.
Siri: ¿Qué quieres decir a Bobo?
Usuario: Envía más plátanos.

El primer rol que adopta la aplicación en la conversación es ayudar a Siri a comprender la voz del usuario:

Ayudar a Siri a comprender la voz de los usuarios

Siri no tiene el nombre "Bobo" en su base de datos, pero la aplicación sí y ha compartido esta información con Siri a través de su Vocabulario. La aplicación también ayuda a Siri a reconocer que Bobo es un destinatario, ya que los especificó a Siri como Contacto.

Siri sabe que para enviar un mensaje se requiere más que solo un destinatario, de modo que consultará rápidamente con la extensión de aplicación si un mensaje requiere contenido. Puesto que MonkeyChat lo hace, Siri responderá al usuario con la pregunta: "¿Qué quieres decir a Bobo?"

En el ejemplo anterior, el usuario ha respondido: "Envía más plátanos",, que Siri agrupará en una Intención estructurada:

Siri agrupará la respuesta del usuario en una intención estructurada

La intención estructurada contendrá la siguiente información:

  • Dominio: Mensajes
  • Intención: sendMessage
  • Destinatario: Bobo
  • Contenido: Envía más plátanos

Cada Dominio tiene un conjunto de Acciones conocidas que se pueden realizar dentro de ellos y, en función del Dominio y la Acción, la intención enviada a la aplicación podría contener desde ningún parámetro hasta muchos parámetros.

A continuación, la Intención se envía a la extensión de aplicación para su procesamiento. Como resultado del procesamiento de la Intención, la aplicación generará una IntentResponse que se agrupará con la Intención e incluirá parámetros que describen lo que ha hecho la aplicación con la Intención.

Cada IntentResponse también incluirá un Código de respuesta que indica a Siri si la aplicación ha podido completar la solicitud o no. Algunos Dominios tienen códigos de respuesta de error muy específicos que también se pueden enviar.

Por último, IntentResponse incluirá una instancia de NSUserActivity (como las que se usan para admitir Handoff). NSUserActivity se usará para iniciar la aplicación si la respuesta requiere que dejen el entorno de Siri y escriban la aplicación para completarla.

Siri creará automáticamente una instancia de NSUserActivity adecuada para iniciar la aplicación y continuar donde el usuario la dejó en el entorno de Siri. Sin embargo, la aplicación puede proporcionar su propia instancia de NSUserActivity con información personalizada, en caso necesario.

Una vez que la aplicación haya procesado la Intención y devuelto una respuesta a Siri, presentará los resultados al usuario (tanto verbal como visualmente):

Los resultados presentados al usuario tanto verbal como visualmente

Siri tiene varias interfaces de usuario de respuesta integradas para cada uno de los dominios disponibles para la aplicación. Sin embargo, dado que MonkeyChat ha proporcionado una extensión UI de intenciones opcional, se usa para presentar los resultados de la conversación al usuario en el ejemplo anterior.

Ciclo de vida de la Intención

Hay tres tareas principales que tendrá que realizar la extensión de aplicación al tratar con Intenciones:

Ciclo de vida de la Intención

  1. La aplicación debe Resolver todos los parámetros de un evento. Como resultado, la aplicación llamará a Resolve varias veces (una vez por cada parámetro) y, en ocasiones, varias veces en el mismo parámetro hasta que la aplicación y el usuario acepten lo que se solicita.
  2. La aplicación debe Confirmar que puede controlar la intención solicitada e informar a Siri sobre el resultado previsto.
  3. Por último, la aplicación debe Controlar la intención y realizar los pasos para lograr el resultado solicitado.

Fase de resolución

La fase de resolución ayuda a Siri a comprender los valores proporcionados por el usuario y garantiza que lo que el usuario quiso decir en realidad es lo que ocurrirá cuando la aplicación procese la Intención.

Esta fase también ofrece una oportunidad para que la aplicación influya en el comportamiento de Siri durante la conversación con el usuario. Para ello, la aplicación proporcionará una Respuesta de resolución. Hay una serie de respuestas predefinidas a los diferentes tipos de datos que Siri entiende.

La respuesta de resolución más común de la aplicación será Correcto, lo que significa que la aplicación comparó el fragmento de datos específico de un parámetro (como el nombre de pantalla de usuario) con un fragmento de información que conoce.

Es posible que haya ocasiones en las que la aplicación necesite confirmar que una solicitud determinada coincide con el fragmento de información correcto que conoce. En estos casos, enviará una respuesta ConfirmationRequired para formular una pregunta cuya respuesta es sí o no al usuario como "¿Enviar mensaje a Bobo el Grande?"

Puede haber otros casos en los que la aplicación requerirá que el usuario elija a partir de una breve lista de opciones. En este caso, la aplicación proporcionará una respuesta de desambiguación con una lista de dos a diez opciones para que el usuario elija entre ellas, por ejemplo:

Who do you want to message?

* Bobo the Great
* Bobo Jr.
* Little Bobo

Siri controlará al usuario que realiza la selección, ya sea verbalmente o interactuando con la interfaz de usuario de Siri, y el resultado se devolverá a la aplicación.

En otros casos, es posible que no haya suficiente información para que la aplicación resuelva el parámetro o puede que haya demasiadas coincidencias para resolver mediante la desambiguación (por ejemplo, 80 usuarios en cuyo nombre aparece Bobo). En estos casos, la aplicación enviará una respuesta NeedsMoreDetails y Siri pedirá al usuario que sea más específico.

Si el usuario no proporcionó un valor necesario para procesar la Intención, puede enviar una respuesta NeedsValue para que Siri solicite el valor al usuario.

Si la aplicación no admite un valor que el usuario ha proporcionado para un parámetro específico, puede enviar la respuesta UnsupportedWithReason para proporcionar un motivo por el que no se admitió el valor. A continuación, Siri solicitará al usuario un valor completamente nuevo y le explicará por qué es necesario.

Por último, use la respuesta NotRequired para indicar a Siri que la aplicación no requiere un valor para un parámetro determinado. Si el usuario proporciona uno de todos modos, Siri simplemente lo omitirá.

Fase de confirmación

La fase de confirmación tiene dos propósitos:

  • Indicar a Siri el resultado previsto de controlar una Intención para que pueda informar al usuario sobre lo que va a suceder.
  • Brinda la oportunidad de comprobar los estados necesarios que la aplicación podría requerir para completar la solicitud presentada por el usuario, como tener suficiente dinero en el banco para realizar el pago solicitado.

La aplicación proporcionará una Respuesta de intención del paso de confirmación, que debe rellenarse con la mayor cantidad posible de la información disponible en la aplicación para que Siri pueda comunicarla de forma eficaz con el usuario.

Según el tipo de Dominio y Acción, Siri puede solicitar confirmación al usuario, como antes de enviar un pago o reservar un viaje.

Fase de control

La fase de control es la parte más importante de trabajar con una Intención porque es cuando la aplicación cumple la solicitud del usuario mediante la realización de la tarea que se le ha pedido que haga.

Al igual que hizo en la fase de confirmación, la aplicación debe proporcionar tanta información sobre el resultado como sea posible para que Siri pueda relacionarlo con el usuario. A veces, esta información se presentará visualmente, mientras que otras veces Siri simplemente hablará al usuario.

Puede haber ocasiones en las que la aplicación requiera tiempo adicional para procesar una solicitud determinada, como retrasos en las llamadas de red o si una persona activa necesita cumplir la solicitud (como completar y enviar un pedido o conducir un automóvil hasta la ubicación del usuario). Cuando Siri espera una respuesta de la aplicación, muestra una interfaz de usuario en espera al usuario que le indica que la aplicación está procesando la solicitud.

Idealmente, la aplicación debe proporcionar una respuesta a Siri en dos o tres segundos como máximo. Si la aplicación sabe que una respuesta determinada va a tardar más tiempo en procesarse, debe enviar un código de respuesta InProgress a Siri. A continuación, Siri informará al usuario de que la aplicación está procesando la solicitud en segundo plano y seguirá haciéndolo incluso si este deja el entorno de Siri.

Adición de SiriKit a la aplicación

Con SiriKit en iOS 10, Apple ha creado dos nuevos puntos de extensión:

  • Extensión Intenciones: proporciona a Siri el contenido de la aplicación y realiza las tareas necesarias para cumplir las intenciones admitidas.
  • Extensión UI de intenciones: proporciona una interfaz de usuario personalizada que se mostrará para el contenido de la aplicación dentro de Siri.

También hay una API para proporcionar palabras y frases a Siri para ayudar en el reconocimiento en forma de:

  • Vocabulario de la aplicación: palabras y frases que son comunes a todos los usuarios de la aplicación.
  • Vocabulario de usuario: palabras y frases que son exclusivas de un usuario de la aplicación determinado.

Extensión Intenciones

La extensión Intenciones es responsable de controlar las interacciones principales entre la aplicación y Siri de la siguiente manera:

Extensión Intenciones

La extensión Intenciones puede admitir una o varias intenciones, es el desarrollador quien decide cómo desea implementar SiriKit en la aplicación. El desarrollador también podría agregar una extensión Intenciones independiente para cada intención que sea necesario controlar. Dicho esto, Apple solicita que el desarrollador limite el número de extensiones Intenciones para que Siri no tenga varios procesos abiertos en la aplicación, cuyo control requeriría más memoria y tiempo.

El desarrollador también debe tener en cuenta que la extensión Intenciones se ejecutará en segundo plano mientras Siri está activa. Esto permite a Siri llevar a cabo una conversación con el usuario activamente mientras sigue comunicándose con la extensión para procesar información sobre la solicitud.

Consideraciones sobre privacidad y seguridad

Apple ha tomado excelentes medidas para asegurarse de que la información privada de un usuario está segura al trabajar con Siri y, como tal, existen varias interacciones que requieren que el usuario inicie sesión en el dispositivo iOS. Por ejemplo, al solicitar un viaje o realizar un pago.

Además, hay comportamientos específicos que la aplicación podría querer limitar al usuario que ha iniciado sesión en el dispositivo. En estas situaciones, la aplicación puede solicitar el comportamiento de restricción durante un bloqueo. Esto se hace a través de una configuración en el archivo Info.plist.

El Marco de autenticación local está disponible para la extensión Intenciones de modo que la aplicación pueda pedir al usuario información de autenticación adicional, incluso si el dispositivo ya está desbloqueado.

Por último, Apple Pay está disponible para la extensión Intenciones de modo que la aplicación pueda completar una transacción con Apple Pay y la hoja de Apple Pay integrada aparecerá sobre la interfaz de Siri.

Además, Apple quiere asegurarse de que los usuarios saben cuándo envían información a una aplicación de terceros y, como tal, el usuario debe indicar el nombre específico de la aplicación (como se especifica en el nombre para mostrar del lote de la aplicación) al realizar una solicitud.

Apple ha diseñado Siri para llevar a cabo conversaciones naturales y fluidas con el usuario y, debido a esto, el nombre del lote de la aplicación se puede usar en muchas partes de voz, siempre que encaje de forma natural en la solicitud del usuario.

Una de las cosas comunes que harán los usuarios es "verbificar" el nombre de la aplicación, es decir, tomar el nombre de la aplicación y usarlo como verbo en una solicitud. Por ejemplo, "Bobo de MonkeyChat Bobo, esos plátanos eran excelentes".

Extensión UI de intenciones

La extensión UI de intenciones presenta la oportunidad de incluir la interfaz de usuario y la personalización de marca de la aplicación a la experiencia de Siri y hacer que los usuarios se sientan conectados a la aplicación. Con esta extensión, la aplicación puede incluir la marca, así como información visual y de otro tipo en la transcripción.

Salida de la extensión de interfaz de usuario de intenciones de ejemplo

La extensión UI de intenciones siempre devolverá un UIViewController y la aplicación puede agregar cualquier cosa que le guste dentro del controlador de vista, como mostrar información adicional que va más allá de la respuesta inicial. UI de intenciones también puede actualizar el usuario con el estado de un evento de larga duración, como cuánto tiempo más tardará un automóvil compartido en llegar a su ubicación.

La extensión UI de intenciones siempre se mostrará junto con otro contenido de Siri, como el icono de la aplicación y el nombre en la parte superior de la interfaz de usuario o, en función de la Intención, se pueden mostrar botones (como Enviar o Cancelar) en la parte inferior.

Hay algunas instancias en las que la aplicación puede reemplazar la información que Siri muestra al usuario de forma predeterminada, como mensajería o mapas donde la aplicación puede reemplazar la experiencia predeterminada por una adaptada a la aplicación.

Importante

Aunque es posible agregar elementos interactivos como UIButtons o UITextFields al UIViewControllerde la extensión UI de intenciones, estos están estrictamente prohibidos, ya que UI de intenciones no es interactiva y el usuario no podrá interactuar con ellos.

Es totalmente opcional que la aplicación proporcione una extensión UI de intenciones, ya que Siri contiene un conjunto predeterminado de interfaces de usuario para cada tipo de Intención. Además, las interfaces de UI de intenciones solo están disponibles para determinadas Intenciones que Apple ha considerado que serían útiles para el usuario.

Adición de vocabulario de SiriKit

La última parte de la implementación de SiriKit se encuentra dentro de la aplicación al proporcionar el Vocabulario necesario. Muchas aplicaciones tienen formas únicas de describir la información al usuario y formas únicas en que el usuario proporcionará información a la aplicación.

Por este motivo, Siri requiere la ayuda de la aplicación para comprender las palabras y frases exclusivas de la aplicación. Algunas de estas frases formarán parte de la aplicación para que todos los usuarios las conozcan y comprendan. Sin embargo, otras serán exclusivas de un usuario determinado de la aplicación.

Vocabulario específico de la aplicación

El vocabulario específico de la aplicación define las palabras y frases específicas que conocerán todos los usuarios de la aplicación, como tipos de vehículo o nombres de entrenamiento. Dado que forman parte de la aplicación, se definen en un archivo AppIntentVocabulary.plist como parte del lote de aplicaciones principal. Además, estas palabras y frases deben localizarse.

Un archivo AppIntentVocabulary.plist de Vocabulario consta de varias partes:

  • Usos de la aplicación de ejemplo: estos proporcionan un conjunto de casos de uso comunes para las solicitudes que puede realizar el usuario de la aplicación. Por ejemplo: "Inicia un entrenamiento con MonkeyFit".
  • Parámetros: estos proporcionan un conjunto de tipos de parámetros no estándar específicos de la aplicación. Por ejemplo, nombres de entrenamiento para la aplicación MonkeyFit. Estos constan de:
    • Frase: permite a la aplicación definir términos únicos para la aplicación. Por ejemplo: el tipo de entrenamiento "Bananarific" para la aplicación MonkeyFit.
    • Pronunciación: proporciona sugerencias de pronunciación a Siri como ortografía fonética simple para una frase determinada. Por ejemplo, "ba nana ri fic".
    • Ejemplo: proporciona un ejemplo de uso de la frase especificada en la aplicación. Por ejemplo, "Inicia un Bananarific in MonkeyFit".

Para obtener más información, consulte la referencia de formato de archivo de vocabulario de la aplicaciónde Apple.

Vocabulario específico del usuario

El vocabulario específico del usuario va a proporcionar palabras o frases exclusivas de usuarios individuales de la aplicación. Estas se proporcionarán en tiempo de ejecución desde la aplicación principal (no las extensiones de aplicación) como un conjunto ordenado de términos ordenados en una prioridad de uso más significativa para los usuarios, con los términos más importantes al principio de la lista.

Eche un vistazo al ejemplo de la aplicación MonkeyChat presentada anteriormente. MonkeyChat mantiene una lista de todos los contactos del usuario, que enviará a Siri a través del vocabulario específico del usuario. También mantiene una lista de los 10 contactos más recientes a los que el usuario ha enviado mensajes y tiene un conjunto de contactos favoritos para cada usuario. En este ejemplo, los contactos favoritos deben estar al principio de nuestro vocabulario específico del usuario, seguidos de los contactos recientes y, a continuación, el resto de los contactos del usuario.

El vocabulario específico del usuario admite los siguientes tipos de información:

  • Nombres de contacto.
  • Nombres de entrenamiento.
  • Nombres de álbumes de fotos.
  • Palabras clave de foto.

Si la aplicación se basa en la libreta de direcciones de iOS, no tendrá que realizar ninguna acción, ya que esta información ya está disponible para Siri. La aplicación solo debe proporcionar nombres de contacto si la aplicación tiene su propia base de datos única de contactos.

Al diseñar el vocabulario, proporcione solo los valores necesarios que los usuarios conozcan y por los que se interesen. Evite proporcionar información como números de teléfono o direcciones de correo electrónico.

La aplicación también debe actualizar Siri rápidamente cuando cambia el vocabulario específico del usuario. Los usuarios están acostumbrados a solicitar información a Siri en el momento en que se ha agregado a su dispositivo iOS. Por ejemplo, si el usuario agrega un nuevo contacto en la aplicación, envíe esa información a Siri tan pronto como el usuaria la guarde.

Lo más importante es que la aplicación debe eliminar información del vocabulario de Siri rápidamente, ya que un usuario podría estar molesto si eliminó un fragmento de información, pero Siri todavía lo reconoce horas o días más tarde.

Importante

La aplicación debe quitar todo el vocabulario específico del usuario de Siri si el usuario decide restablecer la aplicación o si cierra la sesión.

Permisos de SiriKit

La última parte de SiriKit se centra en los permisos. Al igual que ocurre con otras características de iOS (como Fotos, Cámara o Contactos), los usuarios tienen que conceder permiso explícito para que la aplicación hable con Siri.

La aplicación puede proporcionar una cadena que defina la información que proporcionará a Siri y dar un motivo por el que el usuario debería conceder este acceso.

Apple sugiere que la aplicación debería solicitar permiso al usuario para utilizar Siri la primera vez que este abra la aplicación después de haber actualizado a iOS 10. Esto es para que los usuarios conozcan la integración de Siri y puedan aprobar previamente su uso antes de realizar su primera solicitud.

SiriKit y Maps

SiriKit es una parte integral de iOS y usa el marco de Intenciones más grande agregado a iOS 10. El marco de Intenciones se ha diseñado para compartir acciones y intenciones comunes y compartidas con otros elementos del sistema.

El marco de Intenciones va más allá de la simple integración de Siri y proporciona otras características, como la integración de contactos, donde la aplicación puede convertirse en la aplicación de mensajería o telefonía predeterminada para contactos específicos. Las intenciones también proporcionan una estrecha integración con CallKit para ofrecer a los usuarios la mejor experiencia de VOIP posible.

La aplicación Maps en iOS 10 ha agregado características como el uso compartido de viajes donde el usuario puede reservar un viaje directamente dentro de la interfaz de usuario de Maps. SiriKit proporciona un punto de extensión común con Maps para que las intenciones de uso compartido de viajes (y otras) se puedan compartir entre Siri y Maps.

Esto significa que si la aplicación ha adoptado las extensiones de SiriKit, también obtendrá la integración de Maps de forma gratuita.

Diseño de una excelente experiencia de Siri

Diseñar una excelente experiencia de usuario al integrar una aplicación en Siri es diferente a diseñar una excelente interfaz de usuario de la aplicación. A diferencia de las situaciones normales en las que el usuario interactúa directamente con la aplicación en pantalla, cuando se usa Siri hay muchas veces en las que no se puede ver en absoluto ninguna interfaz visual. Por ejemplo, cuando el usuario ha iniciado la conversación con "Oye Siri".

Cómo ayuda Siri al desarrollador

Al diseñar las interacciones de una aplicación con Siri, la aplicación creará una interfaz conversacional, lo que significa que el contexto se deriva de la conversación que tiene Siri con el usuario en nombre de la aplicación.

En ausencia de una referencia visual, el usuario debe realizar un seguimiento de la información que se presenta en su cabeza. Por este motivo, Siri presenta la información mínima necesaria para lograr la tarea que el usuario desea realizar.

La interfaz conversacional está formada por las preguntas y respuestas del usuario y Siri durante la conversación. Por lo tanto, es importante pensar en cómo Siri formula preguntas y responde al diseñar esta interfaz.

Considere el ejemplo siguiente del usuario que crea un mensaje, Siri podría responder con la pregunta "¿Listo para enviarlo?". El usuario podría responder de muchas maneras diferentes, como "Envíalo", "Cancelar" o incluso algo totalmente ajeno a esta pregunta. Independientemente de cómo se desarrolle la conversación, Siri la controlará para la aplicación y solo le enviará la información pertinente cuando esté disponible.

Un usuario puede iniciar una conversación con Siri de varias formas diferentes:

  • Mediante la selección del dispositivo, presionando el botón Inicio. En esta situación, Siri presentará más interfaces visuales y menos respuestas verbales.
  • Diciendo "Oye Siri" e iniciando una conversación con manos libres. En esta situación, Siri será menos visual y más verbal.
  • Mediante el uso de características de accesibilidad como audífonos Bluetooth habilitados donde la interfaz de usuario se adaptará a un usuario con necesidades especiales.
  • Mediante el uso de Car Play, donde el usuario debe centrar su atención en la conducción, con el menor número de distracciones posible.

Cómo ayuda el desarrollador a Siri

Al integrar una aplicación con Siri, el desarrollador debe probar esta integración con frecuencia y asegurarse de realizar muchas solicitudes diferentes mediante su solicitud del mismo fragmento de información o tarea de tantas maneras diferentes como sea posible.

Como no hay dos personas que piensen igual, es fundamental que el desarrollador obtenga tantos evaluadores de beta diferentes como sea posible para ayudar a ajustar la integración de Siri. Los usuarios pueden pedir información o realizar solicitudes de formas que el desarrollador nunca pensó, y este ajuste preciso puede ayudar a garantizar que el grupo de usuarios más amplio tenga una excelente experiencia mediante su aplicación con Siri.

Pruebe en diferentes situaciones y entornos. Inicie las conversaciones con Siri de todas las formas posibles para garantizar que estas permanezcan fluidas y naturales. Pruebe en ubicaciones donde sería más que probable que el usuario usara la aplicación, como en un gimnasio abarrotado.

Asegúrese de que la aplicación proporciona toda la información que Siri necesita para representar correctamente la solicitud y el resultado para el usuario. Esto es especialmente cierto cuando se usa Siri en una situación de manos libres.

Instrucciones de diseño de Siri

Recuerde siempre que las conversaciones que tiene Siri con el usuario son en nombre de la aplicación. El desarrollador quiere asegurarse de que esta conversación permanece lo más fluida y natural posible.

Igual que haría con cualquier conversación importante, el desarrollador debe asegurarse de lo siguiente:

  • Que la aplicación está preparada para la conversación.
  • Que la aplicación escucha exactamente lo que el usuario intenta realizar.
  • Que la aplicación formula las preguntas adecuadas en los momentos adecuados.
  • Que la aplicación responde a la solicitud con la información que busca el usuario.

Preparación para la conversación

Lo primero que hay que recordar es que los usuarios de la aplicación no van a ser exactamente como el desarrollador. Pueden tener diferentes orígenes, hablar diferentes idiomas o tener necesidades especiales al trabajar con la aplicación.

Además, dado que el desarrollador ha diseñado y creado la aplicación, tiene un conocimiento estrecho y profundo de la aplicación y sus funciones y funcionamiento interno que un usuario típico no tendrá. Por lo tanto, el desarrollador podría realizar una solicitud a Siri de forma diferente a un usuario normal.

Es por ello que es fundamental hacer que interactúen con la aplicación a través de Siri tantas personas diferentes como sea posible. Los usuarios pueden realizar solicitudes de la aplicación a través de Siri en las que el desarrollador nunca ha pensado o de formas que el desarrollador no se ha planteado.

Asegúrese de que la aplicación es un buen cliente de escucha

El desarrollador debe asegurarse de que la aplicación es un buen cliente de escucha y obtiene los detalles específicos de la conversación que cumplen las expectativas del usuario. Pero también es posible que no hayan proporcionado toda la información que requiere la aplicación para lograr la tarea solicitada.

Existen varias maneras en que la aplicación podría controlar esta situación:

  • Elegir un buen valor predeterminado para el valor ausente: por ejemplo, una aplicación de uso compartido de viajes podría establecer el valor predeterminado en la ubicación actual del usuario si no ha especificado dónde quiere que le recojan.
  • Realizar una estimación educada: al utilizar información específica recopilada por la aplicación sobre el usuario, es posible que la aplicación pueda realizar una estimación educada de la información que falta, como rellenar un número de móvil que falta a partir de la información de contacto del usuario. Sin embargo, se debe tener cuidado para evitar sorpresas desagradables, como elegir la opción más cara, etc.
  • Solicitar más información: la aplicación puede hacer que Siri solicite al usuario el valor que falta. Sin embargo, la clave aquí es mantener las conversaciones simples y directas. Los usuarios se frustrarán rápidamente si tienen que responder a varias preguntas para lograr su solicitud.
  • Controlar la desinformación con elegancia: el usuario podría proporcionar un valor que la aplicación no esperaba o que no puede controlar en el contexto especificado. Asegúrese de que la aplicación relaciona esta situación con el usuario de una forma que le resulte clara y fácil de corregir.

Cuando la aplicación se presenta con un único valor que está en peligro, la manera preferida de controlar esto es hacer que Siri pida confirmación al usuario. Por ejemplo, "¿Quiso decir Bobo el Grande?", pregunta a la que puede dar un simple sí o no como respuesta.

Cuando hay una situación en la que varias opciones posibles podrían ser correctas para un solo valor, la desambiguación es el método de control preferido. En esta situación, Siri puede pedir al usuario que elija entre diez opciones posibles como máximo. Por ejemplo:

Who do you want to send the message to?

* Bobo the Great!
* Bobo Jr.
* Little Bobo

Si sigue en peligro, haga que Siri pida al usuario que proporcione una respuesta totalmente nueva y más específica para un valor especificado.

Confirmación final de la solicitud

Antes de que la aplicación realice realmente la tarea para cumplir la solicitud del usuario, Siri comprobará con la extensión de aplicación si todo está listo. Por ejemplo, ¿tiene el usuario suficiente dinero en su cuenta para realizar el pago solicitado?

Además, la aplicación debe asegurarse de proporcionar toda la información posible a Siri para que pueda presentarla al usuario y confirmar que la tarea que está a punto de realizarse cumple sus expectativas.

Una vez que el usuario ha confirmado la solicitud y la aplicación la ha realizado, la aplicación debe asegurarse otra vez de que ha devuelto todos los resultados a Siri para que pueda relacionarlos con el usuario.

Respuesta a la solicitud

Siri tiene varias interfaces de usuario integradas para cada uno de los Dominios y Acciones que conoce. Sin embargo, cuando sea apropiado, la aplicación puede proporcionar una extensión UI de intenciones personalizada para enriquecer la experiencia del usuario mediante la presentación de la personalización de marca y la interfaz de usuario de la aplicación o más información de la que estaba presente en la solicitud.

Dicho esto, se debe tener moderación al diseñar interfaces personalizadas para Siri. Normalmente, el usuario desea realizar una tarea específica lo antes posible y no quiere sobrecargarse con información innecesaria.

También se debe tener cuidado para asegurarse de que la interfaz de usuario personalizada se ve y responde correctamente en todos los diferentes dispositivos iOS y orientaciones relativas a la posible posesión o uso del dispositivo por parte del usuario.

Si procede, use la API de SiriKit para ocultar cualquier información redundante que ya esté presente en la interfaz de usuario de Siri predeterminada. Sin embargo, asegúrese de que la aplicación sigue proporcionando la información a Siri para que pueda presentarla verbalmente en situaciones de manos libres.

Podrían darse situaciones en las que Siri inicie la aplicación para cumplir la solicitud del usuario, como presentar las fotos que el usuario ha solicitado. En estas situaciones, no sorprenda al usuario. Muestre la información esperada sin necesidad de pasos intermedios o de una mayor interacción. Nunca muestre información ni realice una tarea inesperada para el usuario.

Pulido del diseño

Hay varios pasos sugeridos por Apple para pulir el diseño de las interfaces conversacionales. El primero consiste en proporcionar a Siri ejemplos de casos de uso y vocabulario claros y concisos.

Una de las formas en que un usuario descubre la aplicación es mediante el inicio de una conversación con Siri y la formulación de la pregunta "¿Qué puedes hacer?" Siri mostrará varias cosas diferentes que puede hacer, incluida la aplicación del desarrollador y los principales casos de uso de ejemplo que ha proporcionado a través de su archivo plist.

Cómo escribir buenos ejemplos de casos de uso:

  • Asegúrese de incluir el nombre de la aplicación en los ejemplos.
  • Mantenga el ejemplo corto y directo.
  • Proporcione varios ejemplos de cada una de las intenciones admitidas por la aplicación.
  • Priorice tanto las intenciones como los ejemplos dentro de ellas en función de los casos de uso más comunes de la aplicación.
  • Asegúrese de que la aplicación proporciona ejemplos localizados.
  • Asegúrese de que cada ejemplo dado funciona según lo previsto en la aplicación.
  • Evite dirigirse a Siri en los ejemplos y, por tanto, no incluya texto como "Oye Siri..."
  • Evite cualquier expresión de cortesía innecesaria como, por ejemplo, "por favor" o "gracias".

Dedique el tiempo que sea necesario a explorar y experimentar sobre cómo la aplicación puede dar forma a la conversación de Siri con el usuario en su nombre. Asegúrese de hablar con los usuarios típicos durante todo el proceso, ya que sus interacciones con la aplicación y expectativas de esta podrían cambiar con el tiempo.

Recuerde siempre probar la aplicación en diferentes situaciones y todos los diferentes métodos para invocar una conversación con Siri. Pruebe en ubicaciones reales donde el usuario podría estar utilizando la aplicación, lejos de la oficina y el escritorio.

Procure que las conversaciones con Siri (en nombre de la aplicación) sean fluidas, naturales y agradables.

Resumen

En este artículo se han tratado los conceptos clave necesarios para usar SiriKit y se ha mostrado que puede interactuar con las aplicaciones Xamarin.iOS para proporcionar servicios accesibles para el usuario mediante Siri y la aplicación Maps en un dispositivo iOS.