Amazonデベロッパーコンソールに無いAlexaスキルデータの取得方法

前回Airtableでデータの保存を行った通り(データを保存できるAirtableとStorylineを連携させてAlexaスキルで情報を保存する方法)、Alexaコンソールのアナリティクスには無いデータを取得することができます。

今回はその手法を用いてInvocable(旧:Storyline)でテストスキルを作成し、データを取得していきたいと思います。

今回は(少し適当な)英会話スキルを作ります。スキルを完成させるわけではなく、スキルの最初の部分でデータ取得だけを作成していきましょう。テストスキルでは以下のデータを取得するようにします。

Alexaスキルデータ取得方法
  • ユーザーのAlexa ID(Invocable変数/スロット設定:{amazonUserId})
  • スキルの起動時間(Invocable変数/スロット設定:{timestamp})
  • ユーザーの住んでいる場所(Invocable変数/スロット設定:{city})
  • ユーザーの好きな食べ物(Invocable変数/スロット設定:{food})
  • スキルの終了時間(Invocable変数/スロット設定:{timestamp})

Invocableでスキルのブロック作成

Invocable開発画面において、以下の流れを持つスキルを作ります。

Alexaスキルデータ取得方法

流れは大きく分けて5つ。それぞれの流れについて説明していきます。画像と同じになるように、設定・変更していきましょう。

Welcomeブロック

Alexaスキルデータ取得方法
  • APIステップ:OnLoadを設定
  • Alexa発話:英会話スキルへようこそ!を入力
  • ヘルプ(触らずにそのまま)
  • ストップ(触らずにそのまま)

StartingQブロック

Alexaスキルデータ取得方法
  • APIステップ:StartTimeを設定
  • Alexa発話:あなたはどこに住んでいますか?を入力
  • User発話:{city} に住んでいます(やその他の類義語)を入力

{city}ブロック

Alexaスキルデータ取得方法
  • APIステップ:UserCityを設定
  • Alexa発話:{{city}} ですか、いいところですね!(や似たような文言)を入力
  • Alexa発話:お好きな食べ物は何ですか?を入力
  • User発話:{food} です(やその他の類義語)を入力

{food} ですブロック

Alexaスキルデータ取得方法
  • APIステップ:FavFoodを設定
  • Alexa発話:{{food}} ですね!私も好きです!(や似たような文言)を入力
  • Alexa発話:サルは英語で何というですか?(や似たような文言)を入力
  • User発話:モンキー(やその他の類義語)を入力

モンキーブロック

Alexaスキルデータ取得方法
  • Alexa発話:正解です!スキル終了。(や似たような文言)を入力
  • APIステップ:EndTimeを設定

ここまでで、スキルの流れは完成です。

AirtableとZapierのセットアップ

ここからはスキルを保存するためのAirtable、そしてInvocableスキルとAirtableを連携させるためのZapierのセットアップを行っていきます。

Airtableの設定

スキルが完成したので、データを保存するところを作成しましょう。Airtableにて、新規テーブルを作ります。

「Eikaiwa」というデータベースそして「RegInfo」というテーブルを作ったら、その中に以下の6つのカラムを作成していきます。

Alexaスキルデータ取得方法
  • AlexaUserID - ユーザーのAlexa IDデータが入るカラム
    (InvocableのOnLoad変数から取得するデータ)
  • StartTimeStamp - スキルの起動時間データが入るカラム
    (InvocableのStartTime変数から取得するデータ)
  • UserCity - ユーザーの住んでいる場所の発話したデータが入るカラム
    (InvocableのUserCity変数から取得するデータ)
  • FavFood - ユーザーの好きな食べ物の発話したデータが入るカラム
    (InvocableのFavFood変数から取得するデータ)
  • EndTimeStamp - スキルの終了時間データが入るカラム
    (InvocableのEndTime変数から取得するデータ)
  • SkillDuration - スキルの使用時間。終了時間と起動時間の差を計算する。

Zapierの初期設定

次にInvocableとAirtableを連携するために、Zapierの設定を行っていきます。

Alexaスキルデータ取得方法

HP検索のところに「webhook」と入力し、Webhooks by Zapierを選択。次の画面でCatchを選択します。

Alexaスキルデータ取得方法

Zapier側で自動作成された、webhookのURLをコピーします。

Alexaスキルデータ取得方法

一度、Invocableのテストスキルに戻ります。WelcomeブロックのRequest URLでPOSTを選択し、上記ZapierのURLを貼りましょう。

Alexaスキルデータ取得方法

再度Zapierに戻り、Action追加を押してAirtableを選びます。Find or Create Recordを選択してから以下の続きの設定をします。

  • Baseに、「Eikaiwa」を選択。
  • Tableに、「RegInfo」を選択。
  • Search by Fieldに、「AlexaUserID」を選択
  • Search Valueに、テストで取得したIDを選択
  • Search Formulaに、テストで取得したIDを選択
  • Create Airtable Record if it doesn’t exist yet?をクリック
  • AlexaUserIDに、Triggerテストで取得したIDを選択

そしてContinueを押してから、Airtableに戻り画面を見ると…。

Alexaスキルデータ取得方法

テーブルのAlexaUserIDカラムにユーザーIDデータが入ってきました!

Invocableの残りのブロックも、同様にZapier経由でAirtableに繋ぐことでデータが取得できるようになります。

StartingQブロックのStartTime変数設定

Alexaスキルデータ取得方法

Request URLでPOSTを選択、ZapierのURLを貼りましょう。

ZapierのStartTime設定

Alexaスキルデータ取得方法

TriggerのWebhookができてから、Action追加でAirtableを選びます。Find or Create Recordを選択し、以下の続きの設定をします。

  • Baseに、「Eikaiwa」を選択。
  • Tableに、「RegInfo」を選択。
  • Search by Fieldに、「StartTimeStamp」を選択
  • Search Valueに、テストで取得した時間を選択
  • Create Airtable Record if it doesn’t exist yet?をクリック
  • StartTimeStampに、Triggerテストで取得した時間を選択

{city}ブロックのUserCity変数設定

Alexaスキルデータ取得方法

Request URLでPOSTを選択、ZapierのURLを貼りましょう。

ZapierのUserCity設定

Alexaスキルデータ取得方法

TriggerのWebhookができてから、Action追加でAirtableを選びます。Create Recordを選択し、以下の続きの設定をします。

  • Baseに、「Eikaiwa」を選択。
  • Tableに、「RegInfo」を選択。
  • UserCityに、Triggerテストで取得した場所を選択

{food} ですブロックの変数設定

Alexaスキルデータ取得方法

Request URLでPOSTを選択、ZapierのURLを貼りましょう。

ZapierのFavFood設定

Alexaスキルデータ取得方法

TriggerのWebhookができてから、Action追加でAirtableを選びます。Find or Create Recordを選択し、以下の続きの設定をします。

  • Baseに、「Eikaiwa」を選択。
  • Tableに、「RegInfo」を選択。
  • Search by Fieldに、「FavFood」を選択
  • Create Airtable Record if it doesn’t exist yet?をクリック
  • FavFoodに、Triggerテストで取得した食べ物を選択

モンキーブロックの変数設定

Alexaスキルデータ取得方法

Request URLでPOSTを選択、ZapierのURLを貼りましょう。

ZapierのEndTime設定

Alexaスキルデータ取得方法

TriggerのWebhookができてから、Action追加でAirtableを選択。Find or Create Recordを選択し、以下の続きの設定をします。

  • Baseに、「Eikaiwa」を選択。
  • Tableに、「RegInfo」を選択。
  • Search by Fieldに、「EndStampTime」を選択
  • Create Airtable Record if it doesn’t exist yet?をクリック
  • EndStampTimeに、Triggerテストで取得した時間を選択

実機でテスト

スキルにある5つのブロックとの連携設定が完了したら、Alexaに話しかけてテストしましょう。

アレクサ、英会話スキルを開いて
英会話スキルへようこそ!あなたはどこに住んでいますか?
ふくおか
ふくおかですか、いいところですね!お好きな食べ物は何ですか?
やきとり
やきとりですね!私も好きです!サルは英語で何といいますか?
モンキー
正解です!スキル終了。

そして、Airtableを見ると…。

Alexaスキルデータ取得方法

テーブルの各カラムにデータがちゃんと入っていることが確認できますね!これで、一件落着。よかったです!

これで、普段Alexaコンソールのアナリティクスにはないデータを取得できました!開発者のみなさん、ぜひ試してみてください!

※テーブルデータに保存したデータはStartTimeStampが”2018-11-26T06:50:10Z”で、EndTimeStampが”2018-11-26T06:50:48Z”でした。

SkillDuration(スキル使用時間)を計算すると、EndTimeStamp – StartTimeStamp = 38秒となります。

※現状ZapierではZap(Webhook)5つまでの使用は無料です。しかしシングルActionのみ利用可能である(1行に1つの処理しかできない)ため、テーブルのセル表示が下がって斜めになっています。

Alexaスキルデータ取得方法

Zapierの有料版にするとマルチAction(同じ行にまとめて書きこむこと)が使えるので、上の画像のようにキレイにデータを保存できます。

Invocableで作成するスキルは、このように外部サービスと連携できるメリットがあります。外部サービスの機能を気軽にスキル内に取り込むことができるので、ぜひ皆さんいろいろな連携を試してみてください!

Follow usSNSでもスマートスピーカー情報を発信中

注目今1番オススメする記事

まだまだスマート化できるところはある

スマートスピーカーやIoTガジェット、デバイスなどを活用することで今までのライフスタイルが新しいものに生まれ変わるかも!smartioではいろんなシチュエーションやシーンに合ったスマート化を提案しています。お気軽にご覧ください。

Clickして記事を見てみよう

場所から選ぶ

自宅のここをスマート化したい!IoTで理想のスマートライフを

シチュエーションから選ぶ

自分の生活の中でもっと楽になるところはあるの?

生活シーンから選ぶ

ちょっとした事もIoTで簡単に解決できるかも

ランキング一覧

スマートスピーカーを使った1番オススメしたい方法

スマートスピーカー比較

あなたにぴったりのスマートスピーカーが分かる!欲しくなる!

どのスピーカーがいいのか悩んでる方...

Smartio-store

Searchスマートスピーカーで出来ること・設定方法を検索