背景と目的
Slackへの通知運用において、以下のような課題があった:
- 通知内容や投稿先チャンネルの変更要望が多く、フローの保守が煩雑
- 通知要件がオブジェクトや所有者などに応じて柔軟に変化する
- メンションを含むメッセージの構築も必要になってきた
これに対応するため、通知設定をデータとして持たせ、条件に応じて柔軟に通知を切り替える構成を構築することを検討した。
フローの全体像
1. 構成要素
オブジェクト | 役割 |
---|---|
トリガーレコード(例:CampaignMember) | 通知の発端になるオブジェクト |
Slack通知設定オブジェクト(カスタム) | 通知の条件・チャンネル・追加メッセージ・メンション先を定義 |
User(標準オブジェクト) | SlackユーザーIDを保持(Slackメンション用) |
2. 通知設定オブジェクトの主な項目
項目名 | 内容 |
---|---|
TriggerObjectName | トリガー対象オブジェクト名(例:CampaignMember) |
条件1(例:CampaignId) | トリガーレコードの該当項目と一致する値 |
条件2(例:GroupName) | 同上 |
通知先チャンネル | Slackのチャンネル名またはID |
メンション先ユーザー | ユーザー参照。SlackIDを保持しているUserレコード |
追加メッセージ | 現場ユーザーが任意に記載する補足文言 |
オブジェクトの関係性
フローの全体像
実装ポイント
条件評価はGet Recordsで完結
- TriggerObjectName などの完全一致で通知設定を事前に取得
- フロー内での条件分岐やループ中評価は不要
テンプレートは固定
- テンプレート本文はフロー側で固定定義
- Slack通知設定側では「追加メッセージ」のみ保持し、現場で編集可能
例)メッセージ構築:
"キャンペーンメンバーが登録されました。\n" + {!設定.追加メッセージ__c}
メンション対応
- Slack通知設定に「メンション先ユーザー」参照項目を持たせる
- そのユーザーのSlackID(User.SlackId__c)を取り出して、<@SlackId> 形式でメッセージに差し込み
まとめ
- 通知条件・投稿先・補足文言を「設定データとして持たせる」ことで、運用負荷とフロー改修コストを大幅に削減
- 条件分岐ロジックはGet Recordsで完結させ、フロー構造もシンプルに
- メッセージ本文は固定テンプレ+補足だけで構成。差し込み複雑化を避け、現場での補足投稿を柔軟に実現
今後の展開(案)
- 通知ログ保存(Slack送信結果を保持)
- 通知テンプレの多言語化対応
- メンション複数指定、時間帯による通知制御