Salesforceには通知という機能があります。
これには標準機能として自動実行されるものと、任意で設定できるカスタム通知があります。
今回はカスタム通知の設定方法について解説します。
カスタム通知とは
通知とはSalesforceで特定のイベントが発生した場合にユーザに知らせることができる機能です。
自動で通知されるものの例としては、ユーザが承認申請を受信した場合や
Chatter でメンションされた場合などです。
この通知を任意の内容、タイミングで行うように設定できます。それがカスタム通知です。
Salesforce公式HELP:
通知の有効化または無効化
通知に関する考慮事項
カスタム通知種別の作成 ※必須
カスタム通知はフローやApexでも実行できますが、
最初に「カスタム通知種別」を作成する必要があります。
Salesforce公式HELP:デスクトップまたはモバイル通知の作成
Salesforceの設定から検索ボックスに「カスタム通知」と入力し、
「カスタム通知」をクリックします。
「新規」ボタンをクリックします。
カスタム通知名、API参照名を入力します。
サポートされるチャネルを選択します。 ※必ずどちらかは選択します。
入力が完了したら「保存」ボタンをクリックします。
入力したカスタム通知種別が登録されます。
API参照名はカスタム通知の設定で使用します。
フローの設定方法
フローからカスタム通知を設定します。
なお、カスタム通知種別を作成していない場合は、こちらを参照してください。
例としてレコードを更新したときに通知されるように設定します。
オブジェクトはカスタムオブジェクトの「商談(カスタム)」を使用します。
Salesforce公式HELP:
フローコアアクション: カスタム通知を送信
カスタム通知をフローで送信する方法
①フローの新規作成、オブジェクトの設定
Salesforceの設定からプロセスの自動化 > フロー をクリックします。
「新規フロー」ボタンをクリックします。
または、アプリケーションランチャーから「自動化」アプリケーションを開き、
ホーム、またはフロー タブから「新規」ボタンをクリックします。
テンプレートを使用してフローを作成するかどうか選択できます。
ここでは「最初から開始」を選択して、次へをクリックします。
フロー種別を選択します。
例ではレコードを更新した時にカスタム通知を行うために、
「レコードトリガフロー」を選択して、次へをクリックします。
例としてカスタムオブジェクト「商談(カスタム)」を設定します。
・オブジェクトを選択:「商談(カスタム)」
・トリガーを設定:「レコードが更新された」
・エントリ条件を設定:「なし」
・フローを最適化:「アクションと関連レコード」
・外部システムにアクセス…:「チェックなし」
②通知先の設定
開始の下、即時実行と終了の間にある◯にカーソルを近づけると+マークになります。
これをクリックして要素を追加していきます。
要素の中から「割り当て」を探してクリックします。
表示ラベルとAPI参照名を入力します。
変数値を設定の「変数」入力欄をクリックして、「+新規リソース」をクリックします。
新規リソースでは、リソース種別に「変数」を選択します。
API参照名を入力し、データ型は「テキスト」を選択します。
複数の通知先を設定する場合は「複数の値を許可 (コレクション)」にチェックします。
入力が完了したら「完了」をクリックします。
Salesforce公式HELP:フローのリソース: 変数
変数に新規作成した変数のAPI参照名を指定します。
変数に値を登録するために演算子は「追加」を選択します。
値にはユーザーIDやレコードのユーザIDを持つ項目を指定します。
Salesforce公式HELPには公開グループのメンバーを設定する手順があります。
Salesforce公式HELP:カスタム通知をフローで送信する方法
③カスタム通知種別の取得
要素の中から「レコードを取得」を探してクリックします。
表示ラベルとAPI参照名を入力します。
オブジェクトは「カスタム通知種別」と入力します。
レコードの絞り込みは項目に「DeveloperName」、演算子に「次の文字列と一致する」を選択、
値には作成したカスタム通知種別のAPI参照名を指定します。
なお、例ではDeveloperNameで絞り込む値はカスタム表示ラベルに設定しています。
カスタム表示ラベルやカスタムメタデータ型などに登録して参照すると、
別環境に反映させるときにフローをリリースしなくて済みます。
今回はDeveloperNameで一意に絞り込んでいるため、デフォルト値のままにします。
④カスタム通知の設定
要素を追加から「アクション」を探してクリックします。
表示されるアクションの種類だけでも数が多いので、「カスタム通知」と検索します。
「カスタム通知を送信」が表示されたらクリックします。
表示ラベルとAPI参照名を入力します。
カスタム通知種別 IDは「レコードの取得」で取得したカスタム通知種別 IDを選択します。
受信者 IDは「割り当て」で作成した変数を指定します。
通知タイトル、通知本文を入力します。
対象 IDを設定すると通知をクリックしたときにレコードを開くことができます。
選択時に全体が見えないのですが、「トリガー {オブジェクト名}」をクリックし、
オブジェクトIDを選択します。
※2つ同じ「トリガー {オブジェクト名}」があり、一方は変更前の値を持っています。
「{!$Record__Prior.}」は変更前です。念のため。
Salesforce公式HELP:フローコアアクション: カスタム通知を送信
フローが完成したら保存して「有効化」します。
実行結果
レコードを更新すると通知が届きました。
Apexの設定方法
Apexからカスタム通知を送信することもできます。
(環境に合わせて黄色背景を修正してください)
カスタム通知種別の作成が必要です。こちらを参照してください。
Apex開発者ガイド:CustomNotification クラス
// 作成したカスタム通知種別を取得
CustomNotificationType notificationType =
[SELECT Id, DeveloperName FROM CustomNotificationType
WHERE DeveloperName='TestNotification'];
// CustomNotificationクラスをインスタンス化
Messaging.CustomNotification notification = new Messaging.CustomNotification();
// 通知内容を設定
notification.setTitle('ここはタイトルです');
notification.setBody('ここは本文です');
// カスタム通知種別とオブジェクトレコードIDを指定
notification.setNotificationTypeId(notificationType.Id);
notification.setTargetId(record.Id); // レコードID
// 通知を送信
notification.send(strSendUserSet); // 通知先ユーザIDのセット(String)
Apex、フローどちらからも届いています。
まとめ
カスタム通知の設定方法について解説しました。
メール通知だけでなく、Salesforceプラットフォーム上でも通知をしたい場合は
参考にしてみてください。
もし参考になれば幸いです。