はじめに
この記事では、SalesforceとSlack連携機能のうち、カスタムメッセージを使った通知機能の設定方法を紹介します。
カスタムメッセージは、フロー等の自動化処理からSlackへ通知する場合に利用するメッセージになります。
改めて、Slackへメッセージを通知するために必要な手順を、整理すると以下になります。
- Slackに認証して、どのワークスペースの、どのユーザーを使って、どのチャンネルに送信するかを決める
(カスタムメッセージ送信先の設定) - メッセージの内容を作る
- 1.で決めた認証と宛先に、2.で作ったメッセージを、SlackのAPIで送信する
最後の「APIを使う」という部分は、普段プログラミングに触れていない場合は、少し難しく感じるかもしれません。
しかしカスタムメッセージ通知では、用意されたAPEXクラスを使うことで、APIを意識せずにフロー等からメッセージの送信が実現出来ます。
落とし穴
具体的な設定方法を見て行く前に、上記手順に存在する大きな落とし穴から見ていきます。
上記の1の設定は、「Slack Setup」アプリの「Automation Configuration」を使って「カスタムメッセージ送信先」として定義します。(認証情報・ワークスペース・チャンネルの情報)
これは大抵の場合、システム管理者が行う操作 になります。
しかし実際にSlackへのメッセージ送信のきっかけはユーザー操作となるため、上記設定を行った方とは別の人物という場合がほとんどでしょう。
この「設定した人」と「操作した人」が異なることで、「操作がどのユーザーであっても、システム管理者のアカウントでSlackに通知が来てしまう」という落とし穴が存在します。
落とし穴対策
この落とし穴に対する回避策は、以下の3点になります。
- Slack通知用のSlackアカウントを用意する。「カスタムメッセージ送信先」を作成する場合は、そのユーザー認証を使う
- 「カスタムメッセージ送信先」の作成者が、Slackの通知者になる。という点を許容する。
(この場合、「システム管理者」がメッセージ送信者であることを気にしない。) - SlackのWeb API呼び出しに方式を変更する。
一見、1で良いように思えますが、ここにも注意点があります。
Salesforceで行ったSlackアカウントの認証情報は、そのSalesforceアカウントと紐づけて管理されています。
そのため、1つのSalesforceアカウントで、「カスタムメッセージ送信先」の作成時は通知用のSlackアカウント
自分が業務で通知を行う場合は、自分のSlackアカウントを使う。といった切り替えが出来ません。
※Slack Authというオブジェクトで、認証情報を一元管理しているため、別のSlack ユーザーで認証し直してしまうと他の箇所にも影響が出てしまう。
(宛先情報を作った際に認証したSlackユーザーが差し替わってしまう等)
認証のやり直しを行うと、「カスタムメッセージ送信先」で使っていたSlackアカウントが書き換わったり、通知が動作しなくなったり、予期しない動作が起きる場合があります。
SalesforceアカウントもSlack通知設定用に専用に用意すれば、この問題は回避出来ますが、このためにSalesforceのライセンス費用が発生するため勿体ないです。
システム管理でしか使わないライセンスがあれば1の回避策は有力ですが、そうでない場合は、その他の解決策もご検討下さい。
設定方法
前置きが長くなりましたが、設定方法を見ていきましょう。
設定は、以下の流れになります。
- Slackに認証して、どのワークスペースの、どのユーザーを使って、どのチャンネルに送信するかを決める
(カスタムメッセージ送信先の設定) - メッセージの内容を作る
- 1.で決めた認証と宛先に、2.で作ったメッセージを、SlackのAPIで送信する
カスタムメッセージ送信先の設定
カスタムメッセージ送信先は、Slack Setupアプリの、「Automation Configuration」から行います。
画面の一番下のメニューになります。
Automation Configuration 画面は、以下のようになっています。
「New Message Destination」リンクを押すと、新しいメッセージ送信先を追加することが出来ます。
メッセージの送信先(SlackのWorkspaceとChannnel または、特定の個人)を指定して、名前をつけて保存します。
設定項目は、これしかありません。
別のWorkspaceを指定する場合には、Slack Workspace欄で「Add Workspace」を選択してください。
Slackの認証画面が開き、別のWorkspaceへ接続出来るようになります。
(この時に、Salesforceユーザーと、Workspace, SlackユーザーIDの紐づけが保存されます)
保存が終わると、MESSAGE DESTINATION ID(メッセージ送信先ID) が振り出されていることが分かります。
メッセージの内容を作る
Slackへカスタムメッセージを送信する方法を、フローを使って説明致します。
レコードトリガーフローを作っていきます。
今回は、特に条件は指定せずに、商談が作成/更新された場合にトリガーを指定しています。
アクションの追加で、「Slack:Post Message」を選択します。
「Slack:Post Message」アクションには、送信するメッセージと、「メッセージ送信先ID」を指定します。
これにより「Slack Setup」画面で指定したWorkSpaceとChannelに、カスタムメッセージが通知されるようになります。
Messageは、フローで数式を使って文字列を作成することで、任意の情報をSlackに通知出来るようになります。
フローを保存・有効化し、商談を更新してみましょう。
↓以下のようなメッセージがSlackに通知されます。
任意のMessageが追加出来ていることが分かります。
また、通知者が「Salesforce App」ではなく、「カスタムメッセージ送信先」を設定した人物になっています。
(落とし穴の部分)
まとめ
今回は、Slackへカスタムメッセージ通知を行う方法を解説しました。
設定手順はとても簡単で
1.Slack Setupから「カスタムメッセージ送信先」の定義を作成
2.そのIDをフローの中で「Post:Slack Message」アクションに指定するだけ
でした。
しかしながらSlackで見た時に、カスタムメッセージの通知者が「カスタムメッセージ送信先」の作成者になってしまうという落とし穴についても、触れさせて頂きました。
運用時は、メッセージの通知方法なども確認して利用して頂ければと思います。