Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core JavaScript-API
Hinweis: Diese Dokumentation bezieht sich auf die aktuellste Version des Plugins agorum core insign. Aktualisieren Sie das hier beschriebene Plugin, um die Dokumentation verwenden zu können.
Das Plugin agorum core insign wird mit zwei Bibliotheken ausgeliefert:
Sie können mit den agorum core insign-Bibliotheken einen eigenen Signaturprozess über den Signaturanbieter inSign erstellen. Die Voraussetzung dafür ist, dass Sie ein inSign-Konto mit API-Zugriff haben und eine inSign-Schnittstellenkonfiguration erstellt haben. Mit den agorum-Bibliotheken können Sie:
Binden Sie dazu die Bibliotheken stets am Anfang eines Skripts ein:
let settings = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings');
Das folgende Beispiel zeigt, wie Sie eine Signaturanfrage für ein PDF-Dokument mit Anforderung von zwei Signaturen und Identifizierung der Signaturposition über eine Textsuche erstellen können.
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); // set user and client context let user = objects.find('715d9471-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); let configUser = settings.getUserConfigByClientId(user, '1997ca25-e67a-47da-a2c3-009025ba5159'); configUser; let config = settings.getUserConfig(user); config; // select document to be signed let pdf = objects.find('c0d41e70-8713-11ef-9101-02420a0a0006'); // signature request with specification of two signatures by different persons (e-mail adresses) insign.sign({ user: user, displayName: 'Test Session Name DOC', parameter: { documents: [ { scanSigTags: false, signatures: [ { role: 'Role1', id: '1', displayname: 'userA@example.com', textsearch: 'Unterschrift Käufer', required: true, }, { role: 'Role2', id: '2', displayname: 'userB@example.com', textsearch: 'Unterschrift Verkäufer', required: true, }, ], }, ], }, documents: [pdf], recipients: { inOrder: true, externUsers: [ { recipient: 'userA@example.com', sendEmails: true, roles: ['Role1'], orderNumber: 1, }, { recipient: 'userB@example.com', sendEmails: true, roles: ['Role2'], orderNumber: 2, }, ], }, });
Das Beispiel zeigt, wie eine Signaturanfrage für das über die UUID angegebene PDF-Dokument mit dem Kontext des angegebenen Benutzers erstellt wird.
Die Signaturanfrage erstellt eine REST-Anfrage an inSign. Die Angaben in den Abschnitten recipients und parameter sind flexibel und müssen der REST-Spezifikation von inSign entsprechen (siehe inSign REST-API-Dokumentation). In diesem Beispiel umfasst die Anfrage die Angabe der Empfänger (recipients) mit ihren E-Mail-Adressen und einer Reihenfolge, in der die elektronischen Signaturen erfolgen sollen (über inOrder und orderNumber). Außerdem enthält die Anfrage eine Angabe der Positionen (Signaturfelder), an denen die Signaturen aufgebracht werden sollen, im Abschnitt paramter/documents/signatures. In diesem Fall wird die Position der Unterschriften über eine Textsuche (textsearch) ermittelt.
In diesem Beispiel würden Sie eine Antwort nach dem folgenden Muster von inSign zurückerhalten:
{ "link" : "https://connect.test.getinsign.show/index?sessionid=5be7184be43360f782fec00", "sessionId" : "5be7184be43360f782fec00" }
Das folgende Beispiel zeigt, wie Sie eine Signaturanfrage für ein PDF-Dokument mit Anforderung von einer Signatur und Identifizierung der Signaturposition über Positionsangaben erstellen können.
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('714614d0-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); let configUser = settings.getUserConfigByClientId(user, '2a29157e-c459-414d-bba2-254406e24c38'); let config = settings.getUserConfig(user); let pdf = objects.find('df000aa0-9139-11ef-a076-00007f000101'); insign.sign({ user: user, displayName: 'Test Session Name', parameter: { documents: [ { scanSigTags: false, signatures: [ { role: 'Role1', id: '1', position: { h: '0.02', page: '0', w: '0.1', x0: '0.77', y0: '0.73', }, required: true, }, ], }, ], }, documents: [pdf], recipients: { inOrder: true, externUsers: [ { recipient: 'user@example.com', sendEmails: true, roles: ['Role1'], orderNumber: 1, }, ], }, });
Diese Positionsangabe resultiert in folgender Position auf einem A4-Testdokument, hier in der inSign-Oberfläche.
inSign unterstützt die Angabe von sogenannten SIG-Tags im Dokument. Dabei handelt es sich um Textangaben im Dokument, die mit ##SIG
eingeleitet werden, um Signaturfelder zu spezifizieren. Für weitere Informationen zu SIG-Tags siehe die inSign-Dokumentation. Beispiel:
##SIG{required:'true',w:'10cm'}
Wenn ein Dokument SIG-Tags enthält, können Sie beim Übergeben des Dokuments angeben, dass diese ausgelesen werden sollen:
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('714614d0-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); let configUser = settings.getUserConfigByClientId(user, '2a29157e-c459-414d-bba2-254406e24c38'); let config = settings.getUserConfig(user); let pdf = objects.find('7b1f38b0-950a-11ef-a11a-00007f000101'); insign.sign({ user: user, displayName: 'Test Session Name', parameter: { documents: [ { scanSigTags: true, }, ], }, documents: [pdf], });
Die Funktion cancel bricht eine Signaturanfrage für ein angegebenes Dokument ab.
Syntax
insign.cancel(objects)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
objects | Ein oder mehrere agorum-Objekte, deren Signaturanfrage abgebrochen werden soll. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); insign.cancel([objects.find('1f43d880-74d9-11ef-876a-02420a0a0015')]);
Rückgabewert
Wenn Sie über die Funktion cancel eine Signaturanfrage für ein Dokument abbrechen, erhalten Sie eine Rückgabe nach folgendem Muster:
{ "d497b450-9139-11ef-a076-00007f000101" : { "sessionId" : "eb11c79f174a4fdc1b8ff560", "error" : 0, "message" : "OK" }
Die Funktion checkLoginData prüft, ob die in einer Konfiguration angegebenen Login-Daten korrekt sind.
Syntax
insign.checkLoginData(clientId)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
clientId | Die Konfiguration, über die der inSign-Zugriff hergestellt wird. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); insign.checkLoginData(clientId);
Rückgabewert
{ "success" : true }
Diese Funktion überprüft eine inSign-Session darauf, ob alle Signaturen vollständig vorliegen. Zurückgegeben wird ein boolescher Wert.
Syntax
insign.checkSigned(sessionId, clientId)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
sessionId | Die verschlüsselte sessionId der inSign-Session, deren Statusinformationen abgefragt werden sollen. | ja | - |
clientId | Die Konfiguration, über die der inSign-Zugriff hergestellt wird. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('714614d0-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); insign.checkSigned('eecae66a8f1049f63c591289', clientId);
Die Funktion getCheckStatus fragt den Prüfstatus einer bestimmten Session anhand ihrer ID ab.
Syntax
insign.getCheckStatus(sessionId, clientId)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
sessionId | Die sessionId der inSign-Session, deren Statusinformationen abgefragt werden sollen. | ja | - |
clientId | Die Konfiguration, über die der inSign-Zugriff hergestellt wird. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('715d9471-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); insign.getCheckStatus('5be7184be43360f782fec00', clientId);
Rückgabewert
Wenn Sie über die Funktion getCheckStatus den Status einer inSign-Session abfragen, erhalten Sie eine Rückgabe nach folgendem Muster:
{ "inQes" : false, "numberOfSignaturesNeededDone" : 1, "processStep" : "inprogress", "extern" : true, "sessionid" : "eecae66a8f1049f63c591289", "completed" : false, "error" : 0, "message" : "OK", "offline" : false, "qesResultPreliminary" : false, "offlineAvailable" : false, "numberOfSignaturesNeeded" : 2, "status" : "extern" }
Die Funktion getStatus fragt den Status einer bestimmten Session anhand ihrer ID ab.
Syntax
insign.getStatus(sessionId, clientId)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
sessionId | Die sessionId der inSign-Session, deren Statusinformationen abgefragt werden sollen. | ja | - |
clientId | Die Konfiguration, über die der inSign-Zugriff hergestellt wird. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('715d9471-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); insign.getStatus('5be7184be43360f782fec00', clientId);
Rückgabewert
Wenn Sie über die Funktion getStatus den Status einer inSign-Session abfragen, erhalten Sie eine Rückgabe nach folgendem Muster:
{ "emails_abgeschlossen" : [ ], "emails_ausgehaendigt" : [ ], "numberOfSignatures" : 1, "docs_abgeschlossen" : [ "0dd82a50-8718-11ef-9101-02420a0a0006" ], "numberOfSignaturesFields" : 1, "sucessfullyCompleted" : false, "error" : 0, "message" : "OK", "documentData" : [ { "numberOfSignaturesNeededDone" : 1, "hasbeensignedCompletely" : true, "hasbeenread" : true, "userAusgefuellt" : false, "docid" : "0dd82a50-8718-11ef-9101-02420a0a0006", "numberOfSignatures" : 1, "numberOfSignaturesNeededWithOptional" : 1, "hasbeensignedRequired" : true, "hasbeenchanged" : false, "completedQESList" : null, "hasrequired" : false, "docchecksumSHA512" : "9d51aecf864befc657bda5f9d05e88091352d6d60ee083ce170f32ead6c9f6bc0aefb37ed434ea9132bca0502ee64b4a9f3fccc27b46bdae5a7382e44b816ad1", "displayname" : "Kaufvertrag (1).pdf", "additionalInfo" : null, "numberOfSignaturesNeeded" : 1, "docchecksum" : "e2186b9c2238e7da9871e951166e428c5f28572924b22901cd73256d2ff4a564", "docname" : "Kaufvertrag (1).pdf:Kaufvertrag (1).pdf", "hasbeenedited" : false, "signaturFieldsStatusList" : [ { "role" : "Role1", "signatureBitmap" : null, "signed" : true, "quickinfo" : "userA@example.com", "mandatory" : true, "deviceId" : "ip:88.152.185.68,ua:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0,platform:Win32,id:null", "displayname" : "userA@example.com", "documentID" : "0dd82a50-8718-11ef-9101-02420a0a0006", "positionIndex" : 0, "quickInfoParsedRole" : null, "externRole" : null, "fieldID" : "1", "signTimestamp" : "10.10.2024 15:19:50 UTC(+0000)" } ], "isbipro" : false, "numberofpages" : 2, "hasbeensigned" : true } ], "numberOfMandatorySignatureFields" : 1, "aushaendigungen" : [ { "sms" : [ ], "abschliesen" : true, "docInfos" : [ { "checksumSHA512" : "9d51aecf864befc657bda5f9d05e88091352d6d60ee083ce170f32ead6c9f6bc0aefb37ed434ea9132bca0502ee64b4a9f3fccc27b46bdae5a7382e44b816ad1", "numberOfPages" : 2, "fileSize" : 65727, "displayname" : "Kaufvertrag (1).pdf", "checksum" : "e2186b9c2238e7da9871e951166e428c5f28572924b22901cd73256d2ff4a564", "id" : "0dd82a50-8718-11ef-9101-02420a0a0006" } ], "email" : [ "userA@example.com" ], "docids" : [ "0dd82a50-8718-11ef-9101-02420a0a0006" ], "typen" : [ ], "timestamp" : 1.728573591E12 } ], "numberOfOptionalSignatureFields" : 0, "gdprDeclined" : false, "modifiedTimestamp" : 1.728573591E12, "docs_ausgehaendigt" : [ ], "signaturFieldsStatusList" : [ { "role" : "Role1", "signatureBitmap" : null, "signed" : true, "quickinfo" : "userA@example.com", "mandatory" : true, "deviceId" : "ip:88.152.185.68,ua:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0,platform:Win32,id:null", "displayname" : "userA@example.com", "documentID" : "0dd82a50-8718-11ef-9101-02420a0a0006", "positionIndex" : 0, "quickInfoParsedRole" : null, "externRole" : null, "fieldID" : "1", "signTimestamp" : "10.10.2024 15:19:50 UTC(+0000)" } ], "numberOfOptionalSignatures" : 0, "numberOfMandatorySignatures" : 1 }
Die Funktion getUrlClient fragt die URL für das inSign-Dokument mit der Session-ID ab.
Syntax
insign.getUrlClient(sessionId, clientId)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
sessionId | Die sessionId der inSign-Session, deren Statusinformationen abgefragt werden sollen. | ja | - |
clientId | Die Konfiguration, über die der inSign-Zugriff hergestellt wird. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('715d9471-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); insign.getUrlClient('eecae66a8f1049f63c591289', clientId);
Rückgabewert
Wenn Sie über die Funktion getUrlClient die URL mit Session-ID für das inSign-Dokument anfragen, erhalten Sie eine Rückgabe nach folgendem Muster:
https://connect.test.getinsign.show/index?sessionid=eecae66a8f1049f63c591289
Die Funktion open öffnet eine angegebene inSign-Session in einem neuen Fenster.
Syntax
insign.open(url)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
url | Die inSign-URL, die geöffnet werden soll. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); insign.open('https://connect.test.getinsign.show/index?sessionid=eecae66a8f1049f63c591289');
Die Funktion save speichert ein Dokument aus einer inSign-Session in einem angegeben Zielobjekt in agorum core.
Syntax
insign.save(sessionId, object, clientId)
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
sessionId | Die sessionId der inSign-Session, aus der das Dokument abgefragt werden soll. | ja | - |
object | Das agorum-Zielobjekt, wo das Dokument gespeichert werden soll. | ja | - |
clientId | Die Konfiguration, über die der inSign-Zugriff hergestellt wird. | ja | - |
Beispiel
/* global sc */ let insign = require('/agorum/roi/customers/agorum.insign/js/lib/insign'); let objects = require('common/objects'); let settings = require('/agorum/roi/customers/agorum.insign/js/lib/settings'); let user = objects.find('714614d0-ce62-11e0-b47a-0800276e2399'); let clientId = settings.getClientId(user); // Beispiel für save insign.save('db8961883ef81ff287eeb4eb', objects.find('6c382860-91e6-11ef-a076-00007f000101'), clientId);
Rückgabewert
Wenn die angegebene inSign-Session nicht vorhanden ist oder kein vollständig unterschriebenes Dokument enthält, enthält die Rückgabe eine Fehlermeldung mit weiteren Informationen. Beispiel:
Error: javax.ws.rs.ServerErrorException: {"error":599,"message":"Dokument nicht gefunden. (obsxx)","trace":"document.missing","errorPageData":{"lastErrortitle":"Zugriff verweigert","lastErrormessage":"Dokument nicht gefunden. (obsxx)"}}
Die Funktion sign erstellt eine Signaturanfrage für ein oder mehrere PDF-Dokumente beim Signaturanbieter inSign. Die Angaben dienen dazu, eine REST-Anfrage für inSign zu erstellen. Die Angaben müssen der Spezifikation der inSign-Schnittstelle entsprechen.
Syntax
insign.sign({ user: user, displayName: 'session name', parameter: {}, documents: [pdf], recipients: {}, })
Parameter
Parameter | Beschreibung | Pflicht | Standard |
---|---|---|---|
user | Der Benutzer (agorum.Object), der die Session erstellt, und dessen Name in der E-Mail mit Bitte um Signatur verwendet wird. | ja | - |
displayName | Der Name für den Signaturprozess, der in der E-Mail und der inSign-Session angezeigt wird. | ja | - |
parameter | Weitere Parameter für die inSign-Session. Sie können optional weitere Parameter zu den zu signierenden Dokumenten und weitere Angaben für die inSign-Session mitgeben. Mit diesen Parametern können Sie die POST-Anfrage erweitern. Mit den zusätzlichen Parametern können Sie etwa über das Objekt documents angeben, an welcher Stelle im Dokument die Empfänger unterschreiben sollen. Dazu haben Sie verschiedene Möglichkeiten:
Die Dokumentation aller möglichen Parameter finden Sie hier. |
nein | - |
documents | Ein oder mehrere Dokumente (agorum.Object), die signiert werden sollen. | ja | - |
recipients | Die Angaben zu den Empfängern, die die Dokumente signieren sollen. Die hier angegebenen E-Mail-Empfänger werden mit dem Dokument an inSign übermittelt. inSign verschickt E-Mails mit der Aufforderung zur elektronischen Signatur an die angegebenen E-Mail-Adressen. Sie können über die Datenfelder die POST-Anfrage zusammenstellen, die an inSign geschickt wird. Für die Anfrage benötigen Sie mindestens das Objekt externUsers mit den E-Mail-Adressen der Empfänger als Schlüssel-Wert-Paare. Daneben stehen Ihnen weitere Angaben zur Verfügung, über die Sie den Inhalt der E-Mail und die Reihenfolge der Unterschriften steuern können. Die Dokumentation aller möglichen Felder finden Sie hier. |
nein, wenn Sie keine E-Mail-Empfänger angeben, müssen diese manuell in inSign angegeben werden | - |
Beispiel
Siehe das Beispiel für eine Signaturanfrage