Skip to main content
The Trailblazer Community will undergo maintenance on Saturday, November 15, 2025 and Sunday, November 16, 2025. Please plan your activities accordingly.

プラットフォームイベントを公開する

メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 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 コンポーネントを通じてイベントに登録する方法を学習しました。

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

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む