Skip to main content

プラットフォームイベントの公開

メモ

メモ

日本語で受講されている方へ
このバッジの Trailhead ハンズオン Challenge は英語で受講していただく必要があります。英語の意味についてはかっこ内の翻訳をご参照ください。必ず英語の値をコピーして貼り付けてから、Trailhead Playground の言語を [English] に、ロケールを [United States] に切り替えてください。こちらの指示に従ってください。

翻訳版の Trailhead を活用する方法については、自分の言語の Trailhead バッジをご覧ください。

この最後のステップでは、#BearAlert トピックが含まれる各投稿の通知をトリガーする Chatter Apex トリガーを実装します。

Chatter Apex トリガーを実装する

  1. BearAlertTopicAssignmentTrigger という名前の Apex トリガーを作成します。
    1. Visual Studio Code で、force-app/main/default の下にある triggers フォルダーを右クリックし、[SFDX: Create Apex Trigger (SFDX: Apex トリガーを作成)] を選択します。
    2. トリガーの名前として BearAlertTopicAssignmentTrigger と入力します。
    3. Enter キーを押してからもう一度 Enter キーを押して、デフォルトの force-app/main/default/triggers を受け入れます。
  2. デフォルトのコードを次のコードに置き換えます。
    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 ユーティリティクラスを通じて通知として投稿メッセージを公開します。公開後にエラーチェックが行われます。
  3. ファイルを保存します。
  4. triggers フォルダーを右クリックし、[SFDX: Deploy Source to Org (SFDX: 組織にソースをリリース)] を選択して、トリガーを組織にリリースします。

Chatter トリガーをテストする

これで作業内容をテストできます。Chatter 投稿を作成して、通知がトリガーされることを確認します。

  1. アプリケーションランチャー (アプリケーションランチャーアイコン) で、[Sales (セールス)] を見つけて選択します。セールスアプリケーションがすでに開いている場合は、ブラウザーを更新します。
  2. [Chatter] をクリックします。
  3. 次の内容の新しい投稿を作成します。
    #BearAlert False alarm: It's just a big dog!

この時点でメッセージが次の両方として表示されます。

  • 通知トースト
  • Chatter 投稿

Chatter 投稿によってトリガーされた通知を示す画像。

プロジェクトのまとめ

おめでとうございます。これであなたもプラットフォームイベントのエキスパートです。

プラットフォームイベントを定義する方法、Apex を使用してイベントを公開する方法、lightning/empApi モジュールを使用する Lightning コンポーネントを通じてイベントに登録する方法を学習しました。

新しく得た知識を使って、独自のイベント駆動型アプリケーションを作成できます。

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる