Help us understand the problem. What is going on with this article?

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

More than 3 years have 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と対話式で活動の登録ができたりします。

atskimura
株式会社co-meeetingのCEO。最近はSalesforce上で動くアプリを作ってます。コピペテックはじめました😀
http://www.co-meeting.co.jp/
co-meeting
株式会社co-meetingでは、創業以来スローガンである「Happy Work! Happy Life!」を掲げ、世界中の「働く人」の人生を豊かにするソフトウェアサービスを開発・提供することを目標とすると同時に、社員みんなが楽しく充実した仕事ができる会社を目指しています。
https://www.co-meeting.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした