ユーザーの位置、理想的には経度/緯度を取得する方法を探していますが、Alexa Skill Kit リクエストからカスタムスキルまで、住所も機能します。また、ユーザーがアプリ側のアカウントにリンクする必要はありません。
これは可能ですか?もしそうなら、どのように?
ユーザーの位置、理想的には経度/緯度を取得する方法を探していますが、Alexa Skill Kit リクエストからカスタムスキルまで、住所も機能します。また、ユーザーがアプリ側のアカウントにリンクする必要はありません。
これは可能ですか?もしそうなら、どのように?
@Tom が指摘したように、カスタム スキルでデバイス アドレスを取得できるようになりました。Python を使用してスキルを作成している場合、新しい API を実装するのは非常に簡単です。私はそれについての詳細なブログ投稿をここに書きました。また、取得した住所に対応する座標を取得する方法についても説明しているので、役に立つかもしれません。手短に言えば、ここにあなたが始めるための Python 関数があります。スキルには非常に便利な Flask-Ask ライブラリを使用しています。したがって、deviceId および consentToken オブジェクトの値を取得するのは簡単です。これらは、Alexaによってスキルに送信されるJSONリクエストに含まれます。これらは、Amazon アドレス API エンドポイントへのリクエストを作成するために必要です。
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())
呼び出しが成功すると、関数は次のようなものを返します。
{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}
geopyを使用して、この住所を座標に変換できます。
以下の URL に従って、Alexa Skills Kit (ASK) から位置情報を取得してください。
URL: https://api.eu.amazonalexa.com/v1/devices/{devicesId}/settings/address/countryAndPostalCode
ヘッダーは次のようになります。
ホスト: api.eu.amazonalexa.com[json からのテスト中に開発者アカウントから取得できるホストを維持する] 受け入れる:アプリケーション/json Authorization:Bearer [ここに apiAccessToken を保持]
リクエストが成功した場合、次のようなレスポンスが返されます:
{ "countryCode": "IN", "郵便番号": "560102" }
Alexa アプリで権限が有効になっていることを確認し、それぞれのスキルの権限を付与してください。権限設定の詳細については、次の URL を参照してください。