AppIntent: এটি কী, Siri ইন্টেন্ট মডেল এবং Swift

লেখক: IT Sectr প্রকাশিত: 2026-06-16 পড়ার সময়: 8 মিনিট

AppIntent হল Apple-এর একটি ফ্রেমওয়ার্ক যা iOS 16-তে পুরোনো Intents framework-এর প্রতিস্থাপন হিসেবে উপস্থাপিত হয়েছে, যা Siri, Shortcuts এবং Spotlight-এর সাথে অ্যাপ ইন্টিগ্রেট করার জন্য একটি ডিক্লারেটিভ API প্রদান করে। পুরোনো পদ্ধতির বিপরীতে, যার জন্য আলাদা Intent Definition File এবং ObjC কোড জেনারেশন প্রয়োজন ছিল, AppIntent AppIntent এবং AppEnum প্রোটোকলের সাথে বিশুদ্ধ Swift ব্যবহার করে। Apple Developer ডকুমেন্টেশন, 2026 অনুযায়ী, AppIntent Intents framework-এর তুলনায় একটি ইন্টেন্ট তৈরি করতে কোডের পরিমাণ গড়ে 60% কমায়, এবং Siri কমান্ড ইন্টিগ্রেশনের সময় কয়েক দিন থেকে কয়েক ঘণ্টায় নেমে আসে।

মূল বিষয়

  • AppIntent হল iOS 16 থেকে শুরু করে Siri, Shortcuts এবং Spotlight ইন্টেন্ট তৈরি করার জন্য Apple-এর ডিক্লারেটিভ ফ্রেমওয়ার্ক।
  • AppIntent প্রোটোকল হল প্রধান বিল্ডিং ব্লক: নাম, বিবরণ, প্যারামিটার এবং perform() মেথড কমান্ডের লজিক নির্ধারণ করে।
  • AppEntity হল সত্তা বর্ণনার জন্য প্রোটোকল যাদের সাথে ইন্টেন্ট কাজ করে: প্রজেক্ট, টাস্ক, কন্টাক্ট, ফাইল।
  • AppEnum হল প্যারামিটারের ডিক্লারেটিভ এনুমারেশন যা Shortcuts-এ নির্বাচনের জন্য স্বয়ংক্রিয়ভাবে UI জেনারেট করে।
  • অ্যাসিঙ্ক্রোনিসিটি — ইন্টেন্ট async/await, প্রোগ্রেস বার এবং ব্যবহারকারীর ডায়ালগের জন্য IntentDialog সমর্থন করে।

AppIntent কী এবং কেন এটি প্রয়োজন?

AppIntent হল Apple-এর একটি ফ্রেমওয়ার্ক যা ডিক্লারেটিভভাবে কমান্ড বর্ণনা করার জন্য যা আপনার অ্যাপ Siri, Shortcuts, Spotlight, Control Center এবং Action Button-এর অনুরোধে কার্যকর করতে পারে। এর ভিত্তি হল AppIntent প্রোটোকল, যেখানে ডেভেলপার ইন্টেন্টের নাম, এর প্যারামিটার এবং perform() মেথড — কার্যকরযোগ্য লজিক বর্ণনা করে। ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে Shortcuts অ্যাপে প্যারামিটার কনফিগার করার জন্য ইউজার ইন্টারফেস এবং Siri-র জন্য ভয়েস ফ্রেজ জেনারেট করে।

AppIntent-এর আগে, ডেভেলপাররা Intents framework ব্যবহার করত — Intents Definition File-এর উপর ভিত্তি করে একটি সিস্টেম যা Objective-C কোড জেনারেট করত এবং আলাদা Intents Extension সেটআপ প্রয়োজন হত। এই প্রক্রিয়াটি জটিল ছিল: একটি সাধারণ ইন্টেন্টের জন্যও ৫টি কনফিগারেশন ফাইলের প্রয়োজন হত। AppIntent এই জটিলতা দূর করে — একটি ইন্টেন্ট একটি Swift ফাইলে বর্ণিত হয়, এবং সিস্টেম স্বয়ংক্রিয়ভাবে Siri এবং Shortcuts-এর সাথে ইন্টিগ্রেশনের জন্য প্রয়োজনীয় সবকিছু জেনারেট করে।

WWDC 2024 সেশন "Dive deeper into App Intents" অনুযায়ী, Apple AppIntent-কে ঐতিহ্যগত UI-এর বাইরে অ্যাপ কার্যকারিতা বাড়ানোর কেন্দ্রীয় প্রক্রিয়া হিসেবে দেখে। iOS 18 প্রকাশের সময়, App Store-এর শীর্ষ ১০০-এর মধ্যে ৭০% এরও বেশি অ্যাপ ইতিমধ্যে Shortcuts এবং Siri-এর সাথে ইন্টিগ্রেশনের জন্য AppIntent ব্যবহার করছে, এবং গড় iOS 18 ব্যবহারকারী ভয়েস কমান্ড বা উইজেটের মাধ্যমে প্রতিদিন ৪-৬টি ইন্টেন্ট চালায়।

AppIntent কোথায় ব্যবহৃত হয়

  • Siri — ভয়েস কমান্ড: "Hey Siri, MyApp-এ একটি টাস্ক যোগ করুন"
  • Shortcuts — প্যারামিটার কনফিগারেশন সহ শর্টকাট অ্যাপে অটোমেশন
  • Spotlight — সার্চ বার থেকে সরাসরি সার্চ এবং কমান্ড কার্যকর করা
  • Control Center — iOS 18+ এ দ্রুত অ্যাকশন বাটন
  • Action Button — iPhone 15 Pro এবং নতুনের বাটনে অ্যাকশন অ্যাসাইন করা

AppIntent বনাম Intents framework: মূল পার্থক্য

Intents framework (iOS 10–15) এ .intentdefinition ফাইল তৈরি, Xcode-এর মাধ্যমে ObjC/Swift ক্লাস জেনারেট, Intents Extension এবং App Intent Configuration সেটআপ প্রয়োজন ছিল। AppIntent (iOS 16+) এই পাইপলাইনটি সম্পূর্ণরূপে জেনারেশন, এক্সটেনশন বা অতিরিক্ত কনফিগারেশন ছাড়াই বিশুদ্ধ Swift কোড দিয়ে প্রতিস্থাপন করে। এটি SiriKit অধ্যয়ন না করেই গড় iOS ডেভেলপারের জন্য ইন্টেন্ট তৈরি প্রক্রিয়াকে সুলভ করে তোলে।

AppIntent-এর মূল সুবিধা হল ডিক্লারেটিভনেস। ডেভেলপার বর্ণনা করে যে ইন্টেন্ট কী করে, না যে এটি সিস্টেমের সাথে কীভাবে ইন্টিগ্রেট হয়। ফ্রেমওয়ার্ক নিজেই Siri সংলাপ পরিস্থিতি, Shortcuts-এ প্যারামিটার প্রদর্শন এবং ইন্টেন্টের মধ্যে প্রসঙ্গ স্থানান্তর পরিচালনা করে। পুরোনো Intents framework-এ, ইন্টিগ্রেশনের প্রতিটি দিক ম্যানুয়ালি কোড করতে হত, যার মধ্যে ইন্টেন্ট UI প্রদর্শনের জন্য INUIHostedView-ও অন্তর্ভুক্ত ছিল।

পদ্ধতির তুলনা

বৈশিষ্ট্যIntents frameworkAppIntent
কোডের পরিমাণপ্রতি ইন্টেন্টে ১০০-৩০০ লাইন৩০-৬০ লাইন
প্রয়োজনীয় ফাইল.intentdefinition, Extension, Config১টি Swift ফাইল
কোড জেনারেশনপ্রয়োজন (Xcode -> ObjC)প্রয়োজন নেই
অ্যাসিঙ্ক্রোনিসিটিশুধুমাত্র completion handlerasync/await + প্রগ্রেস
IntentDialogনাবিল্ট-ইন Siri সংলাপ

প্রধান প্রোটোকল: AppIntent, AppEntity, AppEnum

AppIntent হল কেন্দ্রীয় প্রোটোকল যা একটি ইন্টেন্ট নির্ধারণ করে। এতে title (Siri-র জন্য নাম), description (Shortcuts-এ বিবরণ), প্যারামিটার (@Parameter-এর মাধ্যমে) এবং perform() মেথড যা IntentResult রিটার্ন করে। ফলাফল হতে পারে IntentDialog (Siri সংলাপ), Shortcuts-এ ফেরত দেওয়ার জন্য মান বা একটি ত্রুটি। প্রতিটি ইন্টেন্ট suggestedInvocationPhrase-ও সরবরাহ করতে পারে — ভয়েস ইনভোকেশনের জন্য একটি বাক্যাংশ।

AppEntity সত্তা বর্ণনা করে যাদের সাথে ইন্টেন্ট কাজ করে। উদাহরণস্বরূপ, যদি অ্যাপ প্রজেক্ট পরিচালনা করে, তাহলে AppEntity Project-এ id, displayRepresentation (UI-তে সত্তা কীভাবে প্রদর্শন করবেন) এবং defaultQuery (সত্তা কীভাবে সার্চ করবেন) অন্তর্ভুক্ত থাকে। AppEnum হল নির্বাচন প্যারামিটারের জন্য এনুমারেশন যা Shortcuts-এ পিকার এলিমেন্ট সহ স্বয়ংক্রিয়ভাবে UI জেনারেট করে। ম্যানুয়ালি প্যারামিটার তালিকা তৈরি করার পরিবর্তে, AppEnum-এর সাথে সামঞ্জস্যপূর্ণ enum ঘোষণা করাই যথেষ্ট।

AppEnum এবং প্যারামিটারের উদাহরণ

swift
enum TaskPriority: String, AppEnum {
    case low, medium, high
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Priority"
    
    var displayRepresentation: DisplayRepresentation {
        switch self {
        case .low: "Low"
        case .medium: "Medium"
        case .high: "High"
        }
    }
}

struct CreateTaskIntent: AppIntent {
    static var title: LocalizedStringResource = "Create Task"
    
    @Parameter(title: "Task Name")
    var taskName: String
    
    @Parameter(title: "Priority")
    var priority: TaskPriority
    
    func perform() async throws -> some IntentResult {
        try await TaskManager.shared
            .createTask(name: taskName, priority: priority)
        return .result(dialog: "Task created")
    }
}

ইন্টেন্ট প্যারামিটার এবং তাদের বৈধতা

AppIntent প্যারামিটার @Parameter প্রপার্টি র্যাপারের মাধ্যমে ঘোষণা করা হয়, যা স্বয়ংক্রিয়ভাবে Shortcuts UI এবং Siri ভয়েস অনুরোধের সাথে ইন্টিগ্রেট হয়। প্রতিটি প্যারামিটারের একটি title (Shortcuts-এ প্রদর্শিত) থাকে এবং এতে বিবরণ, ডিফল্ট মান এবং সীমাবদ্ধতা অন্তর্ভুক্ত থাকতে পারে। AppIntent স্ট্যান্ডার্ড টাইপ সমর্থন করে: String, Int, Double, Bool, পাশাপাশি AppEntity এবং AppEnum-এর মাধ্যমে কাস্টম টাইপ।

প্যারামিটার বৈধতা লজিক কার্যকর করার আগে perform() মেথডে করা হয়। যদি প্যারামিটারগুলি অবৈধ হয়, তাহলে ইন্টেন্ট IntentError-এর মাধ্যমে ত্রুটি রিটার্ন করে। জটিল বৈধতার জন্য, validate() মেথড প্রয়োগ করা যেতে পারে, যা perform()-এর আগে কল করা হয় এবং কমান্ড কার্যকর করার আগেই IntentDialog-এর মাধ্যমে ব্যবহারকারীকে প্রতিক্রিয়া জানাতে পারে। এটি Siri ভয়েস পরিস্থিতির জন্য বিশেষভাবে কার্যকর, যেখানে ব্যবহারকারীকে পুনরায় জিজ্ঞাসা করা ভুল কমান্ড কার্যকর করার চেয়ে সহজ।

বৈধতা সহ প্যারামিটার

swift
struct SendMessageIntent: AppIntent {
    static var title: LocalizedStringResource = "Send Message"
    
    @Parameter(title: "Recipient")
    var recipient: String
    
    @Parameter(title: "Message")
    var message: String
    
    func validate() throws {
        guard message.count >= 1 else {
            throw IntentError.invalidMessage
        }
    }
    
    func perform() async throws -> some IntentResult {
        try await Messenger.shared
            .send(recipient: recipient, text: message)
        return .result(dialog: "Sent!")
    }
}

Swift-এ ইন্টেন্ট তৈরি: উদাহরণ

একটি অ্যাপে নোট সার্চ করার জন্য ইন্টেন্টের সম্পূর্ণ উদাহরণ AppEntity এবং EntityQuery-এর সাথে কাজ প্রদর্শন করে। SearchNotesIntent একটি সার্চ স্ট্রিং নেয় এবং পাওয়া নোটের তালিকা রিটার্ন করে। AppEntity Note নোটের গঠন বর্ণনা করে, এবং EntityQuery স্টোরেজ জুড়ে সার্চ বাস্তবায়ন করে। ফলাফল সত্তার একটি অ্যারের সাথে IntentResult-এর মাধ্যমে রিটার্ন করা হয়, যা Shortcuts ব্যবহারকারীকে প্রদর্শন করে।

swift
struct Note: AppEntity {
    let id: UUID
    let title: String
    let content: String
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation =
        "Note"
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "(title)")
    }
}

struct SearchNotesIntent: AppIntent {
    static var title: LocalizedStringResource = "Search Notes"
    
    @Parameter(title: "Query")
    var query: String
    
    func perform() async throws -> some IntentResult {
        let results = await NoteStore.shared
            .search(query)
            .map { $0.toEntity() }
        return .result(value: results)
    }
}

Shortcuts এবং Siri-এর সাথে ইন্টিগ্রেশন

AppIntent ঘোষণা করার পর, Shortcuts এবং Siri-এর সাথে ইন্টিগ্রেশন স্বয়ংক্রিয়ভাবে ঘটে। Shortcuts অ্যাপ ইনস্টল করা অ্যাপ থেকে সমস্ত AppIntents স্ক্যান করে এবং উপলব্ধ অ্যাকশনের তালিকায় সেগুলি প্রদর্শন করে। ব্যবহারকারী তাদের শর্টকাটে একটি ইন্টেন্ট যোগ করতে পারে, এর প্যারামিটার কনফিগার করতে পারে এবং এটি অন্যান্য অ্যাকশনের সাথে একত্রিত করতে পারে। Siri-র জন্য, ডেভেলপারের পক্ষ থেকে অতিরিক্ত সেটআপ ছাড়াই ইন্টেন্ট ভয়েস কমান্ড হিসেবে উপস্থিত হয়।

ডেভেলপার suggestedInvocationPhrase যোগ করে ইন্টিগ্রেশন উন্নত করতে পারে — ভয়েস ইনভোকেশনের জন্য প্রস্তাবিত বাক্যাংশ। উদাহরণস্বরূপ, টাস্ক যোগ করার ইন্টেন্টের জন্য: suggestedInvocationPhrase = "Add new task"। Siri এই বাক্যাংশ বিশ্লেষণ করে এবং ভয়েস কমান্ড শেখার সময় ব্যবহারকারীকে এটি সুপারিশ করে। categories-ও নির্দিষ্ট করা যেতে পারে — ইন্টেন্ট ক্যাটাগরি (create, view, search, edit), যা Shortcuts-কে অর্থ অনুযায়ী অ্যাকশন গ্রুপ করতে সাহায্য করে।

Shortcuts-এর জন্য ইন্টেন্ট ক্যাটাগরি

ক্যাটাগরিউদাহরণShortcuts-এ আচরণ
.createCreateTaskIntentঅন্যান্য তৈরি অ্যাকশনের সাথে গ্রুপ হয়
.viewViewWeatherIntent"দেখুন" ক্যাটাগরিতে প্রদর্শিত হয়
.searchSearchNotesIntentসার্চ অ্যাকশন হিসেবে চিহ্নিত হয়
.editUpdateTaskIntentসম্পাদনা অ্যাকশনের সাথে গ্রুপ হয়

সচরাচর জিজ্ঞাসিত প্রশ্ন

AppIntent-এর জন্য কি আলাদা Intents Extension তৈরি করা প্রয়োজন?

না। AppIntent-এর আলাদা Intents Extension প্রয়োজন নেই। ইন্টেন্ট সরাসরি প্রধান অ্যাপ্লিকেশনে কম্পাইল হয়, যা আর্কিটেকচার সহজ করে এবং আন্তঃপ্রক্রিয়া যোগাযোগের প্রয়োজনীয়তা দূর করে।

AppIntent কি iOS-এর পুরোনো সংস্করণে কাজ করে?

AppIntent iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+ এ উপলব্ধ। iOS 15 এবং পুরোনোর জন্য, Intents framework ব্যবহার করতে হবে। বিস্তৃত ডিভাইস কভারেজের জন্য উভয় API সমর্থন করার পরামর্শ দেওয়া হয়।

ইন্টেন্ট থেকে কী কী ডেটা টাইপ রিটার্ন করা যায়?

IntentsResult String, Int, Double, Bool, AppEntity অ্যারে, IntentDialog এবং কাস্টম টাইপ সমর্থন করে। জটিল ডেটা স্ট্রাকচার EntityQuery-এর মাধ্যমে রিটার্ন করা হয়, যা স্বয়ংক্রিয়ভাবে Shortcuts UI-এর সাথে ইন্টিগ্রেট হয়।

AppIntent কি সার্ভারে কার্যকর করা যেতে পারে?

হ্যাঁ, AppIntentsPackage-এর মাধ্যমে — একটি প্যাকেজ যা সার্ভার সাইডে ইন্টেন্ট কার্যকর করার অনুমতি দেয়। এটি সার্ভার লজিকযুক্ত অ্যাপের জন্য কার্যকর যেখানে ইন্টেন্টের স্থানীয়ভাবে উপলব্ধ নয় এমন ডেটা অ্যাক্সেস প্রয়োজন।

শারীরিক ডিভাইস ছাড়া কীভাবে AppIntent ডিবাগ করবেন?

Shortcuts অ্যাপ সহ iOS 16+ সিমুলেটর ব্যবহার করুন। সিমুলেটরে Shortcuts কমান্ডে ইন্টেন্ট যোগ করুন এবং এটি চালান। Siri পরিস্থিতির জন্য শারীরিক ডিভাইস প্রয়োজন কারণ সিমুলেটর ভয়েস ইনপুট সমর্থন করে না।

সারাংশ

  • AppIntent হল Siri, Shortcuts এবং Spotlight ইন্টেন্ট তৈরি করার জন্য Apple-এর ডিক্লারেটিভ ফ্রেমওয়ার্ক, যা iOS 16-তে Intents framework-এর প্রতিস্থাপন হিসেবে উপস্থাপিত হয়েছে।
  • AppIntent প্রোটোকল একটি কমান্ড বর্ণনা করে: title, প্যারামিটার (@Parameter) এবং async/await সহ perform() মেথড, যা IntentResult রিটার্ন করে।
  • AppEntity এবং AppEnum হল সত্তা এবং এনুমারেশন ডিক্লারেটিভভাবে বর্ণনা করার জন্য প্রোটোকল, যা স্বয়ংক্রিয়ভাবে Shortcuts-এ UI জেনারেট করে।
  • প্যারামিটার বৈধতা validate() মেথডের মাধ্যমে ইন্টেন্ট কার্যকর করার আগে ডেটা পরীক্ষা করতে এবং Siri সংলাপ রিটার্ন করতে দেয়।
  • ইন্টিগ্রেশন Shortcuts এবং Siri-এর সাথে ইন্টেন্ট ঘোষণা করার পরে স্বয়ংক্রিয়ভাবে ঘটে; suggestedInvocationPhrase ভয়েস শনাক্তকরণ উন্নত করে।
  • AppIntentsPackage দূরবর্তী ডেটা এবং লজিক অ্যাক্সেসের জন্য সার্ভারে ইন্টেন্ট কার্যকর করার অনুমতি দেয়।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন