Như @Tom đã chỉ ra, giờ đây bạn có thể nhận địa chỉ thiết bị trong kỹ năng tùy chỉnh của mình. Nếu bạn đang sử dụng Python để tạo ra kỹ năng của bạn, nó khá dễ dàng để thực hiện các API mới. Tôi đã viết một bài đăng blog chi tiết về nó here. Nó cũng mô tả cách để có được tọa độ tương ứng cho địa chỉ được truy xuất, vì vậy nó có thể hữu ích cho bạn. Tóm lại, đây là một hàm Python để giúp bạn bắt đầu. Tôi sử dụng thư viện Flask-Ask rất tiện dụng cho kỹ năng của mình. Vì vậy, thật dễ dàng để có được giá trị của các đối tượng deviceId và agreementToken. Chúng được bao gồm bởi Alexa trong yêu cầu JSON được gửi đến kỹ năng của bạn. Họ là cần thiết để xây dựng các yêu cầu đến Amazon địa chỉ 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())
Chức năng sẽ trở lại một cái gì đó như thế này trên một cuộc gọi thành công:
{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}
Bạn có thể sử dụng geopy để chuyển đổi địa chỉ này để tọa độ .
làm thế nào để bạn thêm thư viện flask_ask? Tôi đã thử các mã trên nhưng nó bây giờ làm cho chức năng lambda của tôi không thành công khi nó cố gắng để nhập khẩu các mô-đun flask_ask lúc bắt đầu – thefragileomen
'pip install flask-ask' là đủ. Bạn nên kiểm tra tài liệu: https://flask-ask.readthedocs.io – mc51