Siri Intent: conceptos clave, SiriKit e integración con Siri

Autor: IT Sectr Publicado: 2026-02-15 Tiempo de lectura: 9 min

Siri Intent es un mecanismo para integrar una aplicación iOS con el asistente de voz Siri, permitiendo a los usuarios realizar acciones por voz sin abrir la aplicación. El desarrollo se realiza en Swift utilizando los frameworks Intents (Intents.framework) y SiriKit. A partir de iOS 16 apareció App Intents — un nuevo framework más flexible para crear comandos de voz personalizados. Siri Intent admite 10 dominios (mensajes, llamadas, pagos, notas, entrenamientos y otros) y permite a la aplicación procesar solicitudes de voz a través de IntentHandler. Exploremos conceptos clave, arquitectura y ejemplos de código.

Puntos clave

  • Siri Intent — un comando de voz que realiza una acción en una aplicación a través de Siri sin abrirla
  • SiriKit (iOS 10+) — un framework con dominios predefinidos (mensajes, llamadas, pagos)
  • App Intents (iOS 16+) — un nuevo framework para crear comandos de voz personalizados arbitrarios
  • IntentHandler — un manejador que realiza una acción de la aplicación en respuesta a un comando de voz de Siri
  • INInteraction — un objeto que representa el resultado de ejecutar un intent, guardado en Siri para aprendizaje

Qué es Siri Intent

Siri Intent es un mecanismo que permite a una aplicación iOS procesar comandos de voz pronunciados por el usuario a través de Siri. Cuando el usuario dice “Siri, send a message to Ivan on Telegram,” Siri reconoce el intent (INSendMessageIntent), identifica la aplicación que puede manejarlo (Telegram), pasa los parámetros (contact “Ivan,” message text), y lanza el IntentHandler de la aplicación. Todo el proceso toma 0.5–2 seconds y no requiere abrir la aplicación.

La arquitectura de Siri Intent incluye tres componentes. El primero es el archivo .intentdefinition, que describe la estructura del intent: parámetros (String, Integer, INPerson), frases de activación y respuestas. El segundo es IntentHandler, que implementa el protocolo de manejo: recibe parámetros, realiza la acción (por ejemplo, envía un mensaje a través de la API de la aplicación) y devuelve un INInteraction con un código de resultado. El tercero es Intents Extension, un target separado en Xcode que se ejecuta en su propio proceso. Siri lanza la Intents Extension ante una solicitud de voz, le pasa datos y recibe el resultado. La Extension no tiene UI — se ejecuta en segundo plano y debe completarse en 5–10 segundos.

Casos de uso de Siri Intent: sending messages (INSendMessageIntent), making calls (INStartCallIntent), sending payments (INSendPaymentIntent), creating notes (INCreateNoteIntent), workouts (INStartWorkoutIntent), photos (INBúsquedaForFotosIntent), booking trips (INBookRestaurantReservationIntent), car functions (INSetCarLockStatusIntent). Cada dominio tiene un esquema de parámetros estricto y limitaciones definidas por Apple para la seguridad.

SiriKit: arquitectura y dominios

SiriKit es un framework presentado por Apple en iOS 10 (2016). Proporciona dominios (Intents) prefabricados para acciones típicas: messages, calls, payments, notes, reminders, photos, workouts, booking, car functions, search. Para cada dominio, Apple definió un conjunto de clases Intent (INSendMessageIntent, INStartCallIntent) que la aplicación implementa a través de IntentHandler. SiriKit genera automáticamente una confirmación de UI antes de la ejecución (para pagos y mensajes, la confirmación es obligatoria).

Dominios de SiriKit:

  • Mensajes — INSendMessageIntent, INBúsquedaForMensajesIntent, INSetMessageAttributeIntent
  • Llamadas — INStartCallIntent, INBúsquedaForCallHistoryIntent
  • Pagos — INSendPaymentIntent, INRequestPaymentIntent
  • Notas — INCreateNoteIntent, INBúsquedaForNotasIntent, INAddTasksIntent
  • Recordatorios — INCreateTaskListIntent, INAddTasksIntent, INSetTaskAttributeIntent
  • Entrenamientos — INStartWorkoutIntent, INPauseWorkoutIntent, INEndWorkoutIntent
  • Fotos — INBúsquedaForFotosIntent, INStartPhotoPlaybackIntent
  • Automóvil (CarPlay) — INSetCarLockStatusIntent, INGetCarLockStatusIntent
  • Búsqueda — INBúsquedaForMensajesIntent, INBúsquedaForNotebookItemsIntent

Limitaciones de SiriKit: los desarrolladores no pueden crear dominios personalizados — solo pueden usar los predefinidos. Esta limitación se resolvió en iOS 16 con la introducción de App Intents, que permite crear comandos de voz arbitrarios para cualquier acción de la aplicación.

App Intents: el nuevo framework

App Intents es un framework de Apple presentado en iOS 16 (2022) y significativamente ampliado en iOS 17–18. A diferencia de SiriKit con sus dominios fijos, App Intents permite a los desarrolladores definir sus propios comandos de voz para cualquier acción de la aplicación: “Siri, add milk to the shopping list in AnyList,” “Siri, schedule a meeting in Fantastical,” “Siri, turn on the living room light in Home.” Los intents personalizados se definen a través del protocolo AppIntent con parámetros, frases y un esquema de confirmación.

Componentes de App Intents:

  • AppIntent — un protocolo para describir una acción: title, description, parameters, perform()
  • IntentParameter — parámetros del comando con tipos (String, Int, URL, Entity, Measurement)
  • IntentDialog — diálogos para Siri: solicitud de confirmación, respuesta de éxito o error
  • WidgetIntent — un subconjunto de App Intents para manejar toques en widgets (iOS 17+)
  • Shortcuts — App Intents se integra automáticamente con la aplicación Shortcuts

App Intents vs SiriKit: la principal diferencia es la flexibilidad. SiriKit está limitado a 10 dominios, App Intents permite crear cualquier comando. SiriKit requiere un target separado de Intents Extension, App Intents funciona dentro de la aplicación principal. SiriKit usa Intents.framework (Objective-C/Swift), App Intents usa una nueva sintaxis declarativa de Swift con macros @Intent y @Parameter. Según Apple, App Intents se utiliza en el 70% de los nuevos proyectos con soporte de Siri en 2025.

Ejemplo de código: Swift Intents

Un ejemplo de creación de un App Intent personalizado para añadir una nota a la aplicación. Demuestra el enfoque moderno utilizando el framework App Intents en iOS 16+.

swift
import AppIntents

// 1. Intent personalizado para añadir una nota
struct AddNoteIntent: AppIntent {
    // Nombre del comando (visible en Shortcuts)
    static var title: LocalizedStringResource = "Añadir nota"

    // Descripción del comando
    static var description: LocalizedStringResource = "Crea una nueva nota en la aplicación"

    // Parámetros del comando
    @Parameter(title: "Texto de la nota")
    var noteContent: String

    @Parameter(title: "Categoría", default: "General")
    var category: String

    // Ejecutando la acción
    func perform() async throws -> some IntentResult {
        // Crear una nota a través del almacenamiento local
        let note = Note(content: noteContent, category: category)
        try await NoteStore.shared.save(note)

        // Devolver el resultado con un diálogo para Siri
        return .result(
            dialog: .response("Nota "(noteContent)" creada")
        )
    }
}

// 2. App Shortcut Provider — registro de comandos
struct NotesShortcuts: AppShortcutsProvider {
    @AppShortcutsBuilder
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: AddNoteIntent(),
            phrases: [
                "Añadir nota a (.applicationName)",
                "Crear una nota con (.$noteContent) en (.applicationName)",
                "Escribe (.$noteContent) en (.applicationName)",
            ]
        )
    }
}

// 3. Intent SiriKit para mensajes (enfoque clásico)
class MessageIntentHandler: NSObject, INSendMessageIntentHandling {

    func resolveRecipients(
        for intent: INSendMessageIntent,
        completion: @escaping ([INPersonResolutionResult]) -> Void
    ) {
        guard let recipients = intent.recipients else {
            completion([.needsRequired()])
            return
        }
        // Resolver contactos a través de la libreta de direcciones de la aplicación
        let results = recipients.map { INPersonResolutionResult.success(with: $0) }
        completion(results)
    }

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping (INSendMessageIntentResponse) -> Void
    ) {
        // Enviar un mensaje a través de la API de la aplicación
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil
        )
        completion(response)
    }
}

Puntos clave: AppIntent — protocolo para comandos de voz personalizados; @Parameter — macro que define los parámetros del comando; perform() — método que ejecuta la acción y devuelve un resultado con un diálogo para Siri; AppShortcutsProvider — registra los comandos de la aplicación en Siri y Shortcuts; INSendMessageIntentHandling — protocolo SiriKit para manejar el dominio de mensajes. Las frases de activación se establecen mediante .applicationName y \.$parameter para variabilidad.

Recomendaciones y limitaciones

Recomendaciones para crear Siri Intents: defina frases de activación claras con variantes de pronunciación; devuelva un diálogo informativo después de la ejecución (éxito/error); maneje casos de parámetros incompletos mediante métodos resolve con solicitudes de aclaración; guarde INInteraction después de la ejecución para el aprendizaje de Siri; pruebe en un dispositivo real (el simulador no soporta Siri). Para App Intents, use @Intent con inAppBúsquedaKeywords para mejorar el reconocimiento.

Limitaciones: los Intents de SiriKit están limitados a 10 dominios. Intents Extension se ejecuta con un límite de 5–10 segundos — si se supera, Siri reporta un error. Siri Intent no tiene UI — toda la interfaz es generada por Siri. App Intents solo está disponible en iOS 16+ (~85% de cobertura de dispositivos en 2026). Para soportar iOS 13–15, se debe usar SiriKit. Privacidad: Siri no transmite grabaciones de audio a la aplicación — solo el texto de parámetros reconocido. Para acciones sensibles (pagos, mensajes), la confirmación del usuario es obligatoria.

ParameterSiriKitApp Intents
Minimum iOSiOS 10iOS 16
Domains10 predefinedArbitrary
LanguageObjective-C / SwiftSwift (macros)
TargetIntents ExtensionMain app
UISiri UI (generation)Siri UI (generation)
ConfirmationFor payments/messagesOptional
ShortcutsManualAutomatic
Widget integrationNoWidgetIntent (iOS 17+)

Rendimiento y depuración: Intents Extension se ejecuta en un proceso separado con un límite de memoria de 30–50 MB. Para depuración, use el esquema «Intents Extension» en Xcode adjunto al proceso de Siri. Los registros se muestran en la consola del dispositivo. App Intents se depura a través de la aplicación Shortcuts en el dispositivo. INInteraction se guarda localmente y Siri lo usa para sugerencias — elimine interacciones obsoletas mediante INInteraction delete.

Preguntas frecuentes

Qué es Siri Intent in simple words?

Siri Intent es un comando de voz que activa una acción específica en una aplicación sin abrirla. El usuario dice «Siri, envía un mensaje en WhatsApp» y Siri realiza la acción a través del IntentHandler of the WhatsApp app.

¿En qué se diferencia SiriKit de App Intents?

SiriKit (iOS 10+) es un framework más antiguo con dominios predefinidos (mensajes, llamadas, pagos). App Intents (iOS 16+) is a new framework that allows creating custom intents for any actions without domain limitations.

¿Qué dominios soporta SiriKit?

SiriKit soporta 10 dominios: messages (INSendMessageIntent), calls (INStartCallIntent), payments (INSendPaymentIntent), notes, reminders, photos, workouts, trip booking, car functions, and search.

¿Cómo procesa Siri Intent la entrada de voz?

Siri reconoce el habla y lo empareja con un Intent específico basado en frases definidas en .intentdefinition. IntentHandler realiza la acción y devuelve el resultado. Todo el proceso toma 0.5–2 seconds.

¿Se puede cancelar la ejecución de Siri Intent?

Sí, después de reconocer el intent pero antes de ejecutarlo, Siri muestra una confirmación al usuario. El usuario puede cancelar la ejecución por voz («Cancelarar») o táctil. Para pagos y mensajes, la confirmación es obligatoria.

Resumen

  • Siri Intent — un mecanismo para integrar una aplicación con Siri mediante comandos de voz sin abrir la pantalla
  • SiriKit (iOS 10+) — un framework con 10 dominios fijos (mensajes, llamadas, pagos) a través de Intents Extension
  • App Intents (iOS 16+) — un nuevo framework para comandos personalizados arbitrarios con macros @Intent y @Parameter
  • IntentHandler — realiza la acción de la aplicación, recibe parámetros de Siri y devuelve un INInteraction con el resultado
  • Trigger phrases are set via .intentdefinition (SiriKit) or @AppShortcutsBuilder (App Intents)
  • Limitations — límite de ejecución de 5–10 segundos, memoria 30–50 MB, confirmación para acciones sensibles
  • App Intents — enfoque preferido para iOS 16+, SiriKit — para soportar iOS 13–15

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también