Siri Intent: khái niệm chính, SiriKit và tích hợp với Siri

Tác giả: IT Sectr Đã đăng: 2026-02-15 Thời gian đọc: 9 phút

Siri Intent là cơ chế tích hợp ứng dụng iOS với trợ lý giọng nói Siri, cho phép người dùng thực hiện hành động bằng giọng nói mà không cần mở ứng dụng. Việc phát triển được thực hiện bằng Swift sử dụng các framework Intents (Intents.framework) và SiriKit. Bắt đầu từ iOS 16, App Intents xuất hiện — một framework mới linh hoạt hơn để tạo các lệnh thoại tùy chỉnh. Siri Intent hỗ trợ 10 miền (tin nhắn, cuộc gọi, thanh toán, ghi chú, tập luyện và những miền khác) và cho phép ứng dụng xử lý yêu cầu bằng giọng nói thông qua IntentHandler. Hãy cùng khám phá các khái niệm chính, kiến trúc và ví dụ mã.

Các điểm chính

  • Siri Intent — một lệnh thoại thực hiện hành động trong ứng dụng thông qua Siri mà không cần mở nó
  • SiriKit (iOS 10+) — một framework với các miền được xác định trước (tin nhắn, cuộc gọi, thanh toán)
  • App Intents (iOS 16+) — một framework mới để tạo các lệnh thoại tùy chỉnh tùy ý
  • IntentHandler — một trình xử lý thực hiện hành động của ứng dụng để đáp lại lệnh thoại Siri
  • INInteraction — một đối tượng biểu thị kết quả thực thi intent, được lưu trong Siri để học hỏi

Siri Intent là gì

Siri Intent là cơ chế cho phép ứng dụng iOS xử lý các lệnh thoại do người dùng nói thông qua Siri. Khi người dùng nói “Siri, send a message to Ivan on Telegram,” Siri nhận dạng intent (INSendMessageIntent), xác định ứng dụng có thể xử lý nó (Telegram), truyền các tham số (contact “Ivan,” message text), và khởi chạy IntentHandler của ứng dụng. Toàn bộ quá trình mất 0.5–2 seconds và không yêu cầu mở ứng dụng.

Kiến trúc của Siri Intent bao gồm ba thành phần. Đầu tiên là tệp .intentdefinition, mô tả cấu trúc intent: tham số (String, Integer, INPerson), cụm từ kích hoạt và phản hồi. Thứ hai là IntentHandler, triển khai giao thức xử lý: nhận tham số, thực hiện hành động (ví dụ: gửi tin nhắn qua API ứng dụng) và trả về INInteraction với mã kết quả. Thứ ba là Intents Extension, một target riêng trong Xcode chạy trong tiến trình riêng của nó. Siri khởi chạy Intents Extension khi có yêu cầu bằng giọng nói, truyền dữ liệu cho nó và nhận kết quả. Extension không có UI — nó chạy ở chế độ nền và phải hoàn thành trong vòng 5–10 giây.

Các trường hợp sử dụng Siri Intent: sending messages (INSendMessageIntent), making calls (INStartCallIntent), sending payments (INSendPaymentIntent), creating notes (INCreateNoteIntent), workouts (INStartWorkoutIntent), photos (INTìm kiếmForẢnhIntent), booking trips (INBookRestaurantReservationIntent), car functions (INSetCarLockStatusIntent). Mỗi miền có lược đồ tham số nghiêm ngặt và các giới hạn do Apple xác định vì lý do bảo mật.

SiriKit: kiến trúc và miền

SiriKit là một framework được Apple giới thiệu trong iOS 10 (2016). Nó cung cấp các miền (Intents) có sẵn cho các hành động điển hình: messages, calls, payments, notes, reminders, photos, workouts, booking, car functions, search. Cho mỗi miền, Apple đã xác định một tập hợp các lớp Intent (INSendMessageIntent, INStartCallIntent) mà ứng dụng triển khai thông qua IntentHandler. SiriKit tự động tạo xác nhận UI trước khi thực thi (đối với thanh toán và tin nhắn, xác nhận là bắt buộc).

Các miền SiriKit:

  • Tin nhắn — INSendMessageIntent, INTìm kiếmForTin nhắnIntent, INSetMessageAttributeIntent
  • Cuộc gọi — INStartCallIntent, INTìm kiếmForCallHistoryIntent
  • Thanh toán — INSendPaymentIntent, INRequestPaymentIntent
  • Ghi chú — INCreateNoteIntent, INTìm kiếmForGhi chúIntent, INAddTasksIntent
  • Lời nhắc — INCreateTaskListIntent, INAddTasksIntent, INSetTaskAttributeIntent
  • Tập luyện — INStartWorkoutIntent, INPauseWorkoutIntent, INEndWorkoutIntent
  • Ảnh — INTìm kiếmForẢnhIntent, INStartPhotoPlaybackIntent
  • CarPlay — INSetCarLockStatusIntent, INGetCarLockStatusIntent
  • Tìm kiếm — INTìm kiếmForTin nhắnIntent, INTìm kiếmForNotebookItemsIntent

Giới hạn của SiriKit: nhà phát triển không thể tạo miền tùy chỉnh — họ chỉ có thể sử dụng các miền được xác định trước. Giới hạn này đã được giải quyết trong iOS 16 với sự ra đời của App Intents, cho phép tạo lệnh thoại tùy ý cho bất kỳ hành động nào của ứng dụng.

App Intents: framework mới

App Intents là một framework của Apple được giới thiệu trong iOS 16 (2022) và mở rộng đáng kể trong iOS 17–18. Không giống SiriKit với các miền cố định, App Intents cho phép nhà phát triển xác định lệnh thoại riêng của họ cho bất kỳ hành động nào của ứng dụng: “Siri, add milk to the shopping list in AnyList,” “Siri, schedule a meeting in Fantastical,” “Siri, turn on the living room light in Home.” Các intent tùy chỉnh được xác định thông qua giao thức AppIntent với các tham số, cụm từ và lược đồ xác nhận.

Các thành phần App Intents:

  • AppIntent — một giao thức để mô tả hành động: title, description, parameters, perform()
  • IntentParameter — các tham số lệnh với kiểu (String, Int, URL, Entity, Measurement)
  • IntentDialog — hộp thoại cho Siri: yêu cầu xác nhận, phản hồi thành công hoặc lỗi
  • WidgetIntent — một tập con của App Intents để xử lý các thao tác chạm trên widget (iOS 17+)
  • Shortcuts — App Intents tự động tích hợp với ứng dụng Shortcuts

App Intents vs SiriKit: sự khác biệt chính là tính linh hoạt. SiriKit bị giới hạn ở 10 miền, App Intents cho phép tạo bất kỳ lệnh nào. SiriKit yêu cầu một target Intents Extension riêng, App Intents hoạt động bên trong ứng dụng chính. SiriKit sử dụng Intents.framework (Objective-C/Swift), App Intents sử dụng cú pháp Swift khai báo mới với macro @Intent và @Parameter. Theo Apple, App Intents được sử dụng trong 70% dự án mới với hỗ trợ Siri tính đến năm 2025.

Ví dụ mã: Swift Intents

Ví dụ về tạo App Intent tùy chỉnh để thêm ghi chú vào ứng dụng. Minh họa cách tiếp cận hiện đại sử dụng framework App Intents trong iOS 16+.

swift
import AppIntents

// 1. Intent tùy chỉnh để thêm ghi chú
struct AddNoteIntent: AppIntent {
    // Tên lệnh (hiển thị trong Shortcuts)
    static var title: LocalizedStringResource = "Thêm ghi chú"

    // Mô tả lệnh
    static var description: LocalizedStringResource = "Tạo ghi chú mới trong ứng dụng"

    // Tham số lệnh
    @Parameter(title: "Nội dung ghi chú")
    var noteContent: String

    @Parameter(title: "Danh mục", default: "Chung")
    var category: String

    // Thực thi hành động
    func perform() async throws -> some IntentResult {
        // Tạo ghi chú qua bộ nhớ cục bộ
        let note = Note(content: noteContent, category: category)
        try await NoteStore.shared.save(note)

        // Trả về kết quả với hộp thoại cho Siri
        return .result(
            dialog: .response("Ghi chú "(noteContent)" đã được tạo")
        )
    }
}

// 2. App Shortcut Provider — đăng ký lệnh
struct NotesShortcuts: AppShortcutsProvider {
    @AppShortcutsBuilder
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: AddNoteIntent(),
            phrases: [
                "Thêm ghi chú vào (.applicationName)",
                "Tạo ghi chú với (.$noteContent) trong (.applicationName)",
                "Viết (.$noteContent) trong (.applicationName)",
            ]
        )
    }
}

// 3. Intent SiriKit cho tin nhắn (cách tiếp cận cổ điển)
class MessageIntentHandler: NSObject, INSendMessageIntentHandling {

    func resolveRecipients(
        for intent: INSendMessageIntent,
        completion: @escaping ([INPersonResolutionResult]) -> Void
    ) {
        guard let recipients = intent.recipients else {
            completion([.needsRequired()])
            return
        }
        // Giải quyết danh bạ qua sổ địa chỉ của ứng dụng
        let results = recipients.map { INPersonResolutionResult.success(with: $0) }
        completion(results)
    }

    func handle(
        intent: INSendMessageIntent,
        completion: @escaping (INSendMessageIntentResponse) -> Void
    ) {
        // Gửi tin nhắn qua API ứng dụng
        let response = INSendMessageIntentResponse(
            code: .success, userActivity: nil
        )
        completion(response)
    }
}

Các điểm chính: AppIntent — giao thức cho lệnh thoại tùy chỉnh; @Parameter — macro xác định tham số lệnh; perform() — phương thức thực thi hành động và trả về kết quả với hộp thoại cho Siri; AppShortcutsProvider — đăng ký các lệnh của ứng dụng trong Siri và Shortcuts; INSendMessageIntentHandling — giao thức SiriKit để xử lý miền tin nhắn. Các cụm từ kích hoạt được đặt qua .applicationName và \.$parameter để có biến thể.

Khuyến nghị và giới hạn

Khuyến nghị khi tạo Siri Intents: xác định cụm từ kích hoạt rõ ràng với các biến thể phát âm; trả về hộp thoại thông tin sau khi thực thi (thành công/lỗi); xử lý trường hợp tham số không đầy đủ thông qua phương thức resolve với yêu cầu làm rõ; lưu INInteraction sau khi thực thi để Siri học hỏi; kiểm tra trên thiết bị thật (trình giả lập không hỗ trợ Siri). Đối với App Intents, sử dụng @Intent với inAppTìm kiếmKeywords để cải thiện nhận dạng.

Giới hạn: Intent SiriKit bị giới hạn ở 10 miền. Intents Extension chạy với giới hạn 5–10 giây — nếu vượt quá, Siri báo lỗi. Siri Intent không có UI — toàn bộ giao diện do Siri tạo ra. App Intents chỉ khả dụng trên iOS 16+ (~85% thiết bị được hỗ trợ tính đến năm 2026). Để hỗ trợ iOS 13–15, phải sử dụng SiriKit. Quyền riêng tư: Siri không truyền bản ghi âm đến ứng dụng — chỉ văn bản tham số được nhận dạng. Đối với các hành động nhạy cảm (thanh toán, tin nhắn), xác nhận của người dùng là bắt buộc.

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+)

Hiệu suất và gỡ lỗi: Intents Extension chạy trong một tiến trình riêng với giới hạn bộ nhớ 30–50 MB. Để gỡ lỗi, sử dụng lược đồ «Intents Extension» trong Xcode đính kèm với tiến trình Siri. Nhật ký được xuất ra bảng điều khiển thiết bị. App Intents được gỡ lỗi thông qua ứng dụng Shortcuts trên thiết bị. INInteraction được lưu cục bộ và được Siri sử dụng cho các gợi ý — xóa các tương tác lỗi thời qua INInteraction delete.

Câu hỏi thường gặp

Siri Intent là gì in simple words?

Siri Intent là một lệnh thoại kích hoạt một hành động cụ thể trong ứng dụng mà không cần mở nó. Người dùng nói «Siri, gửi tin nhắn trên WhatsApp» và Siri thực hiện hành động thông qua IntentHandler of the WhatsApp app.

SiriKit khác App Intents như thế nào?

SiriKit (iOS 10+) là một framework cũ hơn với các miền được xác định trước (tin nhắn, cuộc gọi, thanh toán). App Intents (iOS 16+) is a new framework that allows creating custom intents for any actions without domain limitations.

SiriKit hỗ trợ những miền nào?

SiriKit hỗ trợ 10 miền: messages (INSendMessageIntent), calls (INStartCallIntent), payments (INSendPaymentIntent), notes, reminders, photos, workouts, trip booking, car functions, and search.

Siri Intent xử lý đầu vào giọng nói như thế nào?

Siri nhận dạng giọng nói và khớp nó với một Intent cụ thể dựa trên các cụm từ được xác định trong .intentdefinition. IntentHandler thực hiện hành động và trả về kết quả. Toàn bộ quá trình mất 0.5–2 seconds.

Có thể hủy thực thi Siri Intent không?

Có, sau khi nhận dạng intent nhưng trước khi thực thi nó, Siri hiển thị xác nhận cho người dùng. Người dùng có thể hủy thực thi bằng giọng nói («Hủy») hoặc chạm. Đối với thanh toán và tin nhắn, xác nhận là bắt buộc.

Tổng kết

  • Siri Intent — một cơ chế tích hợp ứng dụng với Siri thông qua lệnh thoại mà không cần mở màn hình
  • SiriKit (iOS 10+) — một framework với 10 miền cố định (tin nhắn, cuộc gọi, thanh toán) thông qua Intents Extension
  • App Intents (iOS 16+) — một framework mới cho các lệnh tùy chỉnh tùy ý với macro @Intent và @Parameter
  • IntentHandler — thực hiện hành động của ứng dụng, nhận tham số từ Siri và trả về INInteraction với kết quả
  • Trigger phrases are set via .intentdefinition (SiriKit) or @AppShortcutsBuilder (App Intents)
  • Limitations — giới hạn thực thi 5–10 giây, bộ nhớ 30–50 MB, xác nhận cho các hành động nhạy cảm
  • App Intents — cách tiếp cận ưu tiên cho iOS 16+, SiriKit — cho việc hỗ trợ iOS 13–15

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm