IFTTTのMakerチャンネルには、さまざまなWebサービスの「状態」を契機にして、任意のHTTPリクエストを実行することができる「Make a web request」というアクションがあります。これを利用すると、Webhookに対応していないWebサービスでもIFTTTのトリガーとして「状態」をフックすることができれば、擬似的にWebhook化することができます。
Maker Channel
前述のとおりとても便利な機能なのですが、ただ一つだけ気になる点があって、ボディの内容は自由にカスタマイズできるのですが、ヘッダーは「Content-Type」以外カスタマイズできないことでした。認証系の情報をヘッダーに付与するシーンはよくあると思うので、それができないのは人によっては少し不便ですね。
じゃあカスタマイズできないとして、そもそもどんなヘッダーが付与されるのかを調べたのですが、ドキュメントが見当たらなかったので、実際に調べてみました。
これだけのためにWebサーバを立ち上げるのは手間だったので、今回はwebscript.ioというサービスを利用してみます。webscript.ioはURLを指定して、そのURLにアクセスされたらどう動作するかをブラウザ上でプログラミングできるサービスです。詳しくは公式サイトかChatWorkさんのブログが詳しかったので、そちらをご覧くださいな。
webscript.io
サーバー不要で Lua 言語な webscript.io で ChatWork API を叩いてみる
webscript.ioで設定するスクリプトはたった一行だけです。
return;
「Make a web request」の設定は以下のようにしました。 トリガーはDate & Timeチャンネルの「Every hour at」を使いました。
IFTTTのレシピが実行されると、webscript.ioにアクセスログが残るので、そちらでヘッダーを確認することができます。
という訳で、IFTTTが付与するヘッダーは以下のとおりでした。
Content-Length X-Newrelic-Id X-Forwarded-Port X-Forwarded-For Host X-Newrelic-Transaction Connection X-Forwarded-Proto Content-Type
ちなみに、、、IFTTT単体でヘッダーのカスタマイズはできないものの、今回使ったwebscript.ioをクッションとして活用すれば任意のヘッダーを追加することが可能なので、もしヘッダー周りをカスタマイズしたケースがあればwebscript.ioは選択肢として検討してみては如何でしょうか!