1. Qiita
  2. 投稿
  3. SendGrid

RequestBinを使ってSendGridのEvent Webhookを試してみる

  • 3
    いいね
  • 0
    コメント
に投稿

技術的な記事を出すのは何気に初めてな@h_tky271です。

本記事は、 SendGrid Advent Calendar 2016 の20日目の記事です。

SendGridEvent Webhookは、SendGrid経由で送信したメールで発生する様々なイベント(メールの送信、バウンス、開封、クリック、配信停止、迷惑メール報告など)をPOSTしてくれる機能です。この機能は、配信停止されたアドレスを自動でリストから削除したり、バウンスしたメールアドレスを自動で特定したりする際に重宝しますが、イベントデータを受信するには別途Webアプリケーションを用意する必要があります。

今回は「Event Webhookを簡単に試してみたい」「受け取るシステムを作るには少々時間がかかるので中々手を付けられない...」といった方向けに、RequestBinを使ってSendGridのEvent Webhookを簡単に試す方法をご紹介いたします。

  • RequestBinとは?
    • Runscope社が提供するオープンソースのサービス

はじめに

RequestBinを利用する方法は2種類あります。

  1. サービス提供されているRequestBinを利用する
  2. HerokuにオープンソースのRequestBinをデプロイして利用する

今回は、後者の「HerokuにオープンソースのRequestBinをデプロイして利用する」方法をご紹介いたします。

前提条件

手順

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です。

RequestBin_Service.png

3. RequestBinでユニークエンドポイントURLを生成

「Create a RequestBin」ボタンをクリックしてRequestBinのエンドポイントURLを生成します。

RequestBin.png

生成されたRequestBinのユニークエンドポイントURLをコピーします。

RequestBinURL.png

4. Event WebhookのPOST先を設定

こちらからSendGridにログインします。

SendGridのSettings > Mail Settingsの「Event Notification」をON(ACTIVE)にし、「HTTP POST URL」に先ほどコピーしたRequestBinのエンドポイントURLを設定します。

SendGrid_EventWebook2.png

5. イベントデータをPOST

今回は、INTEGRATION TESTING TOOLでテストイベントを発生させます。

「Test Your integration」ボタンをクリックします。
SendGrid_EventWebook2.png

POSTが完了すると、RAW BODYにイベントデータが表示されます。

RequestBin_Result.png

イベントデータを整形すると以下のようになります。

[
  {
    "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の公式ドキュメントブログもご覧ください。

この投稿は SendGrid Advent Calendar 201620日目の記事です。
Comments Loading...