AlexaのプロアクティブイベントAPIを使ってみる

Alexaを買ったのはちょうど一年前くらい。 Alexaにいろいろ通知ができないかといろいろ模索してた時期があって、 そのときは通知用のAPIがβ版になっていてAmazonに申請しないと使えなかったのですが、最近調べたらプロアクティブイベントAPIなるものが出てるらしく遊んでみた。 https://twitter.com/328__/status/1112307063672061953 プロアクティブイベントAPI - amazon alexa プロアクティブイベントAPIとは? 一言で言うとサーバ側からAlexaにPUSH通知を行うことができるAPIです。 Alexaは基本的にユーザがEchoに呼びかけてサーバから結果を取得するいわば「フェッチ型」です。 このプロアクティブイベントAPIを利用すると、ユーザがEchoに呼びかけなくてもサーバ側から通知を送ってくれる「プッシュ型」の処理が作れるわけです。 とはいっても、このAPIだけでは好きな言葉をベラベラ喋らせれることはできなくて、ある定型文に沿って喋らせることができるだけです。 それと、「Alexa, 通知は何?」って聞かないと結果は返してくれません。 ※ 聞かなくても勝手に返してくれる方法があれば誰か教えてください 使ってみる https://github.com/328/alexa-proactive-api-test 1. ツールのインストール https://serverless.com https://developer.amazon.com/ja/docs/smapi/ask-cli-command-reference.html 2. AlexaDeveloperコンソールからスキルを作成 LambdaのトリガーにスキルIDが必要になるのでこちらを控えておく。 スキルIDはAlexaスキルのアプリ名の下に「スキルIDの表示」というボタンがあるのでそこを押下すると表示される。 3. ServerlessFrameworkで空のLambdaを作成 https://github.com/328/alexa-proactive-api-test/blob/master/lambda/subscribe-event-lambda/serverless.yml#L16 ↑の __SKILLID__ 部分を手順2で控えたスキルIDに差し替えて # sls deploy でデプロイを実行する。LambdaのARNを控える。 4. askコマンドでプロジェクトをデプロイを実行 uri内の __LAMBDA_ENDPOINT__ を手順3で控えたARNに変更する。 https://github.com/328/alexa-proactive-api-test/blob/master/skill.json configのskillIdを記載 https://github.com/328/alexa-proactive-api-test/blob/master/.ask/config#L4 ask deploy でデプロイを実行します。 5. Alexaコンソールから通知の許可を実行 https://alexa.amazon.co.jp にアクセスします。 「有効なスキル→作成したアプリをクリック→設定→アクセス権を管理→Alexaの通知をON→アクセス権を保存」で通知を許可します。 これやってなくてハマってしまった…^^; 6. クライアントIDとクライアントシークレットを控える alexa developer consoleから「アプリ→アクセス権限→Alexaスキルメッセージング」からクライアントIDとクライアントシークレットの2つを控える 7. userIdの取得 Alexaでスキルを動作させて、LambdaのコンソールからuserIdを取得 8. プロアクティブイベントAPIを実行 https://github. »