2016-05-02 27 views
14

से स्थान प्राप्त करें मैं उपयोगकर्ता के स्थान, आदर्श देशांतर/अक्षांश प्राप्त करने का एक तरीका ढूंढ रहा हूं लेकिन पता भी मेरे कस्टम कौशल के लिए एलेक्सा कौशल किट अनुरोध से काम करेगा। साथ ही, मैं उपयोगकर्ता को अपने ऐप के पक्ष में किसी खाते से लिंक नहीं करना चाहता हूं।एलेक्सा स्किल्स किट (एएसके)

क्या यह संभव है? यदि हां, तो कैसे?

उत्तर

5

this thread on the Amazon Developer forums के अनुसार, वर्तमान में (मई 2016 तक) सार्वजनिक रूप से उपलब्ध एपीआई के माध्यम से उपयोगकर्ता स्थान प्राप्त करने का एक तरीका नहीं है। ऐसा करने में सक्षम कौशल, जैसे कि उबर या डोमिनोज़, एपीआई का उपयोग कर रहे हैं जो एलेक्सा स्किल्स किट के माध्यम से उपलब्ध नहीं हैं।

देखिए,

पोस्टिंग के लिए धन्यवाद: हालांकि, वहाँ आशा है कि यह जोड़ा जा सकता है है, के रूप में "जेमी @ अमेज़न" है कि चर्चा में इस उत्तर छोड़ दिया है।

अब इसे रोडमैप में जोड़ा गया है। प्रतिक्रिया के लिए धन्यवाद।

जेमी

हालांकि, लेखन के समय, आगे कोई अद्यतन एक ऐसी विशेषता के कार्यान्वयन के बारे में प्रदान की गई है।

12

अमेज़ॅन अब (2017-04-05) ने इस क्षमता को जोड़ा है। अपने नए Device Address API के बारे में their blog post देखें।

इस नए एपीआई का उपयोग करके आप डिवाइस की पता (या तो पोस्टल कोड या पूरा पता) प्राप्त कर सकते हैं, जैसा कि ग्राहक की डिवाइस सेटिंग्स में निर्दिष्ट है।

इससे आप स्थान समन्वय में पते का अनुवाद करने के लिए एक geocoding API (जैसे कि Google मानचित्र API का हिस्सा) का उपयोग कर सकते हैं।

1

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

import requests 
from flask_ask import Ask, context 

def get_alexa_location(): 
    URL = "https://api.amazonalexa.com/v1/devices/{}/settings" \ 
      "/address".format(context.System.device.deviceId) 
    TOKEN = context.System.user.permissions.consentToken 
    HEADER = {'Accept': 'application/json', 
      'Authorization': 'Bearer {}'.format(TOKEN)} 
    r = requests.get(URL, headers=HEADER) 
    if r.status_code == 200: 
     return(r.json()) 

समारोह एक सफल फोन पर कुछ इस तरह वापस आ जाएगी:

{u'city': u'Berlin', u'countryCode': u'DE', 
u'addressLine1': u'42 Unter den Linden', 
u'addressLine2': None, u'stateOrRegion': u'Berlin', 
u'districtOrCounty': u'Berlin', u'postalCode': u'10117', 
u'addressLine3': None} 

आप geopy उपयोग कर सकते हैं निर्देशांक को यह पता कन्वर्ट करने के लिए ।

+0

हालांकि आप flask_ask लाइब्रेरी को कैसे जोड़ते हैं? मैंने उपर्युक्त कोड की कोशिश की है, लेकिन अब यह मेरा लैम्ब्डा फ़ंक्शन विफल करता है जब यह – thefragileomen

+0

'पाइप इंस्टॉल फ्लास्क-पूछ' में फ्लास्क_स्क मॉड्यूल आयात करने का प्रयास करता है, तो पर्याप्त होना चाहिए। आपको दस्तावेज़ीकरण की जांच करनी चाहिए: https://flask-ask.readthedocs.io – mc51

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