こんにちは。co-meetingの木村です。
弊社ではSalesforceとSlackの連携はZapierで実現しているんですが、Zapierはオブジェクトの新規作成にしか対応していなかったり、15分おきだったり、Salesforceは有償のみだったりでちょっといまいちなのです。
というわけで、以下の方針でSalesforceからSlackへのリアルタイム通知を作ってみました。
- Slack通知オブジェクトを作成し、Apexトリガで作成時にSlackに通知するよう設定。
- プロセスビルダーで何か通知したいことを監視して、Slack通知オブジェクトを作成する。
通知の設定はプロセスビルダーでできるので開発者じゃなくても簡単にできますし、プロセスビルダーでできることはなんでもできるので、けっこういろいろな通知ができます。
ソースもGithubで公開して、未管理パッケージのURLも提供していますので、お好きにご利用ください。
- ソースコード
- パッケージ
どう実装したかはそんなに難しくないので直接Githubを見ていただくとして、この記事では主に使い方を説明します。
どんなことができるか
これを使うと以下のようなことができます。
- 新規リードを通知
- 商談のフェーズが変更されたら通知
- フォーム画面から全社に一斉通知
- Botの振りして誰かと会話
- タスクが追加されたら担当者にメンション(すんなりはできないかもしれない…)
- ワークフローの承認通知をダイレクトメッセージ(すんなりはできないかもしれない…)
- 毎朝未完了のタスクを通知(Apexスケジューラ使えば…)
意外と応用範囲が広いです。
インストール
1. SFDC組織にパッケージをインストール
2. SlackでIncoming WebHookを設定
Incoming WebHooks | SlackからIncoming WebHooksをインストールして、表示されたWebhook URLをコピーします。
3. カスタム設定Slack Settingsに設定
[開発]>[カスタム設定]を開き、「Slack Settings」の「Manage」をクリックします。
以下の「新規」ボタンをクリックします。
Webhook URL
にコピーしたURLを貼り付けて保存します。
4. 通知メッセージ内のURLのインスタンスURLを変更
パッケージインストールすると新規リード通知のサンプルプロセスがインストールされます。
しかし、通知メッセージ内のURLがap2.salesforce.com
固定になっているので、環境に合わせて変更してください。
[作成]>[ワークフローと承認設定]>[プロセスビルダー]から、インストール済みのLeadToSlackExample
を開いて、「コピー」ボタンをクリックしてください。
続いて、以下の赤枠のインスタンスURLを変更し、「Use this Formula」、「保存」をクリックします。
最後に「有効化」をクリックしてインストール完了です。
どう動くの?
パターン1: フォームから通知
Slack Messageオブジェクトを作成すると
(Text
の書き方は、Incoming Webhooks | Slackを参照)
Slackに通知が流れる。
パターン2: プロセスビルダーで新規リードの通知
リードが作成されると(実際は問い合わせフォームとかから作られるけど)
Slackに通知が流れる。
なかなか便利!
通知の設定はどうするの?
先にパッケージをインストールしておいてください。
1. プロセスビルダーを作成
適当な名前をつけます。
- プロセス名: LeadToSlackExample
- API参照名: LeadToSlackExample
2. プロセスの開始タイミングを設定
- オブジェクト: リード
- プロセスを開始: レコードを作成した時のみ
3. 条件は特に設定しない
新規作成されたらいつでも通知したいので「アクションを実行する条件がない」を選択。
- 条件名: New Lead
- アクションの実行条件: アクションを実行する条件がない
4. アクションを定義
Slack Messageオブジェクトをいい感じのメッセージで作成します。
Text
項目に入れた文字列がSlackへの通知メッセージになりますので、例えば、数式は以下のように入力します。
数式でインスタンスURL取得するのは難しいので、https://ap2.salesforce.com/
の箇所は修正してください。
- アクション種別: レコードを作成
- アクション名: Create Slack Message
- レコード: Slack Message
- 項目: Text
- 種別: 数式
- 値:
"新規リード!" & BR() &
[Lead].Company & BR() &
[Lead].LastName & [Lead].FirstName & BR() &
[Lead].Email & BR() &
"https://ap2.salesforce.com/" & [Lead].Id
なお、デフォルトのchannelから通知先を変更したい場合は、Channelに設定してください。#general
、privatechannel
、@directmessage
という感じに設定できます。
アイコンやBot名も変更できます。
詳しい設定は、Incoming Webhooks | Slackを参照してください。
5. プロセスを有効化
6. リードを作成すると、Slackに通知が来ます。
リードを作成すると、プロセスが実行され、Slack Messageが作成されます。
Slack Messageが作成されるとApexトリガが動作し、Slackに通知が送られます。
Slackに通知が流れます。
こんな風にプロセスビルダーでできることは何でもSlackに通知できます。
商談が成約したらアイコンを にするとか、内容によって投稿先チャンネルを変えるとかもできますよ。
まとめ
LeadやEventがリアルタイムに流れてくるだけでもとても便利!ぜひ使ってみてください。
Attachmentsなんかはまだ未対応なので、PRも歓迎です。ドキュメント皆無なのでその辺も歓迎です。
最後に宣伝
同じようにチャットとSalesforceをつなぐサービスを最近リリースしました。
BotDock for Salesforce® | 株式会社co-meeting
よかったらご覧ください。
BotDockだと、ちゃんと認証してBotと対話式で活動の登録ができたりします。