LoginSignup
19
18

More than 5 years have passed since last update.

メール受信→Slack通知(webhookで)

Posted at

Slackのフリー版を使っているとアプリの上限があって、よくアプリが追加できなくなってしまいます。

たまたま、メール受信→Slackの連携を考えたのですが、
メールとかIFTTTとかが追加できなくなってしまいます。

でも既にIncoming webhook追加している場合は、IFTTTのthenイベントをwebhookにしてslackに投げることで、同じようなことができたのでメモしておきます。
なお、IFTTTでapplet公開しようかと思ったんですが、Webhookをサービスに使ったアプレットは公開できないようです。
(それができるとサービスを迂回できてしまうからかもしれません。。)

1. Slack側: Incoming Webhookの準備

まずはappsからincoming webhookを追加しておきます。
もし上限いっぱいで追加できなかったらこの記事は意味ないですね、、、
- Incoming Webhookのページ

スクリーンショット 2018-04-26 11.46.12.png
Add Configurationを押す

スクリーンショット 2018-04-26 11.46.40.png
適当に送信先チャンネル(ここでは#general)を選択し、
Add Incoming Webhooks Integrationを押します。

スクリーンショット 2018-04-26 11.46.55.png
画面が切り替わるので、Webhook URLをコピーしておきます。

以上でslack側の最低限の設定は終わりです。
下の方にwebhookの簡単なドキュメントがあります。

さらに下にこの通知を受信した時の喋る人のアイコンや名前なども設定できるので、わかりやすさのために設定しておくといいと思います。
これはどんなconfigurationでも共通した設定項目かと思います。

スクリーンショット 2018-04-26 11.51.13.png

2. IFTTT側:

IFTTTではGmailの連携をします。
IFTTTの方の解説はちょっと適当にスクショだけにします。

https://ifttt.com/create/
作成画面にいき、

スクリーンショット 2018-04-26 11.56.34.png
IFのところをGmailに設定します。

スクリーンショット 2018-04-26 11.56.46.png
ここでconnectしていないとconnectが必要になります。

次にトリガーを選びます。
スクリーンショット 2018-04-26 11.56.54.png
どんなメールを受信した時にイベント発火するかを設定します。
トリガー条件はなんでもいいですが、
自分は既に設定済みのGmail内のfilter(from:xxだったらlabelをつける)に対応させたかったので、New email in inbox labeledを選択しました。

スクリーンショット 2018-04-26 11.57.02.png
対応するラベルを入力しました。
他のトリガーだと設定項目が変わるはずです。

スクリーンショット 2018-04-26 11.57.08.png
次にthenにwebhookを選びます。
スクリーンショット 2018-04-26 11.57.16.png

スクリーンショット 2018-04-26 11.57.22.png
アクションは一個だけなので、それを選びます。

あとはweb requestの中身を作ります。
slack incoming webhookなのでdocumentや下の記事を参考に設定すればいいと思います。
SlackのIncoming Webhooksを使い倒す

参考までに自分の設定を晒します。
スクリーンショット 2018-04-26 11.58.46.png
URLは1で生成したwebhookのURLを設定します。

bodyは適宜色々カスタマイズしてください。
Ingredientを使ってメールの内容を参照しています。

body
payload={
  "attachments": [{
    "fallback":"{{Subject}}",
    "author_name": " {{FromName}}",
    "title": "{{Subject}}",
    "text": " {{BodyPlain}}",
    "footer": " {{ReceivedAt}}"
  }]
}

BodyがritchなHTMLの場合は注釈にあるようにescapeする必要があると思います。

受信したらこんなslackが投稿されると思います。
スクリーンショット 2018-04-26 12.06.36_2.png
わかりづらいですが、aaが件名、bbbが本文ですw
(名前はぼかしてます)

おまけ

Gmailアカウントを連携させたくない、別のアドレスから受信している等の場合はトリガーを変更させればいいかと思います。
ただし、その場合はアクションの方もIngredientの内容が変わるので適宜変更する必要があります。

Emailトリガーで設定したバージョンのbodyも参考までに載せておきます。

body
payload={
  "attachments": [{
    "fallback":"{{Subject}}",
    "author_name": "{{From}}",
    "title": "{{Subject}}",
    "text": " {{Body}}",
    "footer": "{{ReceivedAt}}"
  }]
}
19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18