14

एक अमेज़न एलेक्सा कौशल अनुरोध में एक userId नहीं है और मैं समझता हूँ कि यह क्या है कोशिश कर रहा हूँ और अगर वहाँ इसके लिए कुछ संदर्भ है क्योंकि मैं लिंक करना चाहता हूं और अमेज़ॅन इको उपयोगकर्ता खाता अपने स्वयं के ऐप में एक खाता है और ऐसा करने के लिए मुझे कुछ प्रकार के स्थैतिक उपयोगकर्ता के साथ काम करना होगा।अमेज़न एलेक्सा कौशल किट: आप कैसे बाहरी एप्लिकेशन खाते से लिंक/userId कर

उदाहरण अनुरोध:

{ 
"version": "1.0", 
"session": { 
    "new": false, 
    "application": { 
    "applicationId": "amzn1.echo-sdk-ams.app.[unique-value-here]" 
    }, 
    "sessionId": "session1234", 
    "attributes": {}, 
    "user": { 
    "userId": null //IS THERE A DETAILED REFERENCE OF THIS SOMEWHERE? 
    } 
}, 
"request": { 
"type": "IntentRequest", 
"requestId": "request5678", 
"intent": { 
    "name": "MyColorIsIntent", 
    "slots": { 
    "Color": { 
     "name": "Color", 
     "value": "blue" 
    } 
    } 
} 
} 
} 

उत्तर

9

मुझे नहीं पता कि मूल उत्तर क्यों हटा दिया गया है लेकिन अमेज़ॅन अब आपको अपने सिस्टम में किसी उपयोगकर्ता के साथ एक Alexa उपयोगकर्ता को लिंक करने देता है। यहां announcement है।

कैसे अंतिम उपयोगकर्ताओं को खाता सेट करें एक कौशल के लिए लिंक करने

उपयोगकर्ता अमेज़न एलेक्सा एप्लिकेशन का उपयोग करके अपने खातों को लिंक। ध्यान दें कि उपयोगकर्ता ऐप का उपयोग करना चाहिए। ध्वनि द्वारा पूरी तरह से लिंक स्थापित करने के लिए कोई समर्थन नहीं है।

उपयोगकर्ता सामान्य रूप से प्रक्रिया शुरू जब शुरू में एप्लिकेशन में अपने कौशल को सक्षम करने:

  1. एलेक्सा ऐप्लिकेशन में, उपयोगकर्ता कौशल सक्षम बनाता है।
  2. ऐप डेवलपर पोर्टल पर अपने कौशल को पंजीकृत करते समय आपके द्वारा प्रदान किए गए प्राधिकरण URL का उपयोग करके ऐप के भीतर अपना लॉगिन पृष्ठ प्रदर्शित करता है। जब साथी ऐप इस यूआरएल को कॉल करता है, इसमें राज्य, क्लाइंट_आईडी, और स्कूप क्वेरी स्ट्रिंग पैरामीटर के रूप में शामिल है।

    • खाता लिंकिंग प्रक्रिया के दौरान एलेक्सा सेवा द्वारा राज्य का उपयोग किया जाता है। आपके पृष्ठ को इस मान का ट्रैक रखने की आवश्यकता है, क्योंकि आपको
      इसे बाद में पास करना होगा।
    • ग्राहक_आईडी आपके द्वारा परिभाषित किया गया है। आपका लॉगिन पेज यह निर्धारित करने के लिए इसका उपयोग कर सकता है कि अनुरोध आपके एलेक्सा कौशल से आया था।
    • दायरा एक्सेस स्कॉप्स की एक वैकल्पिक सूची है जो अनुरोध के स्तर का संकेत देती है। आपके कौशल के लिए खाता लिंकिंग सक्षम करते समय आप समर्थन के लिए स्कॉप्स के सेट को परिभाषित करते हैं।
  3. उपयोगकर्ता आपकी साइट के लिए अपने सामान्य प्रमाण-पत्रों का उपयोग करने में लॉग इन करता है।

  4. आपकी सेवा उपयोगकर्ता को प्रमाणित करती है और फिर एक एक्सेस टोकन उत्पन्न करती है जो आपके सिस्टम में उपयोगकर्ता को विशिष्ट रूप से पहचानती है।

  5. आपकी सेवा उपयोगकर्ता को अमेज़ॅन-विशिष्ट यूआरएल पर रीडायरेक्ट करती है और यूआरएल खंड में राज्य, access_token, और टोकन_टाइप के साथ गुजरती है।

  6. एलेक्सा सेवा लौटाई गई जानकारी को मान्य करती है और फिर Alexa उपयोगकर्ता के लिए access_token बचाती है।

इस बिंदु पर, कौशल सक्षम किया गया है, उपयोगकर्ता की एलेक्सा खाता आपकी सेवा में खाते से लिंक है, और कौशल इस्तेमाल किया जा करने के लिए तैयार है।

25

ग्रेट सवाल।

संक्षिप्त उत्तर: आपको अपने तीसरे पक्ष के उपयोगकर्ता और एलेक्सा उपयोगकर्ता आईडी के बीच अपनी खुद की जोड़ी बनाना होगा। एलेक्सा कौशल एसडीके में कोई अंतर्निहित समर्थन नहीं है जो आपको अपने उपयोगकर्ता आईडी के साथ एक Alexa उपयोगकर्ता आईडी को संबद्ध करने देता है। आपको एक विशिष्ट आवाज इरादा बनाना होगा जो एलेक्सा उपयोगकर्ता आईडी को आपके उपयोगकर्ता डीबी से जोड़ता है।

लंबा उत्तर: आइए प्रत्येक अनुरोध में आपको उस एलेक्सा उपयोगकर्ता आईडी के बारे में बात करके शुरू करें। आपको प्राप्त एलेक्सा उपयोगकर्ता आईडी एक एलडब्ल्यूए (लॉग इन-अमेज़ोन) उपयोगकर्ता आईडी है। एलेक्सा कौशल को भरोसेमंद उपयोगकर्ताओं को विश्वसनीय रूप से पहचानने की अनुमति देना प्राथमिक उद्देश्य है।

तो क्या काम नहीं करता है? जिस समस्या को आप चलाने जा रहे हैं वह यह है कि एलडब्ल्यूए उपयोगकर्ता आईडी हमेशा प्रत्येक एलेक्सा ऐप के लिए अनामित है। यह महत्वपूर्ण है क्योंकि यह सुनिश्चित करता है कि उपयोगकर्ताओं को ट्रैक नहीं किया जाता है; लेकिन यह आपको एलेक्सा उपयोगकर्ता आईडी को अपने स्वयं के LWA userID से संबद्ध करने से रोकता है।

"Login with Amazon - Developer Guide" से (पेज 10)

हर कंपनी है कि एक ग्राहक के लिए हो जाता है ही user_id अमेज़न के साथ लॉग इन करने के लिए वेबसाइटों या ऐप्लिकेशन पैदा करता है। हालांकि, जब कोई ग्राहक में किसी अन्य कंपनी के ऐप या साइट पर लॉग इन करता है, तो उपयोगकर्ता_आईडी अलग-अलग होगा। यह है इसलिए उपयोगकर्ता_आईडी का उपयोग वेब पर ग्राहकों को ट्रैक करने के लिए नहीं किया जा सकता है।

मैं क्या कह रहा हूँ कि आप बस iOS, Android या वेब क्षुधा में LWA लागू नहीं कर सकते और एक खाते के रूप में आप एक एलेक्सा userID के रूप में मिलेगा के लिए एक ही LWA userId प्राप्त करने की उम्मीद है। उदाहरण के लिए, यदि आप implemented LWA on your Android app एक था [email protected] उनके अमेज़न करने के लिए उपयोगकर्ता लॉगिन खाते से आप amzn1.account.123456 उपयोगकर्ता ID के रूप में मिल सकता है, लेकिन जब करने के लिए है कि एक ही [email protected] उपयोगकर्ता वार्ता उनके युग्मित इको आपको amzn1.account.98765 या कोई अन्य पूरी तरह से अलग उपयोगकर्ता आईडी प्राप्त होगा। मैं वास्तव में इस वास्तुकला के निर्माण के दो दिन बर्बाद कर दिया, जो मुझे पता है कि यह काम नहीं करता है।

तो काम क्या करता है? पिन प्रमाणीकरण की आवाज-केंद्रित भिन्नता सबसे अच्छी लगती है।

चलिए एक ही समस्या के साथ ऐप्स की एक और जगह देखें: टीवी ऐप्स (एक्सबॉक्स, एंड्रॉइड टीवी, आदि)। सामग्री में पहुंच प्राप्त करने के लिए उन बहुत से ऐप्स को लॉगिन करने की आवश्यकता होती है (उदा। हूलू, नेटफ्लिक्स, आदि)। लेकिन उपयोगकर्ता नाम और पासवर्ड दर्ज करने के लिए रिमोट कंट्रोल का उपयोग करना सिर्फ सादा पुराना खराब यूएक्स है। तो हमने टीवी ऐप के लिए क्या किया? उपयोगकर्ता myService.com/tv पर जाते हैं, अपने खाते में लॉगिन करते हैं और एक विशेष लघु, संख्यात्मक और समय-संवेदनशील पिन कोड प्राप्त करते हैं जो वे अपने टीवी में इनपुट कर सकते हैं।

जब मैं एक एलेक्सा कौशल लागू कर रहा था तो हमने एक समान दृष्टिकोण लेने का फैसला किया। उपयोगकर्ता हमारी वेबसाइट, आईओएस ऐप या एंड्रॉइड ऐप में लॉग इन करेंगे, एक समर्पित इको पेज पर जाएं और फिर पिन कोड प्राप्त करें। ऑन-स्क्रीन निर्देशों जो कुछ इस तरह लिखा होगा: अपने इको को

जाओ और कहते हैं:

'लॉन्च foo'

'मेरा पिन एक दो तीन चार है'

हमारे foo कौशल में हम एक PairingIntent इरादे को सुनने के लिए है "मेरी पिन है {एक दो तीन चार | पिनकोड} "नमूना उच्चारण। एक PairingIntent प्राप्त करने के बाद हम जांच करेंगे कि क्या पिन कोड मान्य था और यदि ऐसा है तो हमारे उपयोगकर्ता डीबी के साथ एलेक्सा उपयोगकर्ता आईडी। यदि पिन मान्य था तो इको कुछ कहेंगे "ओह, हाय वहाँ बॉब! अब आपके पास अपनी सभी भयानक सामग्री तक पहुंच है।"। यदि पिन कोड वैध एलेक्सिया नहीं था, तो उपयोगकर्ताओं को फिर से प्रयास करने के लिए संकेत मिलेगा।

उम्मीद है कि यह समझ में आता है। एलेक्सा कौशल के साथ तीसरे पक्ष के खातों को जोड़ने के लिए अन्य विकल्प हैं लेकिन यह आवाज-पिन दृष्टिकोण सबसे सरल है।

+2

सर्वोत्तम उत्तर कभी भी – Zigglzworth

+0

सही उत्तर देता है, और एक बाहरी सेवा के साथ जोड़े को एक Alexa कौशल बनाने में अंतर्दृष्टि के लिए धन्यवाद। – JamesQMurphy

+1

उत्तर हटाने के लिए कोई कारण? –

1

एलेक्सा कौशल को दिए गए उपयोगकर्ता को प्रति उपयोगकर्ता अद्वितीय होने की गारंटी है। यह डेवलपर आईडी के अनुसार अनामित है, इसलिए यह आपके सभी कौशल में समान होगा, लेकिन यह डेवलपर से डेवलपर से अलग होगा। इसे किसी वास्तविक दुनिया आईडी पर स्पष्ट रूप से लिंक करने का कोई तरीका नहीं है। आपको वह खुद करना है। मेरी सामान्य सिफारिश इसे फ़ायरफ़ॉक्स सिंक की तरह करना है। यदि आपका एलेक्सा कौशल और आपका एप्लिकेशन बैक-एंड साझा करता है, तो जब कोई उपयोगकर्ता एलेक्सा से सिंक करना चाहता है, तो 4-वर्ण सिंक कोड जेनरेट करें, इसे पीछे के अंत में स्टोर करें, इसे उपयोगकर्ता को पढ़ें, और उन्हें जाने के लिए कहें वेबसाइट पर और इसे टाइप करें। वेबसाइट पर, जब वे एक सिंक कोड देते हैं, तो इसे मेल करें और दोनों के बीच अपना लिंक बनाएं। मैं इस बारे में my book में थोड़ा और विस्तार से बात करता हूं, लेकिन यह इसका सारांश है।

0

एक अमेज़ॅन एलेक्सिया कौशल अनुरोध में मैं इसे उपयोगकर्ता नाम से बांधने की कोशिश कर रहा हूं।

जैसा कि आप एक वास्तविक उपयोगकर्ता नाम नहीं प्राप्त कर सकते हैं। लेकिन, अधिक पूर्ण होने के लिए अलग-अलग तरीके हैं जिनका उपयोग आप करने की कोशिश कर रहे हैं। यह इस बात पर निर्भर करेगा कि आप कौन सा कौशल हासिल कर रहे हैं यह जानने के लिए कि आपके लिए कौन सा दृष्टिकोण है।

आपके विकल्प हैं:

  1. एलेक्सा उपयोगकर्ता के लिए आपके सिस्टम में एक उपयोगकर्ता नाम लिंक करना। उस स्थिति में आपको उपयोगकर्ता का नाम नहीं मिलता है। आपको टोकन मिलता है, और आप उस टोकन का उपयोग करके अपने सिस्टम में उपयोगकर्ता नाम को एक साथ जोड़ देंगे। पढ़ें: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system

  2. यदि आप जो करने का प्रयास कर रहे हैं, वह सिर्फ एक उपयोगकर्ता को दूसरे से पहचानने के लिए है, लेकिन आप उस उपयोगकर्ता पर किसी विशेष जानकारी की परवाह नहीं करते हैं या इसकी आवश्यकता नहीं है। अनुरोध उपयोगकर्ता (session.user.userId) के साथ आता है। यह एक यादृच्छिक चरित्र स्ट्रिंग है जो उस उपयोगकर्ता को उनके द्वारा भेजे गए सभी अनुरोधों की पहचान करेगी, लेकिन आपको उनके बारे में कुछ भी नहीं बताती है। पढ़ें: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interface-reference

  3. आप एक ऐसा इरादा रख सकते हैं जो "SetUser" जैसा कुछ होगा और उपयोगकर्ता को वह उपयोगकर्ता नाम बोलने दें जो वे चाहते हैं। फिर आप कहीं भी कुछ डेटा स्टोरेज में उन्हें एक साथ जोड़ने के लिए ऊपर # 2 का उपयोग कर सकते हैं। मुझे नहीं पता कि अमेज़ॅन इस मार्ग का समर्थन करता है हालांकि यह वास्तव में # 1 को रोकने का एक तरीका होगा। तो, यह इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। यदि आपको उपयोगकर्ता का उपयोग # 1 पर व्यक्तिगत जानकारी चाहिए। यदि आपको सिर्फ यह जानने की ज़रूरत है कि यह कुछ उपयोगकर्ता बनाम उपयोगकर्ता का उपयोग # 2 है।

संबंधित मुद्दे