技術的な記事を出すのは何気に初めてな@h_tky271です。
本記事は、 SendGrid Advent Calendar 2016 の20日目の記事です。
SendGridのEvent Webhookは、SendGrid経由で送信したメールで発生する様々なイベント(メールの送信、バウンス、開封、クリック、配信停止、迷惑メール報告など)をPOSTしてくれる機能です。この機能は、配信停止されたアドレスを自動でリストから削除したり、バウンスしたメールアドレスを自動で特定したりする際に重宝しますが、イベントデータを受信するには別途Webアプリケーションを用意する必要があります。
今回は「Event Webhookを簡単に試してみたい」「受け取るシステムを作るには少々時間がかかるので中々手を付けられない...」といった方向けに、RequestBinを使ってSendGridのEvent Webhookを簡単に試す方法をご紹介いたします。
- RequestBinとは?
- Runscope社が提供するオープンソースのサービス
はじめに
RequestBinを利用する方法は2種類あります。
- サービス提供されているRequestBinを利用する
- こちらの使い方は、SendGridの公式ドキュメントで公開されています
- HerokuにオープンソースのRequestBinをデプロイして利用する
今回は、後者の「HerokuにオープンソースのRequestBinをデプロイして利用する」方法をご紹介いたします。
前提条件
- Herokuアカウント、Toolbelt(CLI)
- SendGridアカウント
手順
1. Herokuのアプリケーションを作成
公開されているコードをローカルマシンにクローンします。
$ git clone git://github.com/Runscope/requestbin.git
リポジトリ内に移動してHerokuのアプリケーションを作成します。
$ cd requestbin
$ heroku create
セッションの保存先としてHerokuのアドオン「heroku-redis」を追加し、環境変数を設定します。
$ heroku addons:add heroku-redis
$ heroku config:set REALM=prod
2. RequestBinをHerokuにデプロイ
RequestBinをHerokuにデプロイします。
$ git push heroku master
アプリケーションを起動します。
$ heroku open
以下のページが表示されれば、OKです。
3. RequestBinでユニークエンドポイントURLを生成
「Create a RequestBin」ボタンをクリックしてRequestBinのエンドポイントURLを生成します。
生成されたRequestBinのユニークエンドポイントURLをコピーします。
4. Event WebhookのPOST先を設定
こちらからSendGridにログインします。
SendGridのSettings > Mail Settingsの「Event Notification」をON(ACTIVE)にし、「HTTP POST URL」に先ほどコピーしたRequestBinのエンドポイントURLを設定します。
5. イベントデータをPOST
今回は、INTEGRATION TESTING TOOLでテストイベントを発生させます。
「Test Your integration」ボタンをクリックします。
POSTが完了すると、RAW BODYにイベントデータが表示されます。
イベントデータを整形すると以下のようになります。
[
{
"email":"example@test.com",
"timestamp":1481600533,
"smtp-id":"\u003c14c5d75ce93.dfd.64b469@ismtpd-555\u003e",
"event":"processed",
"category":"cat facts",
"sg_event_id":"-3kmYSsKh_5mFRAT80LIPA==",
"sg_message_id":"14c5d75ce93.dfd.64b469.filter0001.16648.5515E0B88.0"
},
{
"email":"example@test.com",
"timestamp":1481600533,
"smtp-id":"\u003c14c5d75ce93.dfd.64b469@ismtpd-555\u003e",
"event":"deferred",
"category":"cat facts",
"sg_event_id":"qda6PC4Ka9i4AfwxlOIzhw==",
"sg_message_id":"14c5d75ce93.dfd.64b469.filter0001.16648.5515E0B88.0",
"response":"400 try again later",
"attempt":"5"
}
]
もし、今後もイベントデータをPOSTしたい方は、Event Webhookの設定を保存してください。全てのイベント通知がHerokuにデプロイしたRequestBinのアプリケーションにPOSTされるようになります。
さいごに
いかがでしたでしょうか。RequestBinは、SendGridが提供している「EventKit-Rails」のようにPOSTしたイベントデータを様々な条件で検索したり、検索結果をダウンロードしたりすることはできませんが、「ほんのちょっとだけEvent Webookを使ってみたい」というときに重宝するアプリケーションです。ご興味のある方は、是非お試しください!
なお、Event Webhookを試す方法は他にもありますので、ご興味のある方はSendGridの公式ドキュメント、ブログもご覧ください。