Salesforce API によるイベントメッセージの公開
イベントを公開するには、sObject を挿入する方法と同じ方法でイベントを公開します。SOAP API、REST API、Bulk API など、任意の Salesforce API を使用してプラットフォームイベントを作成できます。
イベントメッセージを公開すると、API から返された結果に、操作が成功したかどうかと、発生したエラーに関する情報が含まれます。success 項目が true の場合、標準量イベントのイベントが公開されています。大規模イベントの場合、公開要求が Salesforce のキューに入れられ、イベントメッセージがすぐに公開されないことがあります。詳細は、「大規模プラットフォームイベントの保持」を参照してください。success が false の場合、イベント公開操作でエラーが発生しており、エラーは errors 項目で返されています。
返される結果には Id システム項目も含まれます。Id 項目値は、登録者に配信されるイベントメッセージには含まれません。これは、イベントメッセージの識別に使用されず、必ずしも一意ではありません。登録者は、配信されたメッセージに含まれる ReplayId システム項目を使用して、ストリーム内のイベントの位置を特定できます。
次のセクションの例は、大量のプラットフォームイベントに基づいています。
REST API
REST API を使用してプラットフォームイベントメッセージを公開するには、POST 要求を次のエンドポイントに送信します。
1/services/data/v49.0/sobjects/Event_Name__e/例
Low Inkという名前のプラットフォームイベントを定義している場合、Low_Ink__e データを追加して、イベント通知を公開します。この例では、種別 Low_Ink__e の 1 つのイベントを REST API で作成します。
REST エンドポイント:
1/services/data/v49.0/sobjects/Low_Ink__e/リクエストボディ:
1{
2 "Printer_Model__c" : "XZO-5"
3}プラットフォームイベントメッセージが公開されると、REST 応答が次の出力のように表示されます。簡潔にするため、ヘッダーは削除しています。
1HTTP/1.1 201 Created
2
3{
4 "id" : "e01xx0000000001AAA",
5 "success" : true,
6 "errors" : [ {
7 "statusCode" : "OPERATION_ENQUEUED",
8 "message" : "232fd30e-0a71-42bd-a97b-be0e329b2ded",
9 "fields" : [ ]
10 } ]
11}REST API 複合リソース
1 つの REST API 要求で複数のプラットフォームイベントメッセージを公開するには、composite リソースを使用します。次のエンドポイントに POST 要求を送信します。
1/services/data/v49.0/composite/各プラットフォームイベントを Composite 要求ボディのサブ要求として追加します。
例
この Composite 要求には、リクエストボディに 2 つのプラットフォームイベントが含まれています。
1{
2 "allOrNone": true,
3 "compositeRequest": [
4 {
5 "method": "POST",
6 "url": "/services/data/v49.0/sobjects/Low_Ink__e",
7 "referenceId": "event1",
8 "body": {
9 "Serial_Number__c" : "1000",
10 "Printer_Model__c" : "XZO-5"
11 }
12 },
13 {
14 "method": "POST",
15 "url": "/services/data/v49.0/sobjects/Low_Ink__e",
16 "referenceId": "event2",
17 "body": {
18 "Serial_Number__c" : "1001",
19 "Printer_Model__c" : "XY-10"
20 }
21 }
22 ]
23}プラットフォームイベントメッセージが公開されると、REST 応答が次の出力のように表示されます。このサンプル応答からヘッダーが削除されます。
1{
2 "compositeResponse" : [ {
3 "body" : {
4 "id" : "e01xx0000000001AAA",
5 "success" : true,
6 "errors" : [ {
7 "statusCode" : "OPERATION_ENQUEUED",
8 "message" : "436ccd6f-cc43-4861-a260-a3ffbc1bc27c",
9 "fields" : [ ]
10 } ]
11 },
12 "httpStatusCode" : 201,
13 "referenceId" : "event1"
14 }, {
15 "body" : {
16 "id" : "e01xx0000000001AAA",
17 "success" : true,
18 "errors" : [ {
19 "statusCode" : "OPERATION_ENQUEUED",
20 "message" : "85d962fb-f05c-4ccf-9ee1-ac751d0fc07f",
21 "fields" : [ ]
22 } ]
23 },
24 "httpStatusCode" : 201,
25 "referenceId" : "event2"
26 } ]
27}SOAP API
SOAP API を使用してプラットフォームイベントメッセージを公開するには、create() コールを使用します。
例
この例は、1 回のコールで 3 つのプラットフォームイベントメッセージを作成する要求の SOAP メッセージ (Partner API を使用) を示しています。各イベントに Printer_Model__c という名前の 1 つのカスタム項目が含まれます。
1<?xml version="1.0" encoding="UTF-8"?>
2<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:sobject.partner.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="urn:partner.soap.sforce.com">
3<SOAP-ENV:Header>
4 <ns2:SessionHeader>
5 <ns2:sessionId>00DR00000001fWV!AQMAQOshATCQ4fBaYFOTrHVixfEO6l...</ns2:sessionId>
6 </ns2:SessionHeader>
7 <ns2:CallOptions>
8 <ns2:client>Workbench/34.0.12i</ns2:client>
9 <ns2:defaultNamespace xsi:nil="true"/>
10 <ns2:returnFieldDataTypes xsi:nil="true"/>
11 </ns2:CallOptions>
12</SOAP-ENV:Header>
13<SOAP-ENV:Body>
14 <ns2:create>
15 <ns2:sObjects>
16 <ns1:type>Low_Ink__e</ns1:type>
17 <ns1:fieldsToNull xsi:nil="true"/>
18 <ns1:Id xsi:nil="true"/>
19 <Printer_Model__c>XZO-600</Printer_Model__c>
20 </ns2:sObjects>
21 <ns2:sObjects>
22 <ns1:type>Low_Ink__e</ns1:type>
23 <ns1:fieldsToNull xsi:nil="true"/>
24 <ns1:Id xsi:nil="true"/>
25 <Printer_Model__c>XYZ-100</Printer_Model__c>
26 </ns2:sObjects>
27 <ns2:sObjects>
28 <ns1:type>Low_Ink__e</ns1:type>
29 <ns1:fieldsToNull xsi:nil="true"/>
30 <ns1:Id xsi:nil="true"/>
31 <Printer_Model__c>XYZ-9000</Printer_Model__c>
32 </ns2:sObjects>
33 </ns2:create>
34</SOAP-ENV:Body>
35</SOAP-ENV:Envelope>Partner SOAP API 要求の応答は、次のように表示されます。簡潔にするため、ヘッダーは削除しています。
1<?xml version="1.0" encoding="UTF-8"?>
2<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com">
3<soapenv:Header>
4 ...
5</soapenv:Header>
6<soapenv:Body>
7 <createResponse>
8 <result>
9 <id>e00xx000000000F</id>
10 <success>true</success>
11 <errors>
12 <message>04b8724e-e7e7-4caf-9bcd-0d14c9f97e31</message>
13 <statusCode>OPERATION_ENQUEUED</statusCode>
14 </errors>
15 </result>
16 <result>
17 <id>e00xx000000000G</id>
18 <success>true</success>
19 <errors>
20 <message>7378b9cc-d381-4150-b093-336e3a0e4018</message>
21 <statusCode>OPERATION_ENQUEUED</statusCode>
22 </errors>
23 </result>
24 <result>
25 <id>e00xx000000000H</id>
26 <success>true</success>
27 <errors>
28 <message>32da1ef3-6877-485a-8dde-1174f589e31a</message>
29 <statusCode>OPERATION_ENQUEUED</statusCode>
30 </errors>
31 </result>
32 </createResponse>
33</soapenv:Body>
34</soapenv:Envelope>