前回Airtableでデータの保存を行った通り(データを保存できるAirtableとStorylineを連携させてAlexaスキルで情報を保存する方法)、Alexaコンソールのアナリティクスには無いデータを取得することができます。
今回はその手法を用いてInvocable(旧:Storyline)でテストスキルを作成し、データを取得していきたいと思います。
- LINK
今回は(少し適当な)英会話スキルを作ります。スキルを完成させるわけではなく、スキルの最初の部分でデータ取得だけを作成していきましょう。テストスキルでは以下のデータを取得するようにします。
- ユーザーのAlexa ID(Invocable変数/スロット設定:{amazonUserId})
- スキルの起動時間(Invocable変数/スロット設定:{timestamp})
- ユーザーの住んでいる場所(Invocable変数/スロット設定:{city})
- ユーザーの好きな食べ物(Invocable変数/スロット設定:{food})
- スキルの終了時間(Invocable変数/スロット設定:{timestamp})
Invocableでスキルのブロック作成
Invocable開発画面において、以下の流れを持つスキルを作ります。
流れは大きく分けて5つ。それぞれの流れについて説明していきます。画像と同じになるように、設定・変更していきましょう。
Welcomeブロック
- APIステップ:OnLoadを設定
- Alexa発話:英会話スキルへようこそ!を入力
- ヘルプ(触らずにそのまま)
- ストップ(触らずにそのまま)
StartingQブロック
- APIステップ:StartTimeを設定
- Alexa発話:あなたはどこに住んでいますか?を入力
- User発話:{city} に住んでいます(やその他の類義語)を入力
{city}ブロック
- APIステップ:UserCityを設定
- Alexa発話:{{city}} ですか、いいところですね!(や似たような文言)を入力
- Alexa発話:お好きな食べ物は何ですか?を入力
- User発話:{food} です(やその他の類義語)を入力
{food} ですブロック
- APIステップ:FavFoodを設定
- Alexa発話:{{food}} ですね!私も好きです!(や似たような文言)を入力
- Alexa発話:サルは英語で何というですか?(や似たような文言)を入力
- User発話:モンキー(やその他の類義語)を入力
モンキーブロック
- Alexa発話:正解です!スキル終了。(や似たような文言)を入力
- APIステップ:EndTimeを設定
ここまでで、スキルの流れは完成です。
AirtableとZapierのセットアップ
ここからはスキルを保存するためのAirtable、そしてInvocableスキルとAirtableを連携させるためのZapierのセットアップを行っていきます。
Airtableの設定
スキルが完成したので、データを保存するところを作成しましょう。Airtableにて、新規テーブルを作ります。
- LINK
「Eikaiwa」というデータベースそして「RegInfo」というテーブルを作ったら、その中に以下の6つのカラムを作成していきます。
- AlexaUserID - ユーザーのAlexa IDデータが入るカラム
(InvocableのOnLoad変数から取得するデータ) - StartTimeStamp - スキルの起動時間データが入るカラム
(InvocableのStartTime変数から取得するデータ) - UserCity - ユーザーの住んでいる場所の発話したデータが入るカラム
(InvocableのUserCity変数から取得するデータ) - FavFood - ユーザーの好きな食べ物の発話したデータが入るカラム
(InvocableのFavFood変数から取得するデータ) - EndTimeStamp - スキルの終了時間データが入るカラム
(InvocableのEndTime変数から取得するデータ) - SkillDuration - スキルの使用時間。終了時間と起動時間の差を計算する。
Zapierの初期設定
次にInvocableとAirtableを連携するために、Zapierの設定を行っていきます。
- LINK
HP検索のところに「webhook」と入力し、Webhooks by Zapierを選択。次の画面でCatchを選択します。
Zapier側で自動作成された、webhookのURLをコピーします。
一度、Invocableのテストスキルに戻ります。WelcomeブロックのRequest URLでPOSTを選択し、上記ZapierのURLを貼りましょう。
再度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に戻り画面を見ると…。
テーブルのAlexaUserIDカラムにユーザーIDデータが入ってきました!
Invocableの残りのブロックも、同様にZapier経由でAirtableに繋ぐことでデータが取得できるようになります。
StartingQブロックのStartTime変数設定
Request URLでPOSTを選択、ZapierのURLを貼りましょう。
ZapierのStartTime設定
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変数設定
Request URLでPOSTを選択、ZapierのURLを貼りましょう。
ZapierのUserCity設定
TriggerのWebhookができてから、Action追加でAirtableを選びます。Create Recordを選択し、以下の続きの設定をします。
- Baseに、「Eikaiwa」を選択。
- Tableに、「RegInfo」を選択。
- UserCityに、Triggerテストで取得した場所を選択
{food} ですブロックの変数設定
Request URLでPOSTを選択、ZapierのURLを貼りましょう。
ZapierのFavFood設定
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テストで取得した食べ物を選択
モンキーブロックの変数設定
Request URLでPOSTを選択、ZapierのURLを貼りましょう。
ZapierのEndTime設定
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コンソールのアナリティクスにはないデータを取得できました!開発者のみなさん、ぜひ試してみてください!
※テーブルデータに保存したデータはStartTimeStampが”2018-11-26T06:50:10Z”で、EndTimeStampが”2018-11-26T06:50:48Z”でした。
SkillDuration(スキル使用時間)を計算すると、EndTimeStamp – StartTimeStamp = 38秒となります。
※現状ZapierではZap(Webhook)5つまでの使用は無料です。しかしシングルActionのみ利用可能である(1行に1つの処理しかできない)ため、テーブルのセル表示が下がって斜めになっています。
Zapierの有料版にするとマルチAction(同じ行にまとめて書きこむこと)が使えるので、上の画像のようにキレイにデータを保存できます。
Invocableで作成するスキルは、このように外部サービスと連携できるメリットがあります。外部サービスの機能を気軽にスキル内に取り込むことができるので、ぜひ皆さんいろいろな連携を試してみてください!