公式ドキュメントとかには載ってなくて、フォーラムとか見てると突然チュートリアルとかで出てきて、これで取れるYO!じゃあドキュメントに書けよ!みたいな、Voiceflowの隠れたオブジェクトです。たぶん一部にはニーズが有るはず。こんな感じ。
_system = { "application": { "applicationId": "amzn1.ask.skill.xxxxxxxxxx" }, "user": { "userId": "amzn1.ask.account.xxxxxxxxxx" }, "device": { "deviceId": "amzn1.ask.device.xxxxxxxxxx", "supportedInterfaces": { "AudioPlayer": {}, "Display": { "templateVersion": "1.0", "markupVersion": "1.0" }, "Alexa.Presentation.APL": { "runtime": { "maxVersion":"1.0" } }, "VideoApp": {}, "Geolocation": {} } }, "apiEndpoint": "https://api.xx.amazonalexa.com", "apiAccessToken": "xxxxxxxxxx" }
要は、ほぼほぼhandlerInput.requestEnvelope.context.System ですね。
も一つ。
voiceflow = { "permissions": [], "events": [], "capabilities": { "AudioPlayer": {}, "Display": { "templateVersion": "1.0", "markupVersion":"1.0" }, "Alexa.Presentation.APL": { "runtime": { "maxVersion": "1.0" } }, "VideoApp": {}, "Geolocation": {} } }
こっちはパーミッションとかですね。プロアクティブイベントAPI用のイベントも見えますね。ちなみに、都合上まるっと全部書いてますけど、GeolocationはAlexaアプリだけだし、AlexaアプリだとAPLは出てきませんのでご注意ください。
どっちもCode Blockとかから呼び出して変数に入れれば使えます。特に最初のやつはAlexaのサービスAPIを叩くのに必要な情報が入っているので、これ使うといろいろできて可能性が広がりますね。(Permission Blockが対応してないとかはありますけどね・・・)
これを使ってデバイスアドレスAPI叩いて所在地情報から雨雲レーダーの画像を引っ張ってくるサンプルスキルがこんな感じでできます。もちろんAPL使えますよ。
以下LT資料に書いてます。APIブロックの設定例も載せてますのでご参考までに。