Amazon EchoからSlackに通知を出してみた(Incoming Webhooks版)

年末に待望のAmazon Echoが届きました。招待リクエストを送ってから1ヶ月以上待たされ、情熱も失いかけましたが、なんとか気力を振り絞ってアプリ開発をしてみました。

今回の目的

  • Alexa、会社に連絡をして

と話しかけることで、SlackのIncoming Webhooksを使用してメッセージを送信する、というアプリを作ってみようと思います*1

1. Echoから呼び出されるLambdaファンクションを登録

大まかには

  • リクエストを受け取り、Slackにメッセージを送信する
    • Incoming Webhooks 用のWebhook URLはLambda環境変数にて定義(事前に取得しておいてください)
    • メッセージ本文、名前もLambda環境変数にて定義

という流れになります。

トリガーにAlexa Skills Kitを設定してください。 f:id:nemuzuka:20180108151917p:plain

今回作成したLambdaファンクションはこんな感じです。

ARNの値をAlexa Skillと紐付ける必要があるのでメモっておいてください。

2. Alexa Skill の作成

Amazon開発者ポータルよりAlexa Skillを登録します。

2-1. スキル情報

f:id:nemuzuka:20180108151936p:plain

グローバルフィールドは全て「いいえ」を設定します

2-2. 対話モデル

インテントスキーマとサンプル発話に設定します。

これとかこちらを参考にしてください

2-3. 設定

f:id:nemuzuka:20180108151952p:plain

  • サービスエンドポイントのタイプ には AWS Lambda の ARN (Amazonリソースネーム)
  • デフォルトにはLambdaファンクションのARN

を設定します

3. 動作確認

管理画面を開いて登録したSkillを有効化します。

Alexa、会社に連絡をして と話しかけることで、Slackに通知が行く筈です。

f:id:nemuzuka:20180108152009p:plain

まとめ

特にサーバを用意する必要もなく、LambdaとAlexa Skillの設定をポチポチすることでお手持ちのAmazon EchoをトリガーにSlackのメッセージを送ることができました。 いちいちスマホを取り出してメッセージを入力することなく、Alexa、会社に連絡をしてと話しかけるだけでお休みすることが通知できるのです。なんだかスマートな感じしませんか?

ぶっちゃけ、Alexa Skill単体で収入を得ようと思ったら難しいと思います。あるサービスの機能の1つとして「Amazon Echoからもできますよ」という形にしないとビジネスにならないと感じました。 ただ、音声だけでやりたいことが実現できるというのは複雑なUIが絡まないので今後広がっていくのではないかと思います。 下手すると電話の音声案内になってしまいそうですよね。アイディアが欲しい...。

*1:ハッチャケた翌朝、連絡するのが億劫だなという時に使用したいなと思いました