IFTTTのアクションに自分で用意したWebhookに通知して欲しいときにWordPresss Channelを使うと便利です。今回はifttt-webhookのNode.js版であるexpress-ifttt-webhookを使います。AndroidからIFTTTにYoを送信するとRequestBinのエンドポイントに通知してパラメータをブラウザで確認してみます。
Webhook
express-ifttt-webhookはNode.jsで書かれたExpressのミドルウェアです。google/nodejs-runtimeのDockerイメージを使いExpressサーバーのコンテナを起動します。
Webhookコンテナの用意
プロジェクトディレクトリを作成します。
$ mkdir -p ~/docker_apps/ifttt |
package.jsonを用意して、expressとexpress-ifttt-webhookモジュールをインストールします。
{ |
app.jsに簡単な処理を書きます。json.url
には最終的にフォーワードしたいURLを指定します。今回はデバッグ用のRequestBinのURLにフォワードします。URLはこの後IFTTTのレシピに記述します。
var express = require('express') |
Dockerfileを作成してコンテナを起動します。
$ echo FROM google/nodejs-runtime > Dockerfile |
ngrokでWebhookの公開
ngrokを使い作成したWebhookコンテナを公開します。
$ docker pull wizardapps/ngrok:latest |
公開用のngrokエンドポイントをコピーしておきます。
... |
Yo
YoはYoと通知するだけのシンプルなコミュニケーションツールです。IFTTTのトリガーにYoを使ってみます。AndroidにYoアプリをインストールして、+ボタンを押しIFTTT
をユーザーに追加しておきます。
IFTTT
Yoチャンネルのアクティベート
チャンネルからYoを検索してアクティベートします。
WordPressチャンネルのアクティベート
チャネルからWordPressを検索します。テスト用なので今回は認証を行いませんが、UsernameとPasswordはWordPress Channelで必須項目のため適当に入力します。
- Blog URL: http://3b98ba34.ngrok.com
- Username: username
- Password: password
レシピの作成
最初にThis
をクリックしてYoのトリガーを選択します。
次にThat
をクリックしてWordPress Channelをアクションに選択します。
Create post
のアクションを選択します。フィールドは任意に設定できますが、Categories
フィールドにWebfookしたい最終的なフォワード先のURLを指定します。今回はRequestBinで作成したURLを入力します。Create Action
ボタンを押してアクションのを完了します。
- Categories: http://requestb.in/pb4l5spb
最後にCreate Recipe
ボタンをクリックしてレシピのアクティベートを行います。
AndroidのYoアプリからテスト
AndroidにインストールしたYoアプリを起動します。追加したユーザーのIFTTT
をタップします。「Yo送信完了!」と表示されれば成功です。
RequestBinで先ほど作成したURLを開くとIFTTTからPOSTされたパラメーターを確認することができました。
以下がIFTTTから通知されるJSONデータの中身です。コールバックではJSONオブジェクトになっています。
{ username: 'username', |
今回はテスト的に通知を受けただけですが、次回はExpressの中でMQTTにブリッジしてもう少し汎用的に使えるようにしてみます。