Loading
E-Signatur-APIs

E-Signatur-APIs

Sie können die E-Signatur-APIs unabhängig voneinander verwenden, um die Salesforce Contracts-Funktionen aufzurufen, ohne die Benutzeroberfläche zu verwenden. Diese APIs sind hochgradig anpassbar. Sie können ein oder mehrere generierte Dokumente zur elektronischen Signatur senden. Ihre generierten Dokumente können standardmäßigen oder benutzerdefinierten Objekten zugeordnet werden.

Informationen zu den erforderlichen Berechtigungen finden Sie unter Berechtigungssätze für DocuSign.

Informationen zu den Apex Governor Limits finden Sie unter Execution Governors and Limits (Obergrenzen für Apex-Regulatoren).

Informationen zu E-Signatur-APIs finden Sie unter E-Signaturressourcen.

Methode Beschreibung
getRecipients

Verwenden Sie diese Methode, um eine Liste der Dokumentempfänger anzuzeigen.

Hinzufügen einer benutzerdefinierten Logik über eine benutzerdefinierte Klasse:

  • Erstellen Sie eine globale Apex-Klasse, die ind_docgen_api.OpenInterface implementiert.

  • Fügen Sie Ihre Logik in der Methode invokeMethod() hinzu.

  • Fügen Sie die Klasse Ihrer Organisation hinzu.

  • Rufen Sie die API mit dem Parameter customClass im URL auf. Beispiel:

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

Implementieren Sie die Schnittstelle ind_docgen_api.OpenInterface in einer globalen Apex-Klasse, um anzupassen, wie Empfänger zurückgegeben werden. Hier eine Beispielimplementierung, die alle Kontakte mit der Anrede "Herr" abruft:

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 und sourceObjectId sind optionale Parameter. Der Parameter sourceObjectId wird als Eingabe an die Apex-Klasse übergeben und bei Bedarf verwendet.

Fügen Sie zum Konfigurieren der benutzerdefinierten Klasse mithilfe von Metadaten einen Datensatz im Objekt "Konfiguration der elektronischen Signatur" mit den folgenden Werten hinzu:

  • Anbieter: Dokument

  • Gruppentyp: Gruppentyp

  • Konfigurationstyp: Empfänger Benutzerdefinierte Klasse

  • Konfigurationswert: Ihr benutzerdefinierter Klassenname. >.

getDocuments

Verwenden Sie diese Methode, um eine Liste der zur elektronischen Signatur gesendeten Dokumente anzuzeigen.

Wenn der Parameter IsAssociatedWithClm wie folgt lautet:

  • true: Die API ruft Vertragsdokumente ab.

  • false: Die API ruft nur Dokumente aus Notizen und Anhängen ab.

Hinzufügen einer benutzerdefinierten Logik über eine benutzerdefinierte Klasse:

  • Erstellen Sie eine globale Apex-Klasse, die ind_docgen_api.OpenInterface implementiert.

  • Fügen Sie Ihre Logik in der Methode invokeMethod() hinzu.

  • Fügen Sie die Klasse Ihrer Organisation hinzu.

  • Rufen Sie die API mit dem Parameter customClass im URL auf. Beispiel:

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

Implementieren Sie die Schnittstelle ind_docgen_api.OpenInterface in einer globalen Apex-Klasse, um anzupassen, wie Dokumente für eSignature zurückgegeben werden. Im Folgenden finden Sie eine Beispielimplementierung, die Dokumente aus ContentVersion-Datensätzen abruft, die mit der angegebenen sourceObjectId verknüpft sind:

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 ist ein optionaler Parameter.

Fügen Sie zum Konfigurieren der benutzerdefinierten Klasse mithilfe von Metadaten einen Datensatz im Objekt "Konfiguration der elektronischen Signatur" mit den folgenden Werten hinzu:

  • Anbieter: Dokument

  • Gruppentyp: Gruppentyp

  • Konfigurationstyp: Benutzerdefinierte Klasse "Dokumente"

  • Konfigurationswert: Ihr benutzerdefinierter Klassenname.

Sie müssen den Namen der benutzerdefinierten Klasse nicht im API-URL übergeben.

getNotificationSettings

Verwenden Sie diese Methode, um die Einstellungen für Erinnerungen und Ablaufbenachrichtigungen anzuzeigen. Die sourceObjectId ist ein obligatorischer Parameter, der die entsprechenden Benachrichtigungseinstellungen für ein Objekt zurückgibt.

Die API liest die Benachrichtigungseinstellungen aus den folgenden Konfigurationseinstellungen:

  • Wenn nur die DocGen-Berechtigungen aktiviert sind, liest die API die Benachrichtigungseinstellungen aus der Einstellung "Konfiguration des Umschlags für elektronische Signaturen".

  • Wenn die Berechtigungen "DocGen" und "CLM (Salesforce Contracts)" aktiviert sind und der Objekttyp "Vertrag" lautet, liest die API die Benachrichtigungseinstellungen in den Einstellungen für die Vertragstypkonfiguration.

  • Wenn die Berechtigungen "DocGen" und "CLM (Salesforce Contracts)" aktiviert sind und der Objekttyp "Vertrag" nicht lautet, liest die API die Benachrichtigungseinstellungen in den Einstellungen für die Konfiguration des Umschlags für elektronische Signaturen.

sendEnvelope Verwenden Sie diese Methode, um eine neue DocuSign-Transaktion zu aktivieren.
voidEnvelope Verwenden Sie diese Methode, um einem Objekt zugeordnete Umschläge ablaufen zu lassen oder für ungültig zu erklären.
updateEnvelope Verwenden Sie diese Methode, um eine Ad-hoc-Anforderung an DocuSign zu senden, um den Umschlagstatus zu aktualisieren.
 
Laden
Salesforce Help | Article