こんにちは!
皆さんSlack活用していますか?
Slackの便利なところはメンションのしやすさや、コードブロック、箇条書きなどを活用した文章の見やすさ、
スレッド形式でのやり取りなどが挙げられると思います。
しかし、もし、SalesforceとSlackを連携させた時にこれらの便利なものが使えないのであれば、正直がっかり
しませんか?Salesforceとの連携なんてしてあげないんだから!と、Salesforceに冷たい対応をとってしまいませんか?
当社ホームページに来たお問合せをWeb To Leadで取り込み、合わせてSalckにも通知する、といった連携を
構築した際のお話です。
ホームページ問い合わせをSlackに連携するための仕組みについて
当社ホームページのお問い合わせをSlackに連携するにあたり、Salesforceにも情報を蓄積する必要があるし、
Slackとの連携もしたい、と言うことで、以下の構成で連携しました。
当社ホームページからSalesforceへの連携は、当社製品KippoWを利用しています。
すごく便利!おすすめ!簡単に連携できます。
※KippoWの詳細についてはこちらをご覧ください。WordPressのContact7 Formなどから
簡単にSalesforceへのWeb To Leadができるようになります!
SalesforceからSlackへの連携は、以前のブログでも記載しましたが、SalesforceとSlackを繋ぐことで
連携設定は完了となります。(標準オブジェクトのリードなので)
※以前のブログはこちら「Salesforce技術ブログ(SalesforceとSlackを繋ぎたいんじゃ!)」
Salesforceにリード登録されたタイミングでSlackへ通知する
リードに登録された後、Slackに通知させるためにSlack SetupアプリケーションのAutomation Configuration
設定から、リード登録時のメッセージ宛先チャンネルを設定します。
下記のようにどのチャンネルにメッセージを送るかの設定します。
登録後、IDが割り当てられますのでそのIDをコピーします。
※黒塗りの「MESSAGE DESTINATION ID」の右のコピーマークをクリック。
今回、リード登録時にSlack通知させるために「レコードトリガーフロー」を利用しました。
ワンクッション挟みたいのであれば画面フローでの構築も可能だと思いますし、今であれば
まだプロセスビルダーでの構築もできます。(お勧めしないけど)
今回は上記のような構成で仮組みしました。
※ちゃんとエラー処理は入れるようにしましょう。上記は簡素化のために省略しています。
内容を細かく説明すると、
①開始条件
このトリガ処理が起動する条件を定義します。今回はリードが作成された
タイミングのみ、データ保存後に起動するようにしました。
- 「オブジェクト」にリードを設定
- 「トリガを設定」にレコードが作成された を選択
- 「エントリ条件を設定」は、なし
- 「フローを最適化」は、アクションと関連レコード を選択
②レコードを取得
Slack投稿の際、特定のユーザにメンションをしたいため、Salesforceのユーザオブジェクトに
Slack IDを予め保存しておき、その値を取得します。リードの所有者の割り当てと連動させるなど
工夫によってはもっと便利にできます。簡易承認プロセスのようなこともできます。
- 「オブジェクト」にユーザを選択
- 「ユーザレコードを絞り込み」にUsername=(取得したいユーザ名) を設定
- 「ユーザレコードを並び替え」は無し
- 「保存するレコード数」は最初のレコードのみ
- 「レコードデータの保存方法」はすべての項目を自動的に保存 を選択
③Apexアクションの設定
Slackへ通知を行うためにApexアクションを設定します。
ここでは、先ほどコピーした「MESSAGE DESTINATION ID」を割り当て、投稿するチャンネル、
投稿するメッセージを設定します。
- 「Message Destination ID」に先ほどコピーした「MESSAGE DESTINATION ID」を設定
- 「Record ID」に{!$Record.Id}(リードのレコードID)を設定
- 「Message」に数式を設定
※「Message」に設定した数式に本文を記載し割り当てます。
ここまで設定したら保存して「有効化」を行うことで、リードが新規作成される度に
Slackへメッセージが通知されます。
※リードソースの設定などを条件に組み込めば、ホームページ以外からのリードを除外できます。
フローなのでかなり色々なことができます。
折角だからメンションとかコードブロックとかSlackの機能を使って投稿したい
と言うことで、みんな折角投稿するならSlackの機能を最大限活用して投稿したいと思うはずです。
少なくとも私は思いました。
と言うことで、色々と試してみた結果、数式に以下の記述を行うことでメンションやコードブロック
投稿ができます。
①ユーザへのメンション
<@と>の文字列の間にメンション対象者のSlack IDを設定することでメンションできます。
Slack IDはSlackのシステム管理者にご確認ください。(またはメンションリンクのURLを確認してください。)
'<@' & 取得したSlack ID & '>'
②@Channel、@here
@Channelや@hereなどを使いたい場合は、@の代わりに!を記載することでメンションできます。
'<!channel>'
'<!here>'
③文字を太字にする
文字を太文字にする場合は、*(アスタリスク)で文字を囲みます。
'*' & '太字になります' & '*'
④イタリック表記にする
イタリック表記にする場合は、_(アンダースコア)で文字を囲みます。
'_' & '斜め文字になります' & '_'
⑤文字に取り消し線をつけます
文字に取り消し線を付ける場合は~(チルダ)で文字を囲みます。
'~' & '文字が取り消されます' & '~'
⑥コード表記する場合は、`(バッククォート)で文字を囲みます。
'`コードになります`'
⑦引用表記にする
引用表記する場合は、文字の前に>(やまかっこ)をつけます。
'>' & '引用されたみたいになります'
⑧コードブロック表記にする
コードブロック表記にする場合は、対象の文字を“`(バッククォート3つ)で
囲みます。改行はbr()を記入します。
'```' & 'テストテストテスト1行目' & br()
& '2行目' & br()
& '3ぎょうめ' & br()
& '```'
⑨チャンネルリンクにする
チャンネルリンクにする場合は、チャンネル名の前に#(シャープ)をつけます。
'#' & 'general'
※箇条書きはうまく設定できず引き続き検証中です。
フローと数式を活用することにより、Salesforceからかなり便利にSlack投稿ができるように
なります。
これで、Slackへの投稿が便利になりますね。ますます皆さんSalesforceとSlackを連携したくなるはず!
最後にご参考までにテストで作成したサンプル数式を貼り付けておきます。フローのテキスト形式の
数式にこちらを貼り付ければ動作確認ができます。必要な箇所のみ切り出してご利用ください。
「個人へのメンション」の{!Hensu}の箇所は、フローで取得したSlack IDを設定してください。
'個人へのメンション' & br()
& '<@' & {!Hensu} & '>' & br()
& br()
& '@chanelへのメンション' & br()
& '<!channel>' & br()
& br()
& '@hereへのメンション' & br()
& '<!here>' & br()
& br ()
& 'コードブロック' & br()
& '```' & 'テストテストテスト1行目' & br()
& '2行目' & br()
& '3ぎょうめ' & br()
& '```' & br()
& br()
& '太字' & br()
& '*' & '太字になります' & '*' & br()
& br()
& 'イタリック' & br()
& '_' & '斜め文字になります' & '_' & br()
& br()
& '取り消し線' & br()
& '~' & '文字が取り消されます' & '~' & br()
& br()
& 'コード' & br()
& '`コードになります`' & br()
& br()
& '引用' & br()
& '>' & '引用されたみたいになります' & br()
& br()
& 'チャンネルリンク' & br()
& '#' & 'general'
それではまた〜
こんにちは!
皆さんSlack大好きですよね。私も大好きです。当社にもSlack愛に溢れているメンバーが大勢います。
社内の情報のやりとりはメールで行うことはなく、全てSlackで行う文化が浸透してます。
となれば、当然Salesforceの情報もSlackに集めたい!という声も大きくなってくるわけです。(きっと)
ということで、声が大きくなる前に勝手に繋いでみたんじゃ!という内容です。
そもそもですが、大体のことはTrailheadの「SalesforceをSlackと統合する」で細かく学ぶことができます。(Trailhead本当に便利)
設定に悩まれている人は、こちらの単元を先に終えていただくことをお勧めいたします。
その中で当社が少し苦労した点についてお伝えします。
SalesforceとSlackの連携設定〜カスタムオブジェクト設定〜
Salesforce側でのSlackとの連携設定は、ほとんどこのSlack Setupアプリケーションから行います。
※AppExchangeからインストール可能です。ページレイアウトやプロセスビルダー、
フローなどの設定はこのアプリケーション外での設定となります。
以前はこのようなアプリが用意されていなかった関係で、有志の人が開発した連携アプリケーションを利用させていただいていました。
別途Slack側でのSalesforceアプリの追加等、行うべき手順はありますがそれらはTrailheadをご確認ください。(Trailhead本当に便利)
取引先、取引先責任者、商談、活動などの標準オブジェクトについてはこちらのアプリケーションで連携設定を
行うだけで自動で連携ができるようになるのですが、カスタムオブジェクトについては、個別に連携設定を行う必要があります。
※上記画像の「Enable Custom Objects」から対象のカスタムオブジェクトを追加する必要があります。
当社はSalesforceでプロジェクト情報を管理している関係上、その情報がSlackに連携できるといいな〜ということで
「ジョブ」というカスタムオブジェクトを連携対象のオブジェクトに追加設定しました。
※すでに設定が完了した後の画面ハードコピーですので「ジョブ」がすでに存在しますがご了承ください。
カスタムオブジェクトの追加を行う際は、「+ Add Cusotm Object」を押し、対象オブジェクト、Slackに連携した際に
表示させたい項目(最大9まで)を選択します。
登録後、Statusが「Pending」、Actionsに「Activate▼」と表示されますので、「Activate▼」を押します。
通常は、「Automatic Activation」を押すことで自動でそのカスタムオブジェクトが使えるようになるのですが、
当社は下記画像の通り、エラーが発生してしまったため「Manual Activation」を行いました。
ちなみに、「Automatic Activation」はおそらくボタン一つで対応完了となると思われるのですが、「Manual Activation」は
下記画像の通り8つのステップを順にこなしていく必要があります。
一部を端折って簡単に手順を記載すると、
①Sandbox環境を用意する。
②上記画面の「Next」を押すと表示されるApexクラス、Apexトリガーのソースコードをコピー&ペーストして、
Sandbox環境にApexクラス、Apexトリガーを新規登録する。(開発者コンソールからが楽)
③テストコードのカバレッジ率が組織全体で75%以上であることを確認し、本番環境に送信変更セットを作りデプロイする。
④Slackアプリケーションインストール時に追加されている「Send to Slack」や「Alert Slack」といったクイックアクションやカスタムボタン、
Lightningコンポーネントなどを必要に応じて画面配置する。
⑤プロセスビルダーやフローを利用し、特定条件下でSlack投稿されるように設定する。
といった流れです。
(8つですらない。⑤は「Automatic Activation」でも別途実施する必要があり、上記画像にはない。)
無事に設定は完了できたのですが、自動で設定できる「Automatic Activation」で追加できた方がおそらく100倍は楽!
当社が「Automatic Activation」で失敗した理由は、別の改修により追加された自動起動フローに対し、データ更新を
考慮したテストクラスの追記ができていなかったことによる、テストクラス実行エラーが原因でした。。。
(恥ずかしいっ!自動起動フローの多用は本当にやめたい。。。)
別の技術ブログで⑤についてフローで対応した内容もお伝えします。
お楽しみに〜。