Intents Extension হল একটি iOS এক্সটেনশন যা থার্ড-পার্টি অ্যাপগুলিকে Siri ভয়েস কমান্ড প্রক্রিয়া করতে এবং SiriKit-এর মাধ্যমে সিস্টেম পরিষেবাগুলির সাথে ইন্টারঅ্যাক্ট করতে দেয়। অ্যাপটি Intents.intentdefinition-এ নিজস্ব ইন্টেন্ট সংজ্ঞায়িত করে, INIntentHandler-এর উপর ভিত্তি করে হ্যান্ডলার বাস্তবায়ন করে এবং ভয়েস ফ্রেজ শনাক্তকরণের জন্য সেগুলি নিবন্ধন করে। Apple Developer Documentation (2025) অনুসারে, SiriKit ২০টিরও বেশি ইন্টেন্ট ডোমেন সমর্থন করে — মেসেজিং এবং পেমেন্ট থেকে ওয়ার্কআউট এবং বুকিং পর্যন্ত — এবং iOS 14 থেকে IntentsExtension-এর মাধ্যমে কাস্টম ইন্টেন্টের সমর্থন যুক্ত হয়েছে।
মূল বিষয়
Intents Extension হল একটি অ্যাপ এক্সটেনশন যা Siri, Shortcuts এবং অন্যান্য সিস্টেম পরিষেবাকে প্রমিত INIntentHandler প্রোটোকলের মাধ্যমে অ্যাপ কার্যকারিতা আহ্বান করতে দেয়। যখন একজন ব্যবহারকারী বলেন “হেই Siri, মেসেঞ্জার X-এ একটি বার্তা পাঠাও”, Siri সংশ্লিষ্ট এক্সটেনশন সক্রিয় করে, অনুরোধের প্যারামিটার পাস করে এবং ভয়েস আউটপুটের জন্য ফলাফল গ্রহণ করে।
অন্যান্য ধরণের এক্সটেনশনের বিপরীতে, Intents Extension দৃশ্যমান ইন্টারফেস ছাড়া ব্যাকগ্রাউন্ডে কাজ করে — Siri ভয়েস বা টেক্সট কার্ডের মাধ্যমে প্রতিক্রিয়া প্রদর্শন করে। এক্সটেনশন ঐচ্ছিকভাবে INUIHostedViewProviding-এর মাধ্যমে কাস্টম UI সরবরাহ করতে পারে, যা নিশ্চিতকরণের জন্য কমান্ড কার্যকর করার আগে Siri-এর ভিতরে প্রদর্শিত হয়।
এক্সটেনশনের ডিভাইস স্ক্রিনে অ্যাক্সেস নেই এবং এটি নিজে থেকে কাজ শুরু করতে পারে না — শুধুমাত্র Siri বা Shortcuts-এর অনুরোধের জবাবে। এটি নিরাপত্তা নিশ্চিত করে: ব্যবহারকারী সর্বদা নিয়ন্ত্রণ করে যে অ্যাপটি ভয়েস কমান্ডের মাধ্যমে কী কী কাজ করে।
SiriKit হল Siri ইন্টিগ্রেশনের জন্য Apple-এর ফ্রেমওয়ার্ক, যা iOS 10-এ চালু হয়েছিল। এটি ডোমেন সংজ্ঞায়িত করে — কাজের বিভাগ যা Siri পরিচালনা করতে পারে: বার্তা, ফোন কল, পেমেন্ট, তালিকা, রিমাইন্ডার, ফটো, ওয়ার্কআউট, বুকিং এবং অন্যান্য। প্রতিটি ডোমেনের ইন্টেন্ট এবং প্রতিক্রিয়ার একটি নির্দিষ্ট সেট রয়েছে।
INSendMessageIntent — বার্তা পাঠানো। INStartWorkoutIntent — ওয়ার্কআউট শুরু করা। INSearchForPhotosIntent — ফটো অনুসন্ধান। INRequestRideIntent — রাইড বুকিং। প্রতিটি ডোমেন বাধ্যতামূলক এবং ঐচ্ছিক প্যারামিটার সংজ্ঞায়িত করে যা Siri ভয়েস অনুরোধ থেকে বের করে। Apple-এর মতে, স্ট্যান্ডার্ড ডোমেনের জন্য intentdefinition ফাইলের প্রয়োজন নেই — সংশ্লিষ্ট হ্যান্ডলার বাস্তবায়ন করাই যথেষ্ট।
যে অ্যাপগুলি স্ট্যান্ডার্ড ডোমেনে ফিট করে না, তাদের জন্য iOS 14 কাস্টম ইন্টেন্ট ব্যবহারের ক্ষমতা চালু করেছে। অ্যাপটি Intents.intentdefinition-এর মাধ্যমে নিজস্ব কমান্ড টাইপ এবং তাদের প্যারামিটার সংজ্ঞায়িত করে, এবং Siri ডেভেলপার দ্বারা প্রদত্ত উদাহরণের ভিত্তিতে সংশ্লিষ্ট ফ্রেজ শনাক্ত করতে শেখে।
Intents Extension Info.plist-এ IntentsSupported কী-এর মাধ্যমে নিবন্ধিত হয়, যা এক্সটেনশন দ্বারা পরিচালিত সমস্ত ইন্টেন্ট ক্লাস তালিকাভুক্ত করে। Siri ভয়েস কমান্ড শনাক্ত করার সময় উপযুক্ত এক্সটেনশন নির্বাচন করতে এই তালিকা ব্যবহার করে। যদি একাধিক এক্সটেনশন একই ইন্টেন্ট সমর্থন করে, Siri ব্যবহারকারীকে বেছে নিতে বলে।
class MessageIntentHandler: NSObject,
INSendMessageIntentHandling {
func handle(
intent: INSendMessageIntent,
completion: @escaping
(INSendMessageIntentResponse) -> Void
) {
let response = INSendMessageIntentResponse(
code: .success, userActivity: nil)
completion(response)
}
}
INIntentHandler একটি প্রোটোকল যা ইন্টেন্ট প্রক্রিয়াকরণের প্রতিটি ধাপ পরিচালনার জন্য মেথড সংজ্ঞায়িত করে: প্যারামিটার সমাধান, নিশ্চিতকরণ এবং কার্যকর করা। এক্সটেনশন প্রতিটি ইন্টেন্ট টাইপের জন্য এই মেথডগুলি বাস্তবায়ন করে যা এটি সমর্থন করে।
resolve — ইন্টেন্ট প্যারামিটারের যাচাইকরণ এবং স্পষ্টীকরণ। Siri প্রতিটি প্যারামিটারের জন্য এই মেথড কল করে। যদি কোনো প্যারামিটার অনুপস্থিত বা ভুল হয়, এক্সটেনশন একটি স্পষ্টীকরণ অনুরোধ ফেরত দেয়, এবং Siri ব্যবহারকারীকে একটি অতিরিক্ত প্রশ্ন জিজ্ঞাসা করে। confirm — অভিপ্রায়ের নিশ্চিতকরণ। এক্সটেনশন পরীক্ষা করে যে এটি বর্তমান প্রসঙ্গে ইন্টেন্ট কার্যকর করতে পারে কিনা। handle — অপারেশনের প্রকৃত কার্যকর করা এবং ফলাফল ফেরত দেওয়া।
তিন-ধাপ বিভাজন ভয়েস UX-এর জন্য গুরুত্বপূর্ণ: যদি কোনো প্যারামিটার শনাক্ত না হয়, Siri কাজটি কার্যকর করে না বরং স্পষ্টীকরণ চায়। উদাহরণস্বরূপ, যদি ব্যবহারকারী বলেন “Alex-কে একটি বার্তা পাঠাও” কিন্তু কন্টাক্টে তিনজন Alex থাকে — এক্সটেনশন স্পষ্টীকরণ অনুরোধ সহ resolve ফেরত দেয়, এবং Siri জিজ্ঞাসা করে “কোন Alex?”
INIntentResponse হল একটি অবজেক্ট যা এক্সটেনশন ইন্টেন্ট কার্যকর করার পরে কমপ্লিশন হ্যান্ডলারে ফেরত দেয়। প্রতিক্রিয়ায় একটি ফলাফল কোড (success, failure, requiresAuthentication, inProgress) এবং Siri-এর ভয়েস আউটপুটের জন্য ঐচ্ছিক ডেটা থাকে। কোড নির্ধারণ করে যে Siri কীভাবে প্রতিক্রিয়া জানায়: success — ভয়েস নিশ্চিতকরণ, failure — ত্রুটি বার্তা, inProgress — দীর্ঘস্থায়ী অপারেশনের ইঙ্গিত।
func resolve(
for intent: INSendMessageIntent,
with completion: @escaping
(INStringResolutionResult) -> Void
) {
if let text = intent.content, !text.isEmpty {
completion(.success(with: text))
} else {
completion(.needsValue())
}
}
iOS 14-এর সাথে, ডেভেলপাররা স্ট্যান্ডার্ড SiriKit ডোমেনের বাইরে কাস্টম ইন্টেন্ট সংজ্ঞায়িত করার ক্ষমতা পেয়েছেন। কাস্টম ইন্টেন্ট Intents.intentdefinition ফাইলে বর্ণনা করা হয় — Xcode-এর ভিতরে একটি ভিজুয়াল এডিটর যেখানে প্যারামিটার এবং প্রতিক্রিয়া সহ নতুন কমান্ড টাইপ তৈরি করা হয়।
প্রতিটি কাস্টম ইন্টেন্ট INIntent (অনুরোধ সংজ্ঞা) এবং INIntentResponse (প্রতিক্রিয়া সংজ্ঞা) নিয়ে গঠিত। INIntent-এ ডেটা টাইপ সহ প্যারামিটার থাকে — String, Integer, CurrencyAmount, পাওয়া অবজেক্ট এবং অন্যান্য। INIntentResponse-এ ফলাফল ফেরত দেওয়ার জন্য বৈশিষ্ট্য এবং প্রতিক্রিয়া কোডের একটি অ্যারে থাকে। Xcode এই সংজ্ঞার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে Swift ক্লাস জেনারেট করে।
Apple কাস্টম ইন্টেন্টে ৫টির বেশি প্যারামিটার না অন্তর্ভুক্ত করার পরামর্শ দেয় — অত্যধিক প্যারামিটার ভয়েস শনাক্তকরণের মান কমিয়ে দেয় এবং ব্যবহারকারীর অভিজ্ঞতা জটিল করে তোলে। প্রতিটি প্যারামিটারের জন্য, Assistant Dialog-এ উদাহরণ বাক্যাংশ সরবরাহ করা বাঞ্ছনীয় যাতে Siri সেগুলি সঠিকভাবে শনাক্ত করতে শেখে।
Intents.intentdefinition-এ, প্রতিটি ইন্টেন্টের জন্য আপনি উদাহরণ বাক্য নির্দিষ্ট করতে পারেন — ব্যবহারকারী ইন্টেন্ট সক্রিয় করতে Siri-কে যে বাক্যাংশ বলবেন। উদাহরণ: “আমার অ্যাপে কফি অর্ডার করো”, “আমার অ্যাপকে পিৎজা রেসিপি খুঁজতে বলো”। Siri শনাক্তকরণ প্রশিক্ষণের জন্য এই বাক্যাংশগুলি ব্যবহার করে এবং Shortcuts সেটআপ করার সময় ব্যবহারকারীকে সাজেস্ট করে।
// Intents.intentdefinition (ভিজুয়াল এডিটর)
Intent: OrderCoffeeIntent
Parameters:
- beverage (String)
- size (String)
- quantity (Integer)
Response:
- orderNumber (String)
- price (CurrencyAmount)
Phrases:
- "Order coffee in MyApp"
- "Get a latte from MyApp"
INUIHostedViewProviding একটি প্রোটোকল যা Intents Extension-কে কমান্ড কার্যকর করার আগে Siri-এর ভিতরে কাস্টম ইন্টারফেস দেখাতে দেয়। উদাহরণস্বরূপ, রাইড বুক করার সময়, এক্সটেনশন রুট এবং খরচ সহ একটি মানচিত্র প্রদর্শন করতে পারে এবং ব্যবহারকারী ট্যাপ করে কাজটি নিশ্চিত করে।
প্রোটোকল মেথড configure(with:for:completion:) সংজ্ঞায়িত করে, যেখানে এক্সটেনশন ইন্টেন্ট গ্রহণ করে এবং Siri-তে এম্বেড করার জন্য UIViewController ফেরত দেয়। কন্ট্রোলারের আকার সীমিত — সর্বোচ্চ উচ্চতা ২০০ পয়েন্ট। মূল তথ্য সহ কম্প্যাক্ট কার্ড ব্যবহার করার পরামর্শ দেওয়া হয়: পরিমাণ, সময়, ঠিকানা।
কাস্টম ইন্টারফেস ঐচ্ছিক — যদি এক্সটেনশন INUIHostedViewProviding বাস্তবায়ন না করে, Siri ইন্টেন্ট টাইপ এবং অ্যাপের নাম সহ একটি স্ট্যান্ডার্ড কার্ড প্রদর্শন করে। বেশিরভাগ ইন্টেন্টের জন্য, স্ট্যান্ডার্ড UI যথেষ্ট, এবং Apple শুধুমাত্র তখনই কাস্টম ইন্টারফেস যোগ করার পরামর্শ দেয় যখন এটি সত্যিই বোধগম্যতা উন্নত করে — উদাহরণস্বরূপ, একটি রুট প্রদর্শন বা পেমেন্ট নিশ্চিত করার জন্য।
অর্থ或个人 ডেটা সম্পর্কিত ইন্টেন্টের জন্য, প্রমাণীকরণ প্রয়োজন। INIntentResponse requiresAuthentication কোড সমর্থন করে, যা কার্যকর করার আগে Siri-কে Face ID বা Touch ID অনুরোধ করতে বাধ্য করে। প্রমাণীকরণের পরে, এক্সটেনশন একটি পৃথক handle কলের মাধ্যমে নিশ্চিতকরণ পায়, যেখানে প্রমাণীকরণ অবস্থা যাচাই করা হয়।
Apple বিশেষভাবে জোর দেয়: Intents Extension-এর নিজস্ব পাসওয়ার্ড বা বায়োমেট্রিক্স অনুরোধ করা উচিত নয় — সিস্টেম প্রমাণীকরণ ব্যবহার করা হয়। অ্যাপ এবং এক্সটেনশনের মধ্যে শেয়ার্ড অ্যাক্সেস সহ Keychain-এ অ্যাক্সেস টোকেন সংরক্ষণ করা দীর্ঘস্থায়ী সেশনের জন্য মানক অনুশীলন।
class IntentViewController: UIViewController {
func configure(
with intent: INIntent,
completion: @escaping
(UIViewController?) -> Void
) {
let cardView = ConfirmationCardView()
let hostingController =
UIHostingController(rootView: cardView)
completion(hostingController)
}
}
সচরাচর জিজ্ঞাস্য
হ্যাঁ, এক্সটেনশন ভয়েস ইনপুট ছাড়া Shortcuts অ্যাপ থেকে ইন্টেন্ট প্রক্রিয়া করতে পারে। ব্যবহারকারী প্রস্তাবিত কর্ম থেকে শর্টকাট তৈরি করে, এবং এক্সটেনশন এটি Siri-এর অংশগ্রহণ ছাড়াই কার্যকর করে।
কাস্টম ইন্টেন্ট iOS 14 এবং পরবর্তী সংস্করণে উপলব্ধ। iOS 10–13-এর জন্য, শুধুমাত্র স্ট্যান্ডার্ড SiriKit ডোমেন উপলব্ধ। কাস্টম ইন্টেন্টের জন্য Intents.intentdefinition এবং Swift ক্লাস জেনারেশন প্রয়োজন।
Siri এক্সটেনশনের প্রতিক্রিয়ার জন্য প্রায় ১৫ সেকেন্ড অপেক্ষা করে। সীমা অতিক্রম করলে, Siri ব্যবহারকারীকে জানায় যে কাজটি সম্পূর্ণ করা যায়নি। দীর্ঘস্থায়ী অপারেশনের জন্য, inProgress প্রতিক্রিয়া কোড ব্যবহার করুন।
মূল অ্যাপ এবং এক্সটেনশনের মধ্যে অ্যাক্সেস গ্রুপের মাধ্যমে শেয়ার্ড অ্যাক্সেস সহ Keychain ব্যবহার করুন। App Group shared UserDefaults একটি বিকল্প কিন্তু নিরাপত্তায় Keychain-এর চেয়ে নিম্নমানের।
Intents Extension লজিক পরিচালনা করে — resolve, confirm, handle। Intents UI Extension INUIHostedViewProviding-এর মাধ্যমে Siri-এর ভিতরে প্রদর্শনের জন্য কাস্টম ইন্টারফেস সরবরাহ করে। দুটো একসঙ্গে কাজ করতে পারে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন