Skip to main content

既存のチャネルメンバーを更新する

メモ

メモ

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

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

チャネルメンバーがすでに存在する場合は、POST 要求を実行して強化された項目で上書きすることはできません。代わりに、PATCH 要求を実行することでチャネルメンバーを更新します。この手順では、SalesEvents チャネルの強化された項目を 1 つの強化された項目 (Phone 項目) に置き換えます。

チャネル ID を照会する

  1. Salesforce Platform API コレクションのフォークで、[Event Platform (イベントプラットフォーム)] > [Custom Channels (カスタムチャネル)] の順に展開して、[List event channels (イベントチャネルを一覧表示)] をクリックします。
  2. [Params (パラメーター)] タブで、q キー値に WHERE 句 WHERE DeveloperName='SalesEvents' を追加します。完全な URI は次のようになります。{{_endpoint}}/services/data/v{{version}}/tooling/query/?q=SELECT Id,DeveloperName,MasterLabel,ChannelType FROM PlatformEventChannel WHERE DeveloperName='SalesEvents'
  3. [Send (送信)] をクリックします。
  4. 返される応答では Id 項目にチャネル ID が含まれ、次の例のようになります。Id 値をコピーして、次の手順で使用します。
{
  "size": 1,
  "totalSize": 1,
  "done": true,
  "queryLocator": null,
  "entityTypeName": "PlatformEventChannel",
  "records": [
    {
      "attributes": {
        "type": "PlatformEventChannel",
        "url": "/services/data/v58.0/tooling/sobjects/PlatformEventChannel/0YL8b000000sXvSGAU"
      },
      "Id": "0YL8b000000sXvSGAU",
      "DeveloperName": "SalesEvents",
      "MasterLabel": "Custom Channel for Sales App",
      "ChannelType": "data"
    }
  ]
}

チャネルメンバー ID を照会する

  1. フォークされたコレクションの [Event Platform (イベントプラットフォーム)] > [Custom Channels (カスタムチャネル)] で、[List channel members (チャネルメンバーを一覧表示)] をクリックします。
  2. [Params (パラメーター)] タブで、q キー値に次の WHERE 句を追加して、<channel ID from query> を前の手順で取得した Id に置き換えます: WHERE EventChannel='<channel ID from query>' AND SelectedEntity='AccountChangeEvent'。完全な URI は次のようになります。{{_endpoint}}/services/data/v{{version}}/tooling/query/?q=SELECT Id,DeveloperName,EventChannel,FilterExpression,SelectedEntity FROM PlatformEventChannelMember WHERE EventChannel='<channel ID from query>' AND SelectedEntity='AccountChangeEvent'
  3. [Send (送信)] をクリックします。
  4. 返される応答では Id 項目にチャネルメンバー ID (例: 0YL8b000000sXvSGAU) が含まれ、次の例のようになります。この Id 値をコピーして、次の手順で使用します。
{
  "size": 1,
  "totalSize": 1,
  "done": true,
  "queryLocator": null,
  "entityTypeName": "PlatformEventChannelMember",
  "records": [
    {
      "attributes": {
        "type": "PlatformEventChannelMember",
        "url": "/services/data/v58.0/tooling/sobjects/PlatformEventChannelMember/0v88b0000004CgVAAU"
      },
      "Id": "0v88b0000004CgVAAU",
      "DeveloperName": "SalesEvents_chn_AccountChangeEvent",
      "EventChannel": "0YL8b000000sXvSGAU",
      "FilterExpression": null,
      "SelectedEntity": "AccountChangeEvent"
    }
  ]
}

PlatformEventChannelMember で PATCH 要求を行う

  1. フォークされたコレクションの [Event Platform (イベントプラットフォーム)] > [Custom Channels (カスタムチャネル)] > [Change Data Capture (変更データキャプチャ)] で、[Add enriched fields to channel member (チャネルメンバーに強化された項目を追加)] をクリックします。
  2. [Params (パラメーター)] タブで、PLATFORM_EVENT_CHANNEL_MEMBER_ID パラメーター用にコピーしたチャネルメンバー Id 値を追加します。
  3. [Body (ボディ)] をクリックして、[Raw (未加工)] と [JSON] のオプションが選択されていることを確認します。
  4. ボディを次の JSON ボディに置き換えます。
    {
      "FullName": "SalesEvents_chn_AccountChangeEvent",
      "Metadata": {
      "enrichedFields": [
        {
          "name": "Phone"
        }
      ],
      "eventChannel": "SalesEvents__chn",
      "selectedEntity": "AccountChangeEvent"
      }
    }
  5. [Send (送信)] をクリックします。
  6. 応答状況が [204 No Content (204 コンテンツなし)] であることを確認します。
メモ

更新プロセスでは、項目の追加、削除、置換に適用される、強化された項目への更新を実行する手順の概要を説明しました。強化された項目を削除するだけであれば、Tooling API で EnrichedField に対して DELETE 要求を実行するのが簡単な方法です。まず、「チャネルメンバーを追加して、変更イベント強化を設定する」手順で行ったようなクエリを実行して、削除する強化された項目の ID を取得します。次に、/tooling/sobjects/EnrichedField/<Id> で DELETE 要求を実行します。EnrichedField は項目の削除に使用できますが、更新には使用できません。

チャネルに登録して、新しい強化された項目を受信する

カスタムチャネルに登録し、レコードを更新し、受信した変更イベントで強化された項目配列を確認することで、強化の更新が適切に完了したことを検証します。SalesEvents__chn チャネルに登録したまま、もう一度取引先を更新してみましょう。

  1. Trailhead Playground で、先ほど作成した取引先のタブに切り替えます。
  2. Type (種別) 項目を編集して、Other (その他) に変更します。
  3. レコードを保存します。
  4. [Streaming Monitor] タブに切り替えます。タイムラインの最新のドットをクリックして、受信したイベントを表示します。
  5. イベントペイロードに Phone 項目が強化された項目として含まれます。External_Account_ID__cIndustry は強化された項目ではなくなったため、含まれません。受信したイベントメッセージの changedFields 配列は、変更された項目を示しています。
{
  "LastModifiedDate": "2023-08-29T19:37:19Z",
  "Phone": "4155551212",
  "Type": "Other",
  "ChangeEventHeader": {
    "commitNumber": 11658991958431,
    "commitUser": "0058b00000HpWcRAAV",
    "sequenceNumber": 1,
    "entityName": "Account",
    "changeType": "UPDATE",
    "changedFields": [
      "Type",
      "LastModifiedDate"
    ],
    "changeOrigin": "com/salesforce/api/soap/58.0;client=SfdcInternalAPI/",
    "transactionKey": "0001577e-f890-0389-9d0d-c918449ad498",
    "commitTimestamp": 1693337839000,
    "recordIds": [
      "0018b00002Vlq7xAAB"
    ]
  }
}

このプロジェクトでは、チャネルの作成方法、オブジェクトの通知を有効にするためのメンバーの追加、イベント強化の設定、イベントを受信するためのチャネルへの登録など、多くのことを学びました。また、この手順を実行するために、Postman や Streaming Monitor アプリケーションなどのさまざまなツールを使用しました。これで、変更データキャプチャチャネルとイベント強化に取り組むための知識を習得できました。 

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