既存のチャネルメンバーを更新する
チャネルメンバーがすでに存在する場合は、POST 要求を実行して強化された項目で上書きすることはできません。代わりに、PATCH 要求を実行することでチャネルメンバーを更新します。この手順では、SalesEvents チャネルの強化された項目を 1 つの強化された項目 (Phone 項目) に置き換えます。
チャネル ID を照会する
- Salesforce Platform API コレクションのフォークで、[Event Platform (イベントプラットフォーム)] > [Custom Channels (カスタムチャネル)] の順に展開して、[List event channels (イベントチャネルを一覧表示)] をクリックします。
- [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' - [Send (送信)] をクリックします。
- 返される応答では
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 を照会する
- フォークされたコレクションの [Event Platform (イベントプラットフォーム)] > [Custom Channels (カスタムチャネル)] で、[List channel members (チャネルメンバーを一覧表示)] をクリックします。
- [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' - [Send (送信)] をクリックします。
- 返される応答では
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 要求を行う
- フォークされたコレクションの [Event Platform (イベントプラットフォーム)] > [Custom Channels (カスタムチャネル)] > [Change Data Capture (変更データキャプチャ)] で、[Add enriched fields to channel member (チャネルメンバーに強化された項目を追加)] をクリックします。
- [Params (パラメーター)] タブで、
PLATFORM_EVENT_CHANNEL_MEMBER_IDパラメーター用にコピーしたチャネルメンバーId値を追加します。 - [Body (ボディ)] をクリックして、[Raw (未加工)] と [JSON] のオプションが選択されていることを確認します。
- ボディを次の JSON ボディに置き換えます。
{ "FullName": "SalesEvents_chn_AccountChangeEvent", "Metadata": { "enrichedFields": [ { "name": "Phone" } ], "eventChannel": "SalesEvents__chn", "selectedEntity": "AccountChangeEvent" } } - [Send (送信)] をクリックします。
- 応答状況が [204 No Content (204 コンテンツなし)] であることを確認します。
チャネルに登録して、新しい強化された項目を受信する
カスタムチャネルに登録し、レコードを更新し、受信した変更イベントで強化された項目配列を確認することで、強化の更新が適切に完了したことを検証します。SalesEvents__chn チャネルに登録したまま、もう一度取引先を更新してみましょう。
- Trailhead Playground で、先ほど作成した取引先のタブに切り替えます。
Type(種別) 項目を編集して、Other (その他) に変更します。- レコードを保存します。
- [Streaming Monitor] タブに切り替えます。タイムラインの最新のドットをクリックして、受信したイベントを表示します。
- イベントペイロードに
Phone項目が強化された項目として含まれます。External_Account_ID__cやIndustryは強化された項目ではなくなったため、含まれません。受信したイベントメッセージの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 アプリケーションなどのさまざまなツールを使用しました。これで、変更データキャプチャチャネルとイベント強化に取り組むための知識を習得できました。
