online - Obtener ubicación de Alexa Skills Kit(ASK)
amazon alexa consola (5)
Estoy buscando una forma de obtener la ubicación del usuario, idealmente longitud / latitud, pero la dirección también funcionaría, desde la solicitud del Kit de Habilidad de Alexa hasta mi habilidad personalizada. Además, no quiero tener que el enlace del usuario a una cuenta del lado de mi aplicación.
es posible? ¿Si es así, cómo?
Ahora es posible obtener la geolocalización en tiempo real del usuario (longitud / latitud) utilizando los Servicios de Localización de Alexa , lo que evita tener que integrarse con una API de geocodificación separada como lo sugieren otras respuestas. Consulte la publicación de blogpost relacionada para obtener información oficial sobre el lanzamiento de esta característica.
Siempre que el dispositivo sea compatible ( context.System.device.supportedInterfaces.Geolocation
existe), los servicios de ubicación se están ejecutando y alexa::devices:all:geolocation:read
se ha otorgado permiso de alexa::devices:all:geolocation:read
a su habilidad, puede recuperar un objeto Geolocation
a través del contexto de la solicitud, que será equivalente a la siguiente carga de JSON:
"Geolocation":{
"locationServices": {
"access": "ENABLED",
"status": "RUNNING",
},
"timestamp": "2018-03-25T00:00:00Z+00:00",
"coordinate": {
"latitudeInDegrees": 38.2,
"longitudeInDegrees": 28.3,
"accuracyInMeters": 12.1
},
"altitude": {
"altitudeInMeters": 120.1,
"accuracyInMeters": 30.1
},
"heading": {
"directionInDegrees": 180.0,
"accuracyInDegrees": 5.0
},
"speed": {
"speedInMetersPerSecond": 10.0,
"accuracyInMetresPerSecond": 1.1
}
}
Amazon ahora (2017-04-05) ha agregado esta capacidad. Vea la publicación de su blog sobre su nueva API de dirección de dispositivo .
Usando esta nueva API, puede obtener la dirección (ya sea el código postal o la dirección completa) del dispositivo, como se especifica en la configuración del dispositivo del cliente.
A partir de eso, puede usar una API de geocodificación (como la que forma parte de la API de Google Maps) para traducir la dirección en coordenadas de ubicación.
Como lo señaló @Tom, ahora es posible obtener la dirección del dispositivo en su habilidad personalizada. Si estás usando Python para crear tu habilidad, es bastante fácil implementar la nueva API. He escrito un blog detallado al respecto here . También describe cómo obtener las coordenadas correspondientes para la dirección recuperada, por lo que podría ser útil para usted. En resumen, aquí hay una función de Python para que comiences. Utilizo la muy útil biblioteca Flask-Ask para mi habilidad. Por lo tanto, es fácil obtener el valor de los objetos deviceId y consentToken. Estos están incluidos por Alexa en la solicitud JSON enviada a tu habilidad. Son necesarios para construir la solicitud para el punto final de la API de dirección de Amazon:
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 función devolverá algo como esto en una llamada exitosa:
{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}
Puedes usar geopy para convertir esta dirección en coordenadas.
Según este hilo en los foros de desarrolladores de Amazon , no hay actualmente (a partir de mayo de 2016) una forma de obtener la ubicación del usuario a través de las API disponibles públicamente. Las únicas habilidades capaces de hacerlo, como Uber o Domino''s, son utilizar API que no están disponibles a través del Kit de habilidades de Alexa. Sin embargo, hay esperanza de que se pueda agregar, ya que "Jamie @ Amazon" dejó esta respuesta en esa discusión:
Hola,
Gracias por publicar.
Esto ahora se ha añadido a la hoja de ruta. Gracias por la respuesta.
Jamie
Sin embargo, en el momento de redactar este documento, no se ha proporcionado ninguna actualización adicional con respecto a la implementación de dicha característica.
Sigue la URL a continuación para obtener la ubicación del kit de habilidades de Alexa (ASK)
URL: https://api.eu.amazonalexa.com/v1/devices/{devicesId}/settings/address/countryAndPostalCode
Su encabezado sería algo como a continuación:
Host:api.eu.amazonalexa.com[keep your host you can get is from developer account during testing from json] Accept:application/json Authorization:Bearer [KEEP YOUR apiAccessToken here]
Si la solicitud fue exitosa, obtendrás una respuesta de la siguiente manera:
{ "countryCode": "IN", "postalCode": "560102" }
Asegúrate de haber habilitado el permiso en la aplicación Alexa, y otorga el permiso de la habilidad respectiva, consulta la siguiente URL para obtener más detalles sobre la configuración de permisos