Apex を使用したサービスレポートの作成
作業指示、作業指示品目、サービス予定に対する [サービスレポートを作成] アクションは、Apex コードを使用してコールすることもできます。以下に示すコード例は、createServiceReport アクションの REST API リソースに対して Apex コールアウトを実行し、2 つの署名を使用してサービスレポートを作成します。
各サービスレポートには、親レコードのデータと、顧客、技術者など、サインする必要がある人の署名が含まれます。API コールでは、レポートで使用される 1 つ以上の署名を定義できます。署名の数と種別は、サービスレポートテンプレートの署名設定と一致する必要があります。
API Endpoint (v41.0): /services/data/v41.0/actions/standard/createServiceReport
1String salesforceHost = System.Url.getSalesforceBaseURL().toExternalForm();
2String url = salesforceHost + '/services/data/v41.0/actions/standard/createServiceReport';
3// Create HTTP request
4HttpRequest request = new HttpRequest();
5request.setEndpoint(url);
6request.setMethod('POST');
7request.setHeader('Content-Type', 'application/json');
8request.setHeader('Authorization', 'OAuth ' + UserInfo.getSessionId());
9// Set the body as a JSON object
10request.setBody('{"inputs" : [ {"entityId" : "0WOxx000000001E","signatures" : [{"data":"Base64 code for the captured signature image","contentType":"image/png","name":"Customer Signature","signatureType":"Default","place":"San Francisco","signedBy":"John Doe","signedDate":"2019-06-05 12:00:00"}],"templateId" : "0SLR00000004DBFOA2"} ]}');
11Http http = new Http();
12HttpResponse response = http.send(request);
13// Parse the JSON response
14if (response.getStatusCode() != 201) {
15 System.debug('The status code returned was not expected: ' +
16 response.getStatusCode() + ' ' + response.getStatus());
17} else {
18 System.debug(response.getBody());
19}次のコード例では、2 つの署名を使用するペイロードを作成します。
1{
2 "inputs":[
3 {
4 "entityId":"0WOxx000000001E",
5 "signatures":[
6 {
7 "data":"Base64 code for the captured signature image",
8 "contentType":"image/png",
9 "name":"Customer Signature",
10 "signatureType":"Customer",
11 "place":"San Francisco",
12 "signedBy":"John Doe",
13 "signedDate":"Thu Jul 13 22:34:43 GMT 2017"
14 },
15 {
16 "data":"Base64 code for the captured signature image",
17 "contentType":"image/png",
18 "name":"Technician Signature",
19 "signatureType":"Technician"
20 }
21 ],
22 "templateId":"0SLR00000004DBFOA2"
23 }
24 ]
25}項目の説明
- entityId: サービスレポートを作成する作業指示、作業指示品目、サービスレポートの ID。
- signatures: デジタル署名の JSON 定義のリスト。
- data: (必須) 画像の base64 コード。
- contentType: (必須) 署名のファイルの種類。
- signatureType: (必須) 署名者の役割 (「顧客」など)。[署名種別] 選択リストの値は、Salesforce システム管理者によって事前に定義されます。各署名ブロックには異なる署名種別を使用する必要があり、コールで定義する署名種別は、サービスレポートテンプレートの署名種別と一致する必要があります。
- name: 署名ブロックのタイトル。この値は、生成されたサービスレポートに表示されます。
- place: 署名の��所。この値は、生成されたサービスレポートに表示されます。
- signedBy: 署名者の名前。この値は、生成されたサービスレポートに表示されます。
- signedDate: 署名の日付。この値は、生成されたサービスレポートに表示されます。
- templateId: レポートに使用されたサービスレポートテンプレートの ID。ID を検索するには、ServiceReportLayout オブジェクトに対して SOQL クエリを実行します。
制限事項
ゲストユーザーで Future アノテーションを使用している場合、ContentDocument オブジェクトを作成できないため、サービスドキュメントも作成できません。