2016-05-02 16 views
14

Sto cercando un modo per ottenere la posizione dell'utente, idealmente longitudine/latitudine, ma l'indirizzo potrebbe funzionare anche, dalla richiesta Alexa Skill Kit alla mia abilità personalizzata. Inoltre, non voglio avere il link dell'utente a un account sul lato della mia app.Ottieni posizione da Alexa Skills Kit (ASK)

È possibile? Se é cosi, come?

risposta

5

Come da this thread on the Amazon Developer forums, non è attualmente (a partire da maggio 2016) un modo per ottenere la posizione dell'utente tramite le API pubblicamente disponibili. Le uniche abilità in grado di farlo, come Uber o Domino, sono l'utilizzo di API che non sono disponibili tramite Alexa Skills Kit. Tuttavia, c'è speranza che possa essere aggiunto, come "Jamie @ Amazon" ha lasciato questa risposta in quella discussione:

Hey there,

Grazie per la pubblicazione.

Ora è stato aggiunto alla tabella di marcia. Grazie per il feedback.

Jamie

Tuttavia, al momento della scrittura, è stata fornita alcuna ulteriore aggiornamento relativo alla realizzazione di tale caratteristica.

12

Amazon ha ora (2017-04-05) ha aggiunto questa funzionalità. Vedi their blog post sul loro nuovo Device Address API.

Utilizzando questa nuova API è possibile ottenere l'indirizzo (codice postale o indirizzo completo) del dispositivo, come specificato nelle impostazioni del dispositivo del cliente.

Da ciò è possibile utilizzare un'API di geocodifica (come fa parte dell'API di Google Maps) per tradurre l'indirizzo in coordinate di posizione.

1

Come ha sottolineato @Tom, ora è possibile ottenere l'indirizzo del dispositivo nella propria competenza personalizzata. Se stai usando Python per creare le tue abilità, è abbastanza semplice implementare la nuova API. Ho scritto un post sul blog dettagliato su di esso here. Descrive anche come ottenere le coordinate corrispondenti per l'indirizzo recuperato, quindi potrebbe essere utile per te. In breve, ecco una funzione Python per iniziare. Uso la molto pratica libreria Flask-Ask per le mie capacità. Pertanto, è facile ottenere il valore degli oggetti DeviceId e AllowToken. Questi sono inclusi da Alexa nella richiesta JSON inviata alla tua abilità. Essi sono necessari per la costruzione della richiesta per l'Amazzonia indirizzo API endpoint:

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

La funzione restituirà qualcosa di simile su una chiamata di successo:

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

È possibile utilizzare geopy per convertire questo indirizzo per le coordinate .

+0

come si aggiunge la libreria flask_ask? Ho provato il codice di cui sopra ma ora fa fallire la mia funzione lambda quando tenta di importare i moduli flask_ask all'inizio – thefragileomen

+0

'pipe install flask-ask' dovrebbe essere sufficiente. Dovresti controllare la documentazione: https://flask-ask.readthedocs.io – mc51

Problemi correlati