2016-05-02 17 views
14

Tôi đang tìm cách để có được vị trí của người dùng, kinh độ/vĩ độ lý tưởng nhưng địa chỉ cũng sẽ hoạt động, từ yêu cầu Bộ kỹ năng Alexa đến kỹ năng tùy chỉnh của tôi. Ngoài ra, tôi không muốn phải có liên kết người dùng đến tài khoản ở phía ứng dụng của tôi.Tìm vị trí từ Bộ kỹ năng Alexa (ASK)

Điều này có khả thi không? Nếu vậy, làm thế nào?

Trả lời

5

Theo this thread on the Amazon Developer forums, hiện tại không có (tính đến tháng 5 năm 2016) là cách để có được vị trí của người dùng qua API công khai. Các kỹ năng duy nhất có thể làm như vậy, chẳng hạn như Uber hoặc Domino's, đang sử dụng các API không có sẵn thông qua Bộ kỹ năng Alexa. Tuy nhiên, có hy vọng rằng nó có thể được thêm vào, như "Jamie @ Amazon" trái trả lời này trong cuộc thảo luận rằng:

Hey ở đó,

Cám ơn gửi bài.

Điều này hiện đã được thêm vào lộ trình. Cảm ơn vì bạn đã phản hồi.

Jamie

Tuy nhiên, tại thời điểm viết bài, không cập nhật thêm đã được cung cấp liên quan đến việc thực hiện một tính năng như vậy.

12

Amazon hiện đã có (2017-04-05) đã thêm khả năng này. Xem their blog post về số Device Address API mới của họ.

Sử dụng API mới này, bạn có thể nhận địa chỉ (mã bưu chính hoặc địa chỉ đầy đủ) của thiết bị, như được chỉ định trong cài đặt thiết bị của khách hàng.

Từ đó bạn có thể sử dụng API mã hóa địa lý (như là một phần của API Google Maps) để dịch địa chỉ này thành tọa độ vị trí.

1

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 độ .

+0

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

+0

'pip install flask-ask' là đủ. Bạn nên kiểm tra tài liệu: https://flask-ask.readthedocs.io – mc51

Các vấn đề liên quan