プラットフォームイベントを公開する
この最後のステップでは、#BearAlert
トピックが含まれる各投稿の通知をトリガーする Chatter Apex トリガーを実装します。
Chatter Apex トリガーを実装する
-
BearAlertTopicAssignmentTrigger
という名前の Apex トリガーを作成します。- Visual Studio Code で、force-app/main/default の下にある triggers フォルダーを右クリックし、[SFDX: Create Apex Trigger (SFDX: Apex トリガーを作成)] を選択します。
- トリガーの名前として
BearAlertTopicAssignmentTrigger
と入力します。 -
Enter キーを押してからもう一度 Enter キーを押して、デフォルトの
force-app/main/default/triggers
を受け入れます。
- デフォルトのコードを次のコードに置き換えます。
trigger BearAlertTopicAssignmentTrigger on TopicAssignment (after insert) { // Get FeedItem posts only Set<Id> feedIds = new Set<Id>(); for (TopicAssignment ta : Trigger.new){ if (ta.EntityId.getSObjectType().getDescribe().getName().equals('FeedItem')) { feedIds.add(ta.EntityId); } } // Load FeedItem bodies Map<Id,FeedItem> feedItems = new Map<Id,FeedItem>([SELECT Body FROM FeedItem WHERE Id IN :feedIds]); // Create messages for each FeedItem that contains the BearAlert topic List<String> messages = new List<String>(); for (TopicAssignment ta : [SELECT Id, EntityId, Topic.Name FROM TopicAssignment WHERE Id IN :Trigger.new AND Topic.Name = 'BearAlert']) { messages.add(feedItems.get(ta.EntityId).body.stripHtmlTags().abbreviate(255)); } // Publish messages as notifications List<Notification__e> notifications = new List<Notification__e>(); for (String message: messages) { notifications.add(new Notification__e(Message__c = message)); } List<Database.SaveResult> results = EventBus.publish(notifications); // Inspect publishing results for (Database.SaveResult result : results) { if (!result.isSuccess()) { for (Database.Error error : result.getErrors()) { System.debug('Error returned: ' + error.getStatusCode() +' - '+ error.getMessage()); } } } }
コードのポイント:- このトリガーは、1 つ以上のトピックが含まれるすべての新しい Chatter 投稿をインターセプトします。
- 投稿に
#BearAlert
トピックが含まれている場合は、トリガーは標準のEventBus
ユーティリティクラスを通じて通知として投稿メッセージを公開します。公開後にエラーチェックが行われます。
- ファイルを保存します。
-
triggers
フォルダーを右クリックし、[SFDX: Deploy Source to Org (SFDX: 組織にソースをリリース)] を選択して、トリガーを組織にリリースします。
Chatter トリガーをテストする
これで作業内容をテストできます。Chatter 投稿を作成して、通知がトリガーされることを確認します。
- アプリケーションランチャー () で、[Sales (セールス)] を見つけて選択します。セールスアプリケーションがすでに開いている場合は、ブラウザーを更新します。
- [Chatter] をクリックします。
- 次の内容の新しい投稿を作成します。
#BearAlert False alarm: It's just a big dog!
この時点でメッセージが次の両方として表示されます。
- 通知トースト
- Chatter 投稿
プロジェクトのまとめ
おめでとうございます。これであなたもプラットフォームイベントのエキスパートです。
プラットフォームイベントを定義する方法、Apex を使用してイベントを公開する方法、lightning/empApi
モジュールを使用する Lightning コンポーネントを通じてイベントに登録する方法を学習しました。
新しく得た知識を使って、独自のイベント駆動型アプリケーションを作成できます。