Salesforce→Slack通知をオープンソースで公開しました

  • 45
    Like
  • 0
    Comment
More than 1 year has passed since last update.

salesforcetoslack.jpg

こんにちは。co-meetingの木村です。

弊社ではSalesforceとSlackの連携はZapierで実現しているんですが、Zapierはオブジェクトの新規作成にしか対応していなかったり、15分おきだったり、Salesforceは有償のみだったりでちょっといまいちなのです。

というわけで、以下の方針でSalesforceからSlackへのリアルタイム通知を作ってみました。

  1. Slack通知オブジェクトを作成し、Apexトリガで作成時にSlackに通知するよう設定。
  2. プロセスビルダーで何か通知したいことを監視して、Slack通知オブジェクトを作成する。

通知の設定はプロセスビルダーでできるので開発者じゃなくても簡単にできますし、プロセスビルダーでできることはなんでもできるので、けっこういろいろな通知ができます。

image

ソースもGithubで公開して、未管理パッケージのURLも提供していますので、お好きにご利用ください。

どう実装したかはそんなに難しくないので直接Githubを見ていただくとして、この記事では主に使い方を説明します。

どんなことができるか

これを使うと以下のようなことができます。

  • 新規リードを通知
  • 商談のフェーズが変更されたら通知
  • フォーム画面から全社に一斉通知
  • Botの振りして誰かと会話
  • タスクが追加されたら担当者にメンション(すんなりはできないかもしれない…)
  • ワークフローの承認通知をダイレクトメッセージ(すんなりはできないかもしれない…)
  • 毎朝未完了のタスクを通知(Apexスケジューラ使えば…)

意外と応用範囲が広いです。

インストール

1. SFDC組織にパッケージをインストール

https://login.salesforce.com/packaging/installPackage.apexp?p0=04t28000000ULv7

2. SlackでIncoming WebHookを設定

Incoming WebHooks | SlackからIncoming WebHooksをインストールして、表示されたWebhook URLをコピーします。

Incoming_WebHooks___co-meeting-dev_Slack.png

3. カスタム設定Slack Settingsに設定

[開発]>[カスタム設定]を開き、「Slack Settings」の「Manage」をクリックします。

以下の「新規」ボタンをクリックします。

カスタム設定_Slack_Settings___Salesforce_-_Developer_Edition.png

Webhook URLにコピーしたURLを貼り付けて保存します。

Slack_Settings___Salesforce_-_Developer_Edition.png

4. 通知メッセージ内のURLのインスタンスURLを変更

パッケージインストールすると新規リード通知のサンプルプロセスがインストールされます。
しかし、通知メッセージ内のURLがap2.salesforce.com固定になっているので、環境に合わせて変更してください。

[作成]>[ワークフローと承認設定]>[プロセスビルダー]から、インストール済みのLeadToSlackExampleを開いて、「コピー」ボタンをクリックしてください。

続いて、以下の赤枠のインスタンスURLを変更し、「Use this Formula」、「保存」をクリックします。

プロセスビルダー 7.png

最後に「有効化」をクリックしてインストール完了です。

どう動くの?

パターン1: フォームから通知

Slack Messageオブジェクトを作成すると
Textの書き方は、Incoming Webhooks | Slackを参照)

スクリーンショット 2015-12-21 23.00.13.png

Slackに通知が流れる。

Slack.png

パターン2: プロセスビルダーで新規リードの通知

リードが作成されると(実際は問い合わせフォームとかから作られるけど)

リードの編集__新規リード___Salesforce_-_Developer_Edition_と_Slack_と_Force_com_開発者コンソール.png

Slackに通知が流れる。

Slack 2.png

なかなか便利!

通知の設定はどうするの?

先にパッケージをインストールしておいてください。

1. プロセスビルダーを作成

適当な名前をつけます。

  • プロセス名: LeadToSlackExample
  • API参照名: LeadToSlackExample

プロセスビルダー.png

2. プロセスの開始タイミングを設定

  • オブジェクト: リード
  • プロセスを開始: レコードを作成した時のみ

プロセスビルダー 2.png

3. 条件は特に設定しない

新規作成されたらいつでも通知したいので「アクションを実行する条件がない」を選択。

  • 条件名: New Lead
  • アクションの実行条件: アクションを実行する条件がない

プロセスビルダー 3.png

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に設定してください。#generalprivatechannel@directmessageという感じに設定できます。
アイコンやBot名も変更できます。

詳しい設定は、Incoming Webhooks | Slackを参照してください。

プロセスビルダー 4.png

5. プロセスを有効化

プロセスビルダー 5.png

6. リードを作成すると、Slackに通知が来ます。

リードを作成すると、プロセスが実行され、Slack Messageが作成されます。
Slack Messageが作成されるとApexトリガが動作し、Slackに通知が送られます。

リードの編集__新規リード___Salesforce_-_Developer_Edition_と_Slack_と_Force_com_開発者コンソール.png

Slackに通知が流れます。

Slack 2.png

こんな風にプロセスビルダーでできることは何でもSlackに通知できます。
商談が成約したらアイコンを :tada: にするとか、内容によって投稿先チャンネルを変えるとかもできますよ。

まとめ

LeadやEventがリアルタイムに流れてくるだけでもとても便利!ぜひ使ってみてください。

Attachmentsなんかはまだ未対応なので、PRも歓迎です。ドキュメント皆無なのでその辺も歓迎です。

最後に宣伝

同じようにチャットとSalesforceをつなぐサービスを最近リリースしました。

botdock.jpg

BotDock for Salesforce® | 株式会社co-meeting

よかったらご覧ください。
BotDockだと、ちゃんと認証してBotと対話式で活動の登録ができたりします。