Slack-Salesforce連携入門①(概要編)

## はじめに

この記事では、Slack社が提供しているSlack-Salesforce連携が持つ通知機能について解説します。
今回の記事では通知機能で実現出来ることの概要をご説明し、
実際の画面イメージを使った具体的な設定方法については、次回以降を予定しています。

通知機能を活用することで、Salesforceで受けた資料請求の問い合わせや、重要な商談の変化を即座にSlackで受信出来るようになります。
これらを素早く対応することで、顧客満足度の向上にもつながっていくはずです。
基本的な通知は画面設定だけで実現できますので、ぜひご活用ください。


Salesforceは2021年7月にSlack買収完了後、さらに両製品の連携強化に力を入れていくことを発表しています。
SlackからSalesforceのデータ更新なども出来るようになるようです。
新しい機能が発表されましたら、ご紹介していく予定です。

### 参考資料
この記事は、Salesforce社が提供する Trailhead（無償の学習サイト）のコンテンツをベースに作っています。
実際の環境で試してみたい場合は、以下を御覧ください。

[Salesforce を Slack と統合する](https://trailhead.salesforce.com/ja/content/learn/projects/integrate-salesforce-with-slack)

## 通知の概要

SalesforceからのSlackへの通知は、オブジェクトの項目が更新された場合等に発行するアラートの通知と、任意のメッセージ（カスタムメッセージ）通知の２種類で考えることが出来ます。
以下の図を使いながら、この違いをご説明致します。

![Salesforceの通知（概要図）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642894/4e2392e2-eea8-7e16-8f09-00aa6cd21792.png)
|:--|

アラートの通知は、オブジェクトの作成や更新があった時にアラート情報を、Slackに通知をしてくれる機能です。
最大の特徴は、画面設定だけで実現出来る手軽さです。
いくつかの標準オブジェクトとカスタムオブジェクトが扱える他、通知条件も指定することが出来ます。
ただし、メッセージ内容についてはカスタマイズが出来ないという欠点もあります。

カスタムメッセージを通知する方法は、この欠点をカバーしています。
こちらは、フローやプロセスを使って任意のメッセージを組み立てて、Slackに送信することが出来ます。
言い換えると、フローやプロセスの中で送信するメッセージを作るため数式の知識が必要となり、少し難易度が高くなります。

この記事では、アラートの通知について、設定出来る条件などをもう少し見ていきます。
任意のメッセージを通知する方法は、今後の画面操作の説明の中で詳細を紹介致します。

## 通知に指定出来る項目

### １．利用可能なオブジェクト

アラートの通知は、一部の標準オブジェクトの他に、カスタムオブジェクトも使うことが可能です。
機能が提供されている標準オブジェクトは、以下になります。

* リード (Lead)
* 取引先 (Account)
* 取引先責任者 (Contact)
* 商談 (Opportunity)
* ケース (Case)

※カスタムオブジェクトを使うためにはApexトリガクラスが必要になりますが、有効化の操作で自動作成されます。
実際の操作方法は、操作編で解説致します。

### ２．通知タイミング

Salesforce-Slack連携では、以下の通知タイミングを扱うことが出来ます。

* レコードを新規作成した時
* レコードを更新した時（値が変更した or 特定の値になった）
* レコードの担当が自分に割り当てられた時
* 任意のタイミング（※）

※パッケージ付属のボタンを画面に配置することで、Slackへの通知画面を呼び出すことが出来ます。

### ３．通知条件
通知の条件は、オブジェクト単位で行うか、レコード単位で行うかの選択と、項目値の条件を指定することができます。

オブジェクト単位の通知は、全てのレコードに対して通知が発生することになります。
大量の通知が発生してしまわないように、運用では注意が必要です。

レコード単位の通知は、通知設定をレコード単位で行う必要があるため少しだけ手間はかかりますが、本当に必要な通知だけに抑えることができます。

項目値の条件は、標準で用意されているものと、設定画面を使って自分で指定する方法があります。

■標準で用意されている条件
商談の場合、New（新規作成時）Stage Changed（フェーズ変更時）等があります。
![Slack項目条件設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642894/f6350ce5-50d6-aeda-fbf1-ab166f9b10df.png)

■項目値の条件を作成する画面

指定したオブジェクトに対して、項目の値が変更し場合 or 特定の値になった場合 という条件を、AND条件で組み合わせることができます。
![条件設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642894/dac52df7-d198-538f-311c-d43a2a2d8318.png)

### ４．通知先

Slackへの通知先は、チャンネル、または、人を指定することが出来ます。<br>
ただし、レコードの担当が自分に割り当てられた場合の通知は、必ずSlackアプリのメッセージタブに送信されます。

![通知内容4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642894/6b5dcbe2-b29c-8c50-efcb-fa570a5aca72.png)

### ５．通知内容とSalesforceアカウント

Slackへの通知は、以下のような形式で行われます。
画像は商談が成立してCloseした通知ですが、固定のメッセージと名前だけが通知されます。

この内容はチャンネルに参加していれば、Salesforceのライセンスを持っていなくても見ることが可能です。

![通知内容2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642894/9519b867-3af9-2bc9-5289-ce814510a979.png)
|:--|

「View Record」ボタンを押すと、Slackアカウントに紐づいたSalesforceアカウントユーザーの権限でレコード内容を取得し、自分だけが見える状態でSlackに再度通知が行われます。

![通知内容3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642894/260d60ad-bf87-335a-8ab4-b29a5eb386b8.png)

公開しても問題なければ「Post to Channel」ボタンを押してチャンネルに投稿し、Slack上の他のユーザーに情報を共有することもできます。
より具体的な画面操作については、操作編で解説します。

## まとめ

アラートの通知について、まとめると以下のようになります。

* 一部の標準オブジェクトは、画面だけで設定が可能
* カスタムオブジェクトも、Apexトリガを用意すれば、その他は画面だけで通知設定が可能
* 通知タイミングは、組み込まれた中から選択（オブジェクト作成時、更新時、担当が自分になった場合）
* 画面にボタンを配置することで、手動操作で通知を送ることも可能
* ただし、メッセージ内容は固定
* メッセージ内容を可変にしたい場合は、カスタムメッセージ通知を使う


パッケージに用意されている機能だけでも、コードを書くこと無く、とても柔軟な通知を実現することが可能です。
ぜひ皆さんも、通知機能を業務に取り入れてみて、Slackを中心にしたDigital HQ（デジタル本社）を実現して頂ければと思います。

次回は、初期セットアップの手順を確認していきます。