Alexaスキルのナビゲーション管理
自動車での移動中に車内でスキルを使用できるように、Echo Autoなどのデバイスで使用するAlexaスキルをデザインできます。ユーザーがナビゲーションに対応したAlexa搭載デバイスを所有している場合、スキルでナビゲーション関連の機能を提供できます。自動車スキルの詳細については、自動車運転用Alexaスキルを参照してください。
リクエスト内のNavigationインターフェースの有無
スキルサービスで、ユーザーのAlexa搭載デバイスがナビゲーションに対応しているかどうかを判断できます。スキルに送信されたリクエスト内で、devices.supportedInterfaces
オブジェクトにNavigation
が含まれているかどうかを確認します。Navigation
が存在する場合は、スキルでSetDestination
ディレクティブとCancelDestination
ディレクティブを使用して、ナビゲーションを管理できます。AudioPlayerの詳細については、AudioPlayerインターフェースのリファレンスを参照してください。位置情報の詳細については、Alexaスキル向け位置情報サービスを参照してください。
deviceオブジェクトの例
"device":
{
"deviceId": "amzn1.ask.device.",
"_deviceType": "<文字列>",
"rawDeviceId": "<文字列>",
"supportedInterfaces": {
"AudioPlayer": {},
"Geolocation": {},
"Navigation": {}
}
}
SetDestinationディレクティブ
SetDestination
ディレクティブによって、Alexaはユーザーのナビゲーション対応Alexa搭載デバイスで目的地を設定できます。これにより、ユーザーは目的地の場所へのナビゲーションを開始できます。さらに、デバイスに表示機能がある場合は、目的地の場所と共にナビゲーション情報も表示できます。SetDestination
ディレクティブを使用するスキルの応答には、目的地に関する特定の位置情報も含まれています。
応答のパラメーターの詳細については、カスタムスキルのJSONインターフェースのリファレンスを参照してください。
outputSpeech
、card
、reprompt
が含まれている場合、これらを空にすることはできません。ただし、それぞれを省略することは可能です。
Navigation.SetDestination
の応答の例
{
"outputSpeech": {<outputSpeechオブジェクト>},
"card": {<cardオブジェクト>},
"reprompt": {<repromptオブジェクト>},
"shouldEndSession": true,
"directives": [
{
"type": "Navigation.SetDestination",
"destination": {
"singleLineDisplayAddress": "2121 7th Ave Seattle, WA 98121",
"multipleLineDisplayAddress": "2121 7th Ave\nSeattle, WA 98121",
"name": "Example Corp.",
"coordinate": {
"latitudeInDegrees": 47.608013,
"longitudeInDegrees": -122.335167
}
},
"transportationMode": "DRIVING",
"metadata": {
"hoursOfOperation": [
{
"dayOfWeek": "MONDAY",
"hours": [
{
"open": "12:30:00-8:00",
"close": "1:00:00-8:00"
}
],
"status": "OPEN_DURING_HOURS"
},
{
"dayOfWeek": "TUESDAY",
"hours": [
{
"open": "12:30:00-8:00",
"close": "1:00:00-8:00"
}
],
"status": "OPEN_DURING_HOURS"
},
{
"dayOfWeek": "WEDNESDAY",
"hours": [
{
"open": "12:30:00-8:00",
"close": "1:00:00-8:00"
}
],
"status": "OPEN_DURING_HOURS"
},
{
"dayOfWeek": "THURSDAY",
"hours": [
{
"open": "12:30:00-8:00",
"close": "1:00:00-8:00"
}
],
"status": "OPEN_DURING_HOURS"
},
{
"dayOfWeek": "FRIDAY",
"hours": [
{
"open": "12:30:00-8:00",
"close": "1:00:00-8:00"
}
],
"status": "OPEN_DURING_HOURS"
},
{
"dayOfWeek": "SATURDAY",
"status": "CLOSED"
},
{
"dayOfWeek": "SUNDAY",
"status": "CLOSED"
}
],
"phoneNumber": "+12065551212"
}
}
]
}
directives
フィールド名 | 説明 |
---|---|
destination |
目的地情報を含むオブジェクトです。 |
transportationMode |
目的地への移動手段を示します。次のいずれかを指定できます。 BIKING (自転車)、DRIVING (自動車)、TRANSIT (公共交通機関)、WALKING (徒歩)。 |
metadata |
目的地に関する情報を含む任意のオブジェクトです。 |
directives.destination
フィールド名 | 説明 |
---|---|
multipleLineDisplayAddress |
複数行の住所です。改行はエスケープシーケンス\nを使用して表されます。 |
singleLineDisplayAddress |
単一行の住所です。 |
name |
目的地の場所の名前です。 |
coordinate |
目的地の場所の地理的座標(緯度、経度)です。 |
coordinate.latitudeInDegrees |
目的地の緯度です。 |
coordinate.longitudeInDegrees |
目的地の経度です。 |
directives.metadata
metadata
オブジェクトは任意です。指定する場合、次の表に示すように、特定のフィールドが必須になることがあります。
フィールド名 | 説明 |
---|---|
phoneNumber |
場所の電話番号(E.164形式)です。 |
hoursOfOperation |
曜日ごとの営業時間の情報を含む配列です。指定する場合、このオブジェクトにはdaysOfWeek が含まれている必要があります。status がnullでない場合、つまり、UNKNOWN (不明)、OPEN_24_HOURS (24時間営業)、CLOSED (休業日)以外の場合は、hours を指定する必要があります。 |
hoursOfOperation.daysOfWeek |
次のいずれかを指定できます。 MONDAY (月曜日)、TUESDAY (火曜日)、WEDNESDAY (水曜日)、THURSDAY (木曜日)、FRIDAY (金曜日)、SATURDAY (土曜日)、SUNDAY (日曜日)。 |
hoursOfOperation.hours |
営業開始時刻と営業終了時刻を含むオブジェクトです。指定する場合、open とclose の両方が必須です。 |
hoursOfOperation.hours.open |
場所の営業開始時刻です。 |
hoursOfOperation.hours.close |
場所の営業終了時刻です。 |
hoursOfOperation.status |
当日にその場所が営業しているかどうかを示します。次のいずれかを指定できます。 OPEN_DURING_HOURS (通常営業日)、OPEN_24_HOURS (24時間営業)、CLOSED (休業日)、HOLIDAY (祝祭日)、UNKNOWN (不明)。 |
open
とclose
の時間帯は、次のようなタイムゾーンを含むISO-8601形式の時刻を使用して表されます。
partial-time = time-hour ":" time-minute ":" time-second ± time-zone-offset
時刻はUTC+オフセットで表されます。このオフセットにより、時刻がその場所のタイムゾーンの標準時の時刻に変換されます(ただし、夏時間は考慮されません)。
status
には、次のオプションを指定できます。
OPEN_DURING_HOURS
- 場所は列挙されている時間帯に営業しています。OPEN_24_HOURS
- 場所は1日中営業しています。時間帯は列挙されません。CLOSED
- 場所はその日は休業しています。時間帯は列挙されません。HOLIDAY
- 場所の通常の予定が変更される場合がある日です。利用可能なスケジュールと共に「営業時間は変更される場合があります」という注記を表示することをお勧めします。UNKNOWN
- 時間帯やその他のステータスが指定されていない場合や、認識できないstatusフィールドが指定されている場合のデフォルトとして使用されます。
hoursOfOperation
が指定されているものの、status
がUNKNOWN
である場合は、ユーザーのAlexa搭載デバイスでは時刻を?
で表示して、スケジュールが不確定であることを示す必要があります。
CancelNavigationディレクティブ
スキルサービスでSetNavigation
ディレクティブを使用してナビゲーションが設定されている場合、ナビゲーション対応Alexa搭載デバイスを所有するスキルユーザーは、音声コマンドでナビゲーションをキャンセルできます。Alexaは、ナビゲーションをキャンセルするユーザーリクエストを受信すると、応答で以下のディレクティブを返します。
CancelNavigationディレクティブの例
{
"directive": {
"header": {
"namespace": "Navigation",
"name": "CancelNavigation",
"messageId": "<<(文字列)このメッセージを表す一意のID>>"
}
}
}
関連トピック
最終更新日: 2021 年 03 月 09 日