2016年8月1日月曜日

MODE の SmartModule から IFTTT の Maker に Webhook する方法

概要

MODE の SmartModule を使って IFTTT の Maker チャネルに Webhook を送信してみました
Maker でリクエストボティを使えるように変換してあげるのがポイントでした

環境

  • MODE 2016/08/01 時点
  • IFTTT 2016/08/01 時点

IFTTT で Maker レシピの作成

IFTTT で Maker チャネルを使ったレシピを作成します
今回は Maker チャネルでリクエストを受信したら (IF) Gmail にメールを送信してみます (Then)
mode_with_ifttt_creating_maker_recipe.png

「Event Name」は適当に設定して OK ですが、URL に使うのでそれっぽいのにしましょう
Gmail 側の設定は適当に設定しください

レシピが作成できたら Webhook 用の URL を取得します
mode_with_ifttt_checking_maker_info.png

これが取得できれば IFTTT での設定は OK です

mode2maker-proxy のデプロイ

このプロキシは MODE の SmartModule から送信された Json のボディ情報を Maker で使える形式に変更してくれます

今回は Heroku 上にデプロイします
Heroku ボタンがあるのでそれでデプロイしてください

あとは環境変数の設定をします

という感じで設定することで以下のように Json の変換をした上で、Maker にリクエストしてくれます

  • MODE からリクエストボディ
{
  "eventType":"abc",
  "eventData":{"light":"on"},
  "homeId":3,
  "timestamp":"2015-06-07T08:37:37.997281148Z",
  "originDeviceId":3
}
  • Maker にリクエストしてくれる Json のリクエストボディ
{
  "value1" : "abc",
  "value2" : {"light":"on"},
  "value3" : "on"
}

各 VALUE1, 3 の値は変換する Json のキー名を指定します
今回 VALUE3 に light を指定しています
light は Json のキー内には存在しません
その場合は eventData の中の Json を検索してキーがあればそのキーの値を設定してくれます
どこのキー名にも当てはまらない場合は null が設定されます

そして MAKER_URL の環境変数には IFTTT で作成した Maker チャネルの Webhook 用の URL を設定してください

MODE で SmartModule の作成

ここでのポイントはリクエストする URL を Heroku にデプロイしたプロキシアプリの URL を指定することです

自分は Heroku 上に kaka-mode2maker-proxy という名前でデプロイしているので、そのアプリの URL を SmartModule に指定しています

mode_with_ifttt_creating_smartmodule.png

Key は GEENRATE ボタンを押せば勝手に生成してくれます
これだけ気をつけて SmartModule は作成してください

動作確認

  • IFTTT の Maker を使ったレシピの作成
  • mode2maker-proxy のデプロイ
  • SmartModule の作成

が終わった準備 OK です
デバイスなりから MODE にイベントを送信してみましょう
するとプロキシが動作して Maker がコールされ Gmail が来ると思います

Gmail のメール本文の設定がデフォルトのままであれば以下のような内容で届くはずです
mode_with_ifttt_result.png

最後に

MODE + IFTTT の連携をしてみました
IFTTT が便利すぎるので通知系をやりたい場合はとりあえず IFTTT 経由しておけば安心だと思います