Loading
メールアドレスがデフォルトのログイン方式となります 続きを読む
電子署名 API

電子署名 API

電子署名 API を個別に使用して、UI を使用せずに Salesforce Contracts 機能をコールできます。これらの API は高度なカスタマイズが可能です。電子署名用に 1 つ以上の生成済みドキュメントを送信できます。生成されたドキュメントは、標準オブジェクトまたはカスタムオブジェクトに関連付けることができます。

必要なアクセス権については、「Permission Sets For DocuSign」を参照してください。

Apex ガバナの制限については、「Execution Governors and Limits」を参照してください。

電子署名 API についての詳細は、「電子署名リソース」を参照してください

メソッド 説明
getRecipients

この方法を使用して、ドキュメント受信者のリストを表示します。

カスタムクラスを使用してカスタムロジックを追加する

  • ind_docgen_api.OpenInterface を実装するグローバル Apex クラスを作成します。

  • invokeMethod() メソッド内にロジックを追加します。

  • クラスを組織に追加します。

  • URL で customClass パラメーターを使用して API をコールします。例:

    /connect/e-sign/recipients?sourceObjectId=<sourceObjectId>&recipientSelector=<recipientCustomClassName>

受信者を返す方法をカスタマイズするには、グローバル Apex クラスに ind_docgen_api.OpenInterface インターフェースを実装します。敬称が「Mr.」のすべての取引先責任者を取得するサンプル実装を次に示します。

public class GetEsignRecipients implements ind_docgen_api.OpenInterface {

    private static final String ERROR_UNSUPPORTED = 'Unsupported method. Only method [getRecipients] is supported.';
    private static final String ERROR_NO_RECIPIENTS = 'Recipient data not found';

    public Boolean invokeMethod(String methodName, Map<String, Object> inputMap, Map<String, Object> outMap) {
        system.debug(inputMap);
        Boolean success;

        if (methodName == 'getRecipients') {
            success = getRecipients(inputMap, outMap);
        }  else {
            throw new CustomGetRecipientsException(ERROR_UNSUPPORTED);
        }

        System.debug('invokeMethod:outMap -> ' + outMap);
        System.debug('invokeMethod:success -> ' + success);
        return success;
    }

    private Boolean getRecipients(Map<String, Object> input, Map<String, Object> output) {
        Boolean success = false;

        Id sourceObjectId = (Id) input.get('sourceObjectId');
        
        List<Map<String, Object>> recipients = new List<Map<String, Object>>();
        
        Map<String, Object> recipient = new Map<String, Object>();
        recipient.put('name', 'John Peter');
        recipient.put('email', 'johnxxxx@gmail.com');
        recipient.put('id', '1');
        
        Map<String, Object> additionalFields = new Map<String, Object>();
        additionalFields.put('routingOrder', '1');
        additionalFields.put('routingNumber', '1');
        additionalFields.put('signerRole', '1');
        additionalFields.put('recipientType','Signer'); // Case Sensitive
        additionalFields.put('recipientLocale','English (U.S.)');
        //We need to send recipientLocale as same as What we see in the Salesforce UI While Manually Adding Recipient Locale 
        recipient.put('additionalFields', additionalFields);
        recipients.add(recipient);    
             
        output.put('recipients', recipients);
        
        success = true;
        System.debug('getRecipients:output -> ' + output);
        System.debug('getRecipients:success -> ' + success);
        
        return success;

    }
    
    class CustomGetRecipientsException extends Exception {

    }
}

recipientSelector と sourceObjectId は省略可能なパラメーターです。sourceObjectId パラメータが Apex クラスへの入力として渡され、必要に応じて消費されます。

メタデータを使用してカスタムクラスを設定するには、次の値を使用して電子署名設定オブジェクトにレコードを追加します。

  • ベンダー: Docusign

  • グループ種別: グループ種別

  • 設定種別: Recipients Custom class

  • Config Value (設定値): カスタムクラス名。>.

getDocuments

この方法を使用して、電子署名で送信されたドキュメントのリストを表示します。

IsAssociatedWithClm パラメーターが次の場合:

  • true – API は契約ドキュメントを取得します。

  • false – API はメモと添付ファイルからのみドキュメントを取得します。

カスタムクラスを使用してカスタムロジックを追加する

  • ind_docgen_api.OpenInterface を実装するグローバル Apex クラスを作成します。

  • invokeMethod() メソッド内にロジックを追加します。

  • クラスを組織に追加します。

  • URL で customClass パラメーターを使用して API をコールします。例:

    /connect/e-sign/documents?sourceObjectId=<sourceObjectId>&documentSelector=<customClassName>

電子署名のドキュメントを返す方法をカスタマイズするには、グローバル Apex クラスに ind_docgen_api.OpenInterface インターフェースを実装します。指定された sourceObjectId にリンクされている ContentVersion レコードからドキュメントを取得する実装例を次に示します。

public class GetEsignDocuments implements ind_docgen_api.OpenInterface {
    private static final String ERROR_UNSUPPORTED = 'Unsupported method. Only method [getDocuments] is supported.';

    public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
        Boolean success = true;
        if (methodName == 'getDocuments') {
            success = executeAction(request, outMap);
        } else {
             throw new CustomGetDocumentsException(ERROR_UNSUPPORTED);
         }
        return success;
    }

    private Boolean executeAction(Map<String, Object> inputMap, Map<String, Object> outMap) {
        Boolean success = false;
        System.debug('getDocuments:inputMap -> ' + inputMap);
        Id contractId = (Id)inputMap.get('sourceObjectId');
        
        // Fetch contract master document
        ContentDocument contentDocument = getMasterContractDocument(contractId);
        
        List<Map<String, Object>> documents = new List<Map<String, Object>>();
        Map<String, Object> document = new Map<String, Object>();
        document.put('fileExtension', contentDocument.FileExtension);
        document.put('name',contentDocument.Title);
        String contentVersionId = Id.valueOf(contentDocument.LatestPublishedVersionId);
        document.put('sourceId', contentVersionId);
        document.put('sourceType','Content');
        
        Map<String, String> additionalFields = new Map<String, String>();
        additionalFields.put('documentId', '1');
        document.put('additionalFields', additionalFields);
        documents.add(document);
        outMap.put('documents', documents);

        success = true;
        System.debug('getDocuments:outMap -> ' + outMap);
        System.debug('getDocuments:success -> ' + success);
        return success;
    }
    
    private ContentDocument getMasterContractDocument(Id contractId) {
        // Fetch latest contract document version
        ContractDocumentVersion latestCdv = [SELECT Id FROM ContractDocumentVersion WHERE contractId=:contractId ORDER BY VersionNumber DESC LIMIT 1];
        
        // Fetch latest contendocumentId associated with latest contract document version
        ContractDocVerContentDoc contractDoc = [SELECT ContentDocumentId FROM ContractDocVerContentDoc WHERE ContractDocumentVersionId=:latestCdv.Id LIMIT 1];
        
        // Load content document details
        ContentDocument contentDocument = [SELECT FileExtension, FileType, Id, LatestPublishedVersionId, Title FROM ContentDocument WHERE Id=:contractDoc.ContentDocumentId LIMIT 1];
        return contentDocument;    
    }

    class CustomGetDocumentsException extends Exception {

    }
}

documentSelector は省略可能なパラメーターです。

メタデータを使用してカスタムクラスを設定するには、次の値を使用して電子署名設定オブジェクトにレコードを追加します。

  • ベンダー: Docusign

  • グループ種別: グループ種別

  • 設定種別: Documents Custom クラス

  • Config Value (設定値): カスタムクラス名。

API URL でカスタムクラス名を渡す必要はありません。

getNotificationSettings

この方法を使用して、リマインダーと有効期限の通知設定を表示します。sourceObjectId は、オブジェクトのそれぞれの通知設定を返す必須パラメーターです。

API は次の設定から通知設定を読み取ります。

  • DocGen 権限のみが有効になっている場合、API は [電子署名エンベロープの設定] 設定から通知設定を読み取ります。

  • DocGen と CLM (Salesforce Contracts) の両方の権限が有効になっており、オブジェクト タイプが契約の場合、API は契約タイプの設定から通知設定を読み取ります。

  • DocGen と CLM (Salesforce Contracts) の両方の権限が有効になっており、オブジェクト タイプが契約ではない場合、API は電子署名エンベロープ設定から通知設定を読み取ります。

sendEnvelope この方法を使用して、新しい DocuSign トランザクションを有効にします。
voidEnvelope この方法を使用して、オブジェクトに関連付けられた封筒を期限切れまたは取り消します。
updateEnvelope この方法を使用して、封筒の状況を更新するアドホック要求を DocuSign に送信します。
 
読み込み中
Salesforce Help | Article