かれ4

かれこれ4個目のブログ

SendgridのInbound Parse Webhookが楽しすぎる

なんか日本語を機械学習させようと思いました。

自動的に日本語を学習させる方法として、クローリングするかなぁ
と思っていたのですが、色々と邪魔な情報もあるので、もう少しきれいなものを集める方法はないかと考えていたところ、
Sendgridが素敵な機能を持っていました。

※Sendgridの日本語のページ( https://sendgrid.kke.co.jp/ )



Inboud Parse Webhookです。
これを使えば、Sendgridがメールを受信して、それをHTTPでPOSTしてくれるという、最高のサービスです。
しかも、POSTに失敗してもRetryしてくれるというすぐれもの。

これを使って、
色々なメールマガジン => [Inbound Parse Webhook] => [ AWS Elastic Beanstalk ]=> [ AWS Elastic Beanstalk (worker tier)] => [ Amazon DynamoDB]
という構成で、機械学習させていこうと決めました。

まず今回はSendgridのInbound Parse Webhookを使って、送られてくるメールマガジンをパースして、HTTPで送ってもらうところまで試してみます。


api_nameとapi_keyはたぶんSendgridのアカウントのユーザ名とパスワードがそのまま
api_nameとapi_keyになっていそう。(試していないけど、、)

けど、なんかアカウントそのままのパスワードとかを使うのは嫌なので、専用に一つCredential作ります。
ここから新しいCredentialが作れます。(ログインしていないと見れないかも)

https://sendgrid.com/credentials

f:id:tottokug:20140523100418p:plain

緑色のボタンを押すとフォーム出てくる

f:id:tottokug:20140523100916p:plain

適当に入れると出来上がり

f:id:tottokug:20140523100927p:plain

Nameで入力したものがapi_user,Passwordで入力したものがapi_keyになっているようです。

というわけで

curl -XPOST https://api.sendgrid.com/api/parse.set.json -d "api_user=${USERNAME}&api_key=${APIKEY}&hostname=${HOSTNAME}&url=${URL}&spam_check=0"

とやると

{"message":"success"}


これで出来たようです。

確認してみます。

curl "https://api.sendgrid.com/api/parse.get.json?api_user=${USERNAME}&api_key=$APIKEY"
{
  "parse": [
    {
      "spam_check": 0,
      "url": "http://example.com/fuga/hoge",
      "hostname": "hostname.example.com"
    }
  ]
}

いい感じです。

hostnameで指定したメールアドレス(なんでもOK@hostname)にメールを送ってみると
POSTのパラメータで

[headers]
[dkim]
[to]
[from]
[text]
[sender_ip]
[envelope]
[attachments]
[subject]
[charsets]
[SPF]

という項目が送られて来ています。
multipartのメールは試していませんが、おそらくいい感じにやってくれそうです。
詳しくはこちら( https://sendgrid.com/docs/API_Reference/Webhooks/parse.html )
日本語も完璧です。

何通受信したかなんかの統計もちゃんと見れます。
f:id:tottokug:20140523113615p:plain


これで、色々なメルマガを受信して、テキストを解析する準備が出来ました。