Intents Extension एक iOS एक्सटेंशन है जो तृतीय-पक्ष ऐप्स को Siri के वॉइस कमांड प्रोसेस करने और SiriKit के माध्यम से सिस्टम सेवाओं के साथ इंटरैक्ट करने की अनुमति देता है। ऐप Intents.intentdefinition में अपने स्वयं के इंटेंट परिभाषित करता है, INIntentHandler पर आधारित हैंडलर लागू करता है, और उन्हें वॉइस फ्रेज़ पहचान के लिए रजिस्टर करता है। Apple Developer Documentation (2025) के अनुसार, SiriKit 20 से अधिक इंटेंट डोमेन का समर्थन करता है — संदेशों और भुगतानों से लेकर वर्कआउट और बुकिंग तक — और 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 कस्टम इंटेंट में 5 पैरामीटर से अधिक न शामिल करने की सलाह देता है — अत्यधिक पैरामीटर वॉइस पहचान को ख़राब करते हैं और उपयोगकर्ता अनुभव को जटिल बनाते हैं। प्रत्येक पैरामीटर के लिए, 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 लौटाता है। कंट्रोलर का आकार सीमित है — अधिकतम ऊँचाई 200 पॉइंट। मुख्य जानकारी वाले कॉम्पैक्ट कार्ड का उपयोग करने की अनुशंसा की जाती है: राशि, समय, पता।
कस्टम इंटरफ़ेस वैकल्पिक है — यदि एक्सटेंशन 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 एक्सटेंशन से लगभग 15 सेकंड तक प्रतिक्रिया की प्रतीक्षा करता है। सीमा पार होने पर, Siri उपयोगकर्ता को सूचित करता है कि कार्य पूरा नहीं किया जा सका। लंबे ऑपरेशन के लिए, inProgress प्रतिक्रिया कोड का उपयोग करें।
मुख्य ऐप और एक्सटेंशन के बीच एक्सेस ग्रुप के माध्यम से साझा पहुँच के साथ Keychain का उपयोग करें। App Group shared UserDefaults एक विकल्प है लेकिन सुरक्षा में Keychain से कमतर है।
Intents Extension तर्क संभालता है — resolve, confirm, handle। Intents UI Extension INUIHostedViewProviding के माध्यम से Siri के अंदर प्रदर्शन के लिए कस्टम इंटरफ़ेस प्रदान करता है। दोनों एक साथ काम कर सकते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें