1. はじめに
近頃自分は社内向けのSlackアプリやワークフローを作成する機会が多かったのですが、以下のような場合はSlackAPIを用いるのよりもワークフローのWebhook開始が手軽で良いということが分かりました。
- メールアドレスだけが分かっている状態でメンションを送りたい
- メッセージに複雑な機能を付与しない
スプレッドシートにてメールアドレスで人を管理している、といったシチュエーションにぴったりです。
2. Slack APIのデメリット
現状のSlack APIではメールアドレスのみを指定してメンション付きメッセージを送信する機能はありません。
私の知る限りでは下記の2step踏む必要があります。
- users.lookupByEmailでユーザーIDを取得する
- 文面を作成しchat.postMessageでメッセージを送る
しかしこれは正直なところ面倒なものです。
- 送りたいメッセージ数が多いとレート制限に引っかかりやすい
- 最初からSlackユーザーIDで人を管理していることなんてない
- エラー処理が大変…
3. Webhook開始の使い方
Slackワークフローを作成し「Webhookを使って開始する」を選択すれば、任意のデータ変数のデータタイプを「Slackユーザーのメールアドレス」として指定して送るだけですみます。
以下はこれに対応するGASの例になります。
const SLACK_WORKFLOW_URL = "https://hooks.slack.com/triggers/から始まるURL"
const options = {
method: "post",
muteHttpExceptions: true,
contentType: "application/json; charset=utf-8",
payload: JSON.stringify({
email: "example@email.com"
}),
};
await UrlFetchApp.fetch(SLACK_WORKFLOW_URL, options)
return;
4. Webhook開始のメリット
送ったメールアドレスをユーザーIDや表示名に自動変換してくれるワークフローの便利機能が使えます!!!
ワークフローの範囲でできるボタンの設置や他サービスとの連携であれば、機能追加も気軽です。
5. まとめ
ついつい自由度の高いSlack APIに頼りがちですが、ワークフローの方が適している場面もあると今回知ることができたので記事にしました。
既に知っている人も多い内容だったかもしれませんが、自分と同じ初心者エンジニアの方の助けになれば幸いです。