85
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Salesforce App CloudAdvent Calendar 2015

Day 23

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

Last updated at Posted at 2015-12-22

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組織にパッケージをインストール

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

85
69
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?