Siri Intent: βασικές έννοιες, SiriKit και ενσωμάτωση με Siri

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-02-15 Χρόνος ανάγνωσης: 9 λεπ

Siri Intent — mechanizm integracji aplikacji iOS z asystentem głosowym Siri, umożliwiający użytkownikom wykonywanie działań głosem bez otwierania aplikacji. Programowanie odbywa się w Swift z użyciem frameworków Intents (Intents.framework) i SiriKit. Od iOS 16 pojawił się App Intents — nowy, bardziej elastyczny framework do tworzenia niestandardowych poleceń głosowych. Siri Intent obsługuje 10 domen (wiadomości, połączenia, płatności, notatki, treningi i inne) i umożliwia aplikacji przetwarzanie zapytań głosowych przez IntentHandler. Omówimy kluczowe pojęcia, architekturę i przykłady kodu.

Najważniejsze

  • Siri Intent — polecenie głosowe wykonujące działanie w aplikacji przez Siri bez jej otwierania
  • SiriKit (iOS 10+) — framework z predefiniowanymi domenami (wiadomości, połączenia, płatności)
  • App Intents (iOS 16+) — nowy framework do tworzenia dowolnych niestandardowych poleceń głosowych
  • IntentHandler — handler wykonujący działanie aplikacji w odpowiedzi na polecenie głosowe Siri
  • INInteraction — obiekt reprezentujący wynik wykonania intentu, zapisywany w Siri do uczenia się

Co to jest Siri Intent

Siri Intent — to mechanizm umożliwiający aplikacji iOS przetwarzanie poleceń głosowych wypowiadanych przez użytkownika przez Siri. Gdy użytkownik mówi «Siri, wyślij wiadomość do Telegram do Jana», Siri rozpoznaje intent (INSendMessageIntent), określa aplikację, która może go obsłużyć (Telegram), przekazuje parametry (kontakt «Jan», treść wiadomości) i uruchamia IntentHandler aplikacji. Cały proces trwa 0,5–2 sekund i nie wymaga otwierania aplikacji.

Architektura Siri Intent obejmuje trzy komponenty. Pierwszy — plik .intentdefinition opisujący strukturę intentu: parametry (String, Integer, INPerson), frazy wyzwalające i odpowiedzi. Drugi — IntentHandler implementujący protokół obsługi: otrzymuje parametry, wykonuje działanie (np. wysyła wiadomość przez API aplikacji) i zwraca INInteraction z kodem wyniku. Trzeci — Intents Extension, osobny target w Xcode, działający we własnym procesie. Siri uruchamia Intents Extension przy zapytaniu głosowym, przekazuje mu dane i otrzymuje wynik. Extension nie ma UI — wykonuje się w tle i musi zakończyć w ciągu 5–10 sekund.

Zastosowania Siri Intent: wysyłanie wiadomości (INSendMessageIntent), wykonywanie połączeń (INStartCallIntent), wysyłanie płatności (INSendPaymentIntent), tworzenie notatek (INCreateNoteIntent), treningi (INStartWorkoutIntent), zdjęcia (INSearchForPhotosIntent), rezerwacja podróży (INBookRestaurantReservationIntent), funkcje samochodowe (INSetCarLockStatusIntent). Każda domena ma ścisły schemat parametrów i ograniczenia określone przez Apple dla bezpieczeństwa.

SiriKit: architektura i domeny

SiriKit — framework przedstawiony przez Apple w iOS 10 (2016). Zapewnia gotowe domeny (Intents) dla typowych działań: wiadomości, połączenia, płatności, notatki, przypomnienia, zdjęcia, treningi, rezerwacje, funkcje samochodowe, wyszukiwanie. Dla każdej domeny Apple określiła zestaw klas Intent (INSendMessageIntent, INStartCallIntent), które aplikacja implementuje przez IntentHandler. SiriKit automatycznie generuje UI-potwierdzenie przed wykonaniem (dla płatności i wiadomości potwierdzenie jest obowiązkowe).

Domeny SiriKit:

  • Wiadomości (Messages) — INSendMessageIntent, INSearchForMessagesIntent, INSetMessageAttributeIntent
  • Połączenia (Calls) — INStartCallIntent, INSearchForCallHistoryIntent
  • Płatności (Payments) — INSendPaymentIntent, INRequestPaymentIntent
  • Notatki (Notes) — INCreateNoteIntent, INSearchForNotesIntent, INAddTasksIntent
  • Przypomnienia (Reminders) — INCreateTaskListIntent, INAddTasksIntent, INSetTaskAttributeIntent
  • Treningi (Workouts) — INStartWorkoutIntent, INPauseWorkoutIntent, INEndWorkoutIntent
  • Zdjęcia (Photos) — INSearchForPhotosIntent, INStartPhotoPlaybackIntent
  • Samochód (CarPlay) — INSetCarLockStatusIntent, INGetCarLockStatusIntent
  • Wyszukiwanie (Search) — INSearchForMessagesIntent, INSearchForNotebookItemsIntent

Ograniczenia SiriKit: programista nie może tworzyć własnych domen — może używać tylko predefiniowanych. To ograniczenie zostało rozwiązane w iOS 16 wraz z pojawieniem się App Intents, który umożliwia tworzenie dowolnych poleceń głosowych dla dowolnych działań aplikacji.

App Intents: nowy framework

App Intents — framework Apple, przedstawiony w iOS 16 (2022) i znacznie rozszerzony w iOS 17–18. W przeciwieństwie do SiriKit ze stałymi domenami, App Intents umożliwia programiście definiowanie własnych poleceń głosowych dla dowolnych działań aplikacji: «Siri, dodaj mleko do listy zakupów w AnyList», «Siri, zapisz spotkanie w Fantastical», «Siri, włącz światło w salonie w Home». Niestandardowe intenty definiuje się przez protokół AppIntent z określeniem parametrów, fraz i schematu potwierdzenia.

Komponenty App Intents:

  • AppIntent — protokół do opisu działania: title, description, parameters, perform()
  • IntentParameter — parametry polecenia z typami (String, Int, URL, Entity, Measurement)
  • IntentDialog — dialogi dla Siri: zapytanie o potwierdzenie, odpowiedź o sukcesie lub błędzie
  • WidgetIntent — podzbiór App Intents do obsługi kliknięć w widżetach (iOS 17+)
  • Shortcuts — App Intents automatycznie integrują się z aplikacją Shortcuts

App Intents vs SiriKit: główna różnica — elastyczność. SiriKit jest ograniczony do 10 domen, App Intents umożliwia tworzenie dowolnych poleceń. SiriKit wymaga osobnego targetu Intents Extension, App Intents działa wewnątrz głównej aplikacji. SiriKit używa Intents.framework (Objective-C/Swift), App Intents — nowej deklaratywnej składni Swift z makrami @Intent, @Parameter. Według danych Apple, App Intents jest używany w 70% nowych projektów z obsługą Siri na 2025 rok.

Przykład kodu: Swift Intents

Przykład tworzenia niestandardowego App Intent do dodawania notatki w aplikacji. Demonstruje nowoczesne podejście z użyciem frameworka App Intents w iOS 16+.

swift
import AppIntents

// 1. Custom Intent για προσθήκη σημείωσης
struct AddNoteIntent: AppIntent {
    // Όνομα εντολής (ορατό στα Shortcuts)
    static var title: LocalizedStringResource = "Προσθήκη σημείωσης"

    // Περιγραφή εντολής
    static var description: LocalizedStringResource = "Δημιουργεί νέα σημείωση στην εφαρμογή"

    // Παράμετροι εντολής
    @Parameter(title: "Κείμενο σημείωσης")
    var noteContent: String

    @Parameter(title: "Κατηγορία", default: "Γενικά")
    var category: String

    // Εκτέλεση ενέργειας
    func perform() async throws -> some IntentResult {
        // Δημιουργούμε σημείωση μέσω τοπικής αποθήκευσης
        let note = Note(content: noteContent, category: category)
        try await NoteStore.shared.save(note)

        // Επιστρέφουμε αποτέλεσμα με διάλογο για Siri
        return .result(
            dialog: .response("Η σημείωση \"\(noteContent)\" δημιουργήθηκε")
        )
    }
}

// 2. App Shortcut Provider — καταχώρηση εντολών
struct NotesShortcuts: AppShortcutsProvider {
    @AppShortcutsBuilder
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: AddNoteIntent(),
            phrases: [
                "Προσθήκη σημείωσης σε \(.applicationName)",
                "Δημιουργία σημείωσης με \(.\$noteContent) σε \(.applicationName)",
                "Γράψε \(.\$noteContent) σε \(.applicationName)",
            ]
        )
    }
}

// 3. SiriKit Intent για μηνύματα (κλασσική προσέγγιση)
class MessageIntentHandler: NSObject, INSendMessageIntentHandling {

    func resolveRecipients(
        for intent: INSendMessageIntent,
        completion: @escaping ([INPersonResolutionResult]) -> Void
    ) {
        guard let recipients = intent.recipients else {
            completion([.needsRequired()])
            return
        }
        // Επιλύουμε επαφές μέσω Address Book της εφαρμογής
        let results = recipients.map { INPersonResolutionResult.success(with: $0) }
        completion(results)
    }

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping (INSendMessageIntentResponse) -> Void
    ) {
        // Στέλνουμε μήνυμα μέσω API της εφαρμογής
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil
        )
        completion(response)
    }
}

Kluczowe elementy: AppIntent — protokół dla niestandardowego polecenia głosowego; @Parameter — makro określające parametry polecenia; perform() — metoda wykonująca działanie i zwracająca wynik z dialogiem dla Siri; AppShortcutsProvider — rejestruje polecenia aplikacji w Siri i Shortcuts; INSendMessageIntentHandling — protokół SiriKit do obsługi domeny wiadomości. Frazy wyzwalające są określane przez .applicationName i \.$parameter dla różnorodności.

Zalecenia i ograniczenia

Zalecenia dotyczące tworzenia Siri Intent: definiuj zrozumiałe frazy wyzwalające z wariantami wymowy; zwracaj informacyjny dialog po wykonaniu (sukces/błąd); obsługuj przypadki niekompletnych parametrów przez metody resolve z prośbą o doprecyzowanie; zapisuj INInteraction po wykonaniu do uczenia Siri; testuj na rzeczywistym urządzeniu (symulator nie obsługuje Siri). Dla App Intents używaj @Intent z inAppSearchKeywords dla lepszego rozpoznawania.

Ograniczenia: SiriKit Intents są ograniczone do 10 domen. Intents Extension wykonuje się z limitem 5–10 sekund — po przekroczeniu Siri zgłasza błąd. Siri Intent nie ma UI — cały interfejs jest generowany przez Siri. App Intents są dostępne tylko na iOS 16+ (pokrycie ~85% urządzeń na 2026). Do obsługi iOS 13–15 należy używać SiriKit. Prywatność: Siri nie przekazuje aplikacji nagrania audio — tylko rozpoznany tekst parametrów. Dla poufnych działań (płatności, wiadomości) wymagane jest potwierdzenie od użytkownika.

ParametrSiriKitApp Intents
Minimalne iOSiOS 10iOS 16
Domeny10 predefiniowanychDowolne
JęzykObjective-C / SwiftSwift (makra)
TargetIntents ExtensionGłówna aplikacja
UISiri UI (generacja)Siri UI (generacja)
PotwierdzenieDla płatności/wiadomościOpcjonalnie
ShortcutsRęcznieAutomatycznie
Integracja WidgetNieWidgetIntent (iOS 17+)

Wydajność i debugowanie: Intents Extension uruchamia się w oddzielnym procesie z ograniczeniem pamięci 30–50 MB. Do debugowania użyj schematu «Intents Extension» w Xcode z dołączeniem do procesu Siri. Logi są wypisywane w konsoli urządzenia. App Intents debuguje się przez aplikację Shortcuts na urządzeniu. INInteraction jest zapisywany lokalnie i używany przez Siri do sugestii — usuwaj nieaktualne interakcje przez INInteraction delete.

Często zadawane pytania

Co to jest Siri Intent w prostych słowach?

Siri Intent to polecenie głosowe, które uruchamia określone działanie w aplikacji bez jej otwierania. Użytkownik mówi «Siri, wyślij wiadomość w WhatsApp» a Siri wykonuje działanie przez IntentHandler aplikacji WhatsApp.

Czym różni się SiriKit od App Intents?

SiriKit (iOS 10+) — stary framework z predefiniowanymi domenami (wiadomości, połączenia, płatności). App Intents (iOS 16+) — nowy framework umożliwiający tworzenie niestandardowych intentów dla dowolnych działań bez ograniczenia domenami.

Jakie domeny obsługuje SiriKit?

SiriKit obsługuje 10 domen: wiadomości (INSendMessageIntent), połączenia (INStartCallIntent), płatności (INSendPaymentIntent), notatki, przypomnienia, zdjęcia, treningi, rezerwacja podróży, funkcje samochodowe i wyszukiwanie.

Jak Siri Intent przetwarza wprowadzanie głosowe?

Siri rozpoznaje mowę i dopasowuje ją do określonego Intent na podstawie fraz zdefiniowanych w .intentdefinition. IntentHandler wykonuje działanie i zwraca wynik. Cały proces trwa 0,5–2 sekund.

Czy można anulować wykonanie Siri Intent?

Tak, po rozpoznaniu intentu, ale przed jego wykonaniem, Siri pokazuje użytkownikowi potwierdzenie. Użytkownik może anulować wykonanie głosem («Anuluj») lub dotknięciem. Dla płatności i wiadomości potwierdzenie jest obowiązkowe.

Podsumowanie

  • Siri Intent — mechanizm integracji aplikacji z Siri przez polecenia głosowe bez otwierania ekranu
  • SiriKit (iOS 10+) — framework z 10 stałymi domenami (wiadomości, połączenia, płatności) przez Intents Extension
  • App Intents (iOS 16+) — nowy framework do dowolnych niestandardowych poleceń z makrami @Intent i @Parameter
  • IntentHandler — wykonuje działanie aplikacji, otrzymuje parametry z Siri i zwraca INInteraction z wynikiem
  • Frazy wyzwalające są określane przez .intentdefinition (SiriKit) lub @AppShortcutsBuilder (App Intents)
  • Ograniczenia — limit wykonania 5–10 sekund, pamięć 30–50 MB, potwierdzenie dla wrażliwych działań
  • App Intents — preferowane podejście dla iOS 16+, SiriKit — dla obsługi iOS 13–15

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης