2016-05-02 12 views
14

Ich bin auf der Suche nach einer Möglichkeit, den Standort des Benutzers zu erhalten, idealerweise Längengrad/Breitengrad aber Adresse würde auch funktionieren, von der Alexa Skill Kit Anfrage zu meiner benutzerdefinierten Fähigkeiten. Außerdem möchte ich nicht, dass der Nutzer auf der Seite meiner App auf ein Konto verweist.Holen Sie sich den Standort von Alexa Skills Kit (ASK)

Ist das möglich? Wenn das so ist, wie?

Antwort

5

Gemäß this thread on the Amazon Developer forums gibt es derzeit (Stand Mai 2016) keine Möglichkeit, den Benutzerstandort über die öffentlich verfügbaren APIs abzurufen. Die einzigen Fähigkeiten, die dazu in der Lage sind, wie Uber oder Domino, verwenden APIs, die im Alexa Skills Kit nicht verfügbar sind. Allerdings gibt es Hoffnung, dass es aufgenommen werden kann, wie "Jamie @ Amazon" verlassen diese Antwort in dieser Diskussion:

Hey,

Dank für die Buchung.

Dies wurde jetzt zur Roadmap hinzugefügt. Danke für die Rückmeldung.

Jamie

jedoch zum Zeitpunkt des Schreibens, kein weiteres Update hat in Bezug auf die Implementierung einer solchen Funktion versehen.

12

Amazon hat jetzt (2017-04-05) diese Funktion hinzugefügt. Siehe their blog post über ihre neue Device Address API.

Mit dieser neuen API können Sie die Adresse (entweder die Postleitzahl oder die vollständige Adresse) des Geräts abrufen, wie in den Geräteeinstellungen des Kunden angegeben.

Von diesem können Sie eine Geocodierungs-API (wie sie Teil der Google Maps-API ist) verwenden, um die Adresse in Standortkoordinaten zu übersetzen.

1

Wie @Tom darauf hingewiesen hat, ist es jetzt möglich, die Geräteadresse in Ihrer benutzerdefinierten Fähigkeit zu erhalten. Wenn Sie Python zum Erstellen Ihrer Fähigkeiten verwenden, ist es ziemlich einfach, die neue API zu implementieren. Ich habe einen ausführlichen Blogpost darüber geschrieben here. Es beschreibt auch, wie Sie die entsprechenden Koordinaten für die abgerufene Adresse erhalten, so dass es für Sie nützlich sein könnte. Kurz gesagt, hier ist eine Python-Funktion, die Ihnen den Einstieg erleichtert. Ich benutze die sehr praktische Flask-Ask-Bibliothek für meine Fähigkeiten. Daher ist es einfach, den Wert der Objekte deviceId und consentToken zu ermitteln. Diese werden von Alexa in die JSON-Anfrage aufgenommen, die an Ihre Fertigkeit gesendet wird. Sie sind für den Aufbau der Anfrage an den Amazon-Adresse API Endpunkt benötigt:

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()) 

Die Funktion wird so etwas wie dies auf einem erfolgreichen Aufruf zurück:

{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} 

Sie können geopy diese Adresse in Koordinaten umwandeln .

+0

Wie fügen Sie die flask_ask-Bibliothek hinzu? Ich habe den obigen Code ausprobiert, aber es macht jetzt meine Lambda-Funktion scheitern, wenn es versucht, die Flask_ask-Module am Anfang zu importieren – thefragileomen

+0

'pip install flask-ask' sollte genug sein. Sie sollten die Dokumentation überprüfen: https://flask-ask.readthedocs.io – mc51

Verwandte Themen