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 .
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
'pip install flask-ask' sollte genug sein. Sie sollten die Dokumentation überprüfen: https://flask-ask.readthedocs.io – mc51