2017-07-29 9 views
0

So habe ich geschafft, meine erste Alexa-Fähigkeit zu bauen und es auf meinem Echo zu testen, es funktioniert gut mit den zurückgegebenen Antworten funktioniert gut.Erhalten von Postleitzahl mit Python 2.7 in Alexa Skill

Ich bin jetzt auf der Suche nach den Möglichkeiten meines Geräts zu erweitern und ich möchte die Postleitzahl mit den Geräteeinstellungen erhalten. Ich habe den Zugriff darauf im Rahmen meiner Fähigkeitenerstellung aktiviert und ich habe gelesen, dass du diese Funktionalität nicht als Teil der Fertigkeitserstellung testen kannst und sie direkt auf deinem Gerät testen musst.

Unten ist mein Code die Postleitzahl zu erhalten: -

def get_postcode(intent, session): 
    session_attributes = {} 
    reprompt_text = None 

    URL = "https://api.eu.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)} 
    response = urllib2.urlopen(URL, headers=HEADER) 
    data = json.load(response) 

    speech_output = "Your postcode is " + data['postalCode'] 
    should_end_session = True 

    return build_response(session_attributes, build_speechlet_response(
     intent['name'], speech_output, reprompt_text, should_end_session)) 

Leider, wenn ich dies testen, erhalte ich eine Antwort von meinem Echo, dass

„ein Problem mit der zurückgegebenen Antwort“ Irgendwelche Vorschläge? Ich fühle, dass meine Fähigkeit die richtige Absicht aufruft, aber das Lambda verarbeitet die Funktion nicht korrekt.

Antwort

0

Diese Funktion liefert eine dateiähnliche Objekt mit drei zusätzlichen Methoden:

geturl() — return the URL of the resource retrieved, commonly used to determine if a redirect was followed 
info() — return the meta-information of the page, such as headers, in the form of an mimetools.Message instance (see Quick Reference to HTTP Headers) 
getcode() — return the HTTP status code of the response. 

Bearbeiten Sie Ihre Frage und zeigen die Ausgabe der folgenden Optionen:

response = urllib2.urlopen(URL, headers=HEADER) 
print(response.geturl()) 
print(response.info()) 
print(response.getcode()) 
print(data) 
Verwandte Themen