Alexaから位置情報を取得可能になったので試してみた

Alexa Dev Summit Tokyo 2018に向かう最中、唐突にAlexaブログに新しい機能が発表されました。 Enhance Your Customer Experience with Real-Time Location Services for Alexa Skills どうやら位置情報をAlexaスキルで取得できるようになった様子です。ということで早速使ってみます。

スキル開発画面で有効化する

[アクセス権限]から有効化できます。

スキル設定から位置情報の利用を許可する

続いて位置情報の利用をアプリ側で許可しましょう。さすがに勝手にユーザーの位置情報を収集することはできません。設定したスキルの詳細画面には以下のように[位置情報サービス]と表示されます。
スキルの設定ボタンを押すと、以下のようにどの権限を有効にするかを選べます。

アレクサアプリからスキルを起動する

この位置情報サービスですが、EchoやEcho Showなどの据え置き型デバイスでは現在利用できない様子です。
If the Geolocation field does not exist, then the customer’s device is unable to provide any location data, which is the case for stationary devices like the Amazon Echo.

https://developer.amazon.com/ja/docs/custom-skills/location-services-for-alexa-skills.html?
リクエストオブジェクトのcontext.System.device.supportedInterfacesGeolocationがあるかどうかで判定することができますので、実装時にはここで条件分岐をつけましょう。 スマートフォン向けのアレクサアプリを最新版にすると、位置情報をアプリが利用するように設定できますので、こちらで位置情報の利用を許可した上でスキルを呼びだしてみましょう。

ログからリクエスト内容を見る

もし位置情報サービスが正しくセットアップできていれば、以下のようにリクエスト内容に位置情報が入ってきます。
"Geolocation": {
  "timestamp": "2018-12-15T02:47:12Z",
  "coordinate": {
   "latitudeInDegrees": 35.63336181640625,
   "longitudeInDegrees": 139.7164988028192,
   "accuracyInMeters": 10
 },
 "altitude": {
  "altitudeInMeters": 68.39390563964844,
  "accuracyInMeters": 10
 },
 "heading": {
  "directionInDegrees": 4.946421146392822
 },
 "speed": {
  "speedInMetersPerSecond": 1
 }
}
ドキュメントなどを見る感じ、おおよそ以下のような見方でよさそうです。
"Geolocation": {
  "timestamp": いつ取得したか,
  // 座標情報
  "coordinate": {
   "latitudeInDegrees": 緯度,
   "longitudeInDegrees": 経度,
   "accuracyInMeters": メートル単位での精度
 },
 // 高度情報
 "altitude": {
  "altitudeInMeters": メートル単位での高度,
  "accuracyInMeters": メートル単位での精度
 },
 // どの方向を向いているか
 "heading": {
  "directionInDegrees": 向いている方角
 },
 // スピード
 "speed": {
  "speedInMetersPerSecond": 秒速何メートルで移動しているか
 }
}
ちなみに先ほどの緯度経度をGoogle Mapに打ち込むと、ここが表示されます。 高度が60 ~ 80mくらいということでおおよそビル20 ~ 25階くらいだと思われます。 はい、Alexa Dev Summit Tokyot 2018の会場(目黒セントラルタワー21階)はきっちり範囲内に収まっていますね。 新幹線の中で使ったりすると、speedInMetersPerSecondの値がすごいことになるかもですね。ポケモンGOのように一定速度以上だと利用に制限をかけるようなこともできそうです。

位置情報サービスでできるようになりそうなこと

この現在位置が取得できる機能はかなり汎用性が高いかなと思います。例えばこんなケースはどうでしょうか?

近くのバス停・駅から目的地に向かうルートを調べる

今だとGoogle Mapアプリを開くか、Siri経由でGoogle Mapを起動する方法でしょうか。これがAlexa対応デバイスやAlexaアプリから利用できるようになります。または全国タクシーやUberのような配車サービスやExpediaなどのブッキングサービスと連携すれば、そのままAmazon Payで配車・チケット購入までできるかもしれません。

近くのお店を探して予約する

Amazon Connectを利用したAlexaスキルがスキルアワードで特別賞を獲得されていましたね。あれを応用することができるかもしれません。 例えば現在位置を利用して、食べログやホットペッパーのAPIからお店情報を取得します。そして候補のお店を紹介して選んでもらったあと、スキル有効化時などに登録した電話番号とお店をつなぐ電話をAmazon Connect経由で開始するということができるかもしれないと思います。Googleが似たようなことをやろうとしていた気もしますが。

運転中・停車中でスキルモードを変更する

これは車にAlexaを組み込むケースを想定しています。速度の情報も取得できますので、運転中・高速に乗っている・停車中でAlexaの発話を変更することができるかもしれません。もしくはAPLで表示する内容についても変更するようなこともできそうです。普段は周辺施設のデータを画面に表示するけども、80km/hを超えたら高速道路に乗っていると判断してSA / PA / 料金所などのデータのみ出すとかですね。

やってみよう位置情報スキル

まだ発表されて間も無い機能で、かつ据え置き系のEchoデバイスでは利用できないという制約があります。ただ利用シーンが非常に多い機能だと思いますので、ぜひみなさん試してみてください。

この記事を書いた人

hideokamoto