こんにちは。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をコピーします。
![Incoming_WebHooks___co-meeting-dev_Slack.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F5eaa1086-f162-8241-0d52-bd239e9db6bb.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1b993bf56f436129680aaa4f23918025)
3. カスタム設定Slack Settingsに設定
[開発]>[カスタム設定]を開き、「Slack Settings」の「Manage」をクリックします。
以下の「新規」ボタンをクリックします。
![カスタム設定_Slack_Settings___Salesforce_-_Developer_Edition.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F2e296210-424a-1f50-8182-8f8495f73e21.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2267afc51d29df92b177d7560f8a835d)
Webhook URL
にコピーしたURLを貼り付けて保存します。
![Slack_Settings___Salesforce_-_Developer_Edition.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F9212cc53-e4e2-fe0a-cd22-071ec741206f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6b0d0283ae14976f90c87aad2a2a97c2)
4. 通知メッセージ内のURLのインスタンスURLを変更
パッケージインストールすると新規リード通知のサンプルプロセスがインストールされます。
しかし、通知メッセージ内のURLがap2.salesforce.com
固定になっているので、環境に合わせて変更してください。
[作成]>[ワークフローと承認設定]>[プロセスビルダー]から、インストール済みのLeadToSlackExample
を開いて、「コピー」ボタンをクリックしてください。
続いて、以下の赤枠のインスタンスURLを変更し、「Use this Formula」、「保存」をクリックします。
![プロセスビルダー 7.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2Ff6191b00-ddbd-4e85-e4fc-454b2ffd44e0.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d87b66e789f3d525a5406366871e9e99)
最後に「有効化」をクリックしてインストール完了です。
どう動くの?
パターン1: フォームから通知
Slack Messageオブジェクトを作成すると
(Text
の書き方は、Incoming Webhooks | Slackを参照)
![スクリーンショット 2015-12-21 23.00.13.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2Fcddadc66-8cce-9f72-3e2d-22e96014fc2e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=370462e4b2e0d088a0e7e4cb84b0e2a7)
Slackに通知が流れる。
![Slack.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F308597c5-3898-c681-4b94-dea053106db1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=be09b0a8d78a24959235d6de3136fe1d)
パターン2: プロセスビルダーで新規リードの通知
リードが作成されると(実際は問い合わせフォームとかから作られるけど)
![リードの編集__新規リード___Salesforce_-_Developer_Edition_と_Slack_と_Force_com_開発者コンソール.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F93255b3b-c6f2-5234-9326-60a63ff77d68.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b85d6bfd5adf8859233b40334437d424)
Slackに通知が流れる。
![Slack 2.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F37550db9-9004-933c-665c-daebc43b45f2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8969785cd78041e8c353409714c8f149)
なかなか便利!
通知の設定はどうするの?
先にパッケージをインストールしておいてください。
1. プロセスビルダーを作成
適当な名前をつけます。
- プロセス名: LeadToSlackExample
- API参照名: LeadToSlackExample
![プロセスビルダー.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F25d9b6e6-e72c-341f-9f7b-ebbe56bb9e7e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ffe1618c610f3866cbb2e39b986a5d1e)
2. プロセスの開始タイミングを設定
- オブジェクト: リード
- プロセスを開始: レコードを作成した時のみ
![プロセスビルダー 2.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2Fb4a7dac0-4e58-85d3-6b67-926824c4e97f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=62b6fed4ee543da7229d5713dfeeb499)
3. 条件は特に設定しない
新規作成されたらいつでも通知したいので「アクションを実行する条件がない」を選択。
- 条件名: New Lead
- アクションの実行条件: アクションを実行する条件がない
![プロセスビルダー 3.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F17e70120-264b-6030-f930-8492eef3bef7.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9226a3dd3d97e8dbd7c21c94ea414c41)
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を参照してください。
![プロセスビルダー 4.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F38d0346d-312a-4662-173b-efd04c33f15a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4ca5be1a29d347ee53ad6b179c7c48d9)
5. プロセスを有効化
![プロセスビルダー 5.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2Fffa974fb-8392-ecd1-650b-21b0fec53157.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6ecb57ea177b44a9646b63b5a78f8188)
6. リードを作成すると、Slackに通知が来ます。
リードを作成すると、プロセスが実行され、Slack Messageが作成されます。
Slack Messageが作成されるとApexトリガが動作し、Slackに通知が送られます。
![リードの編集__新規リード___Salesforce_-_Developer_Edition_と_Slack_と_Force_com_開発者コンソール.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F93255b3b-c6f2-5234-9326-60a63ff77d68.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b85d6bfd5adf8859233b40334437d424)
Slackに通知が流れます。
![Slack 2.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27267%2F37550db9-9004-933c-665c-daebc43b45f2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=8969785cd78041e8c353409714c8f149)
こんな風にプロセスビルダーでできることは何でもSlackに通知できます。
商談が成約したらアイコンを にするとか、内容によって投稿先チャンネルを変えるとかもできますよ。
まとめ
LeadやEventがリアルタイムに流れてくるだけでもとても便利!ぜひ使ってみてください。
Attachmentsなんかはまだ未対応なので、PRも歓迎です。ドキュメント皆無なのでその辺も歓迎です。
最後に宣伝
同じようにチャットとSalesforceをつなぐサービスを最近リリースしました。
BotDock for Salesforce® | 株式会社co-meeting
よかったらご覧ください。
BotDockだと、ちゃんと認証してBotと対話式で活動の登録ができたりします。