Integreiddio'r Gwylwr Dogfennau
Mae'r Gwylwr Dogfennau yn gydran we sy’n caniatáu i ddefnyddwyr olygu templedi a pharatoi dogfennau ar gyfer llofnodi — yn union o fewn eich cymhwysiad. Mae'r canllaw hwn yn dangos sut i'w gysylltu â'r API GraphQL i adeiladu llif gwaith llofnodi cyflawn.
Trosolwg
Mae integreiddiad nodweddiadol yn dilyn y camau hyn:
- Dilysu — cael token ar gyfer y gwylwr
- Uwchlwytho templed — trwy'r API GraphQL
- Rendro'r gwylwr — pasio ID y templed a'r token
- Dal digwyddiadau — mae'r gwylwr yn anfon digwyddiadau
updateavalidatewrth i'r defnyddiwr weithio - Anfon y ddogfen — galw'r mutation
sendgyda data'r derbynnydd a rôl o'r gwylwr
Dilysu
Mae angen token dilys ar y gwylwr sy'n cael ei basio i'w briodwedd token. Gall eich cefnwedd ddarparu naill ai JWT SRP neu token cydran byrhoedlog o generateComponentToken. Gweler Awdurdodiad Widgét cyn cysylltu'r gwylwr â'ch cymhwysiad.
Modd Cyfansoddi — Anfon Dogfen Wedi'i Adeiladu Eisoes
Mae modd cyfansoddi ar gyfer llifau gwaith lle mae eich system eisoes yn gwybod y derbynwyr. Mae'r defnyddiwr yn gosod meysydd llofnodi a anfonfeydd.
1. Rendro'r gwylwr
<ls-document-viewer
id="viewer"
templateid="dHBsYjQ5YTg5NWQtYWRhMy0xMWYwLWIxZGMtMDY5NzZlZmU0MzIx"
token="YOUR_ACCESS_TOKEN"
mode="compose"
recipients='[
{"email": "jane@example.com", "firstname": "Jane", "lastname": "Smith", "signerIndex": 1},
{"email": "john@example.com", "firstname": "John", "lastname": "Doe", "signerIndex": 2}
]'
filtertoolbox="signature|initials|date|text"
>
<span slot="right-button">
<button id="send-btn" disabled>Send</button>
</span>
</ls-document-viewer>
2. Olrhain dilysiad a IDs rôl
Wrth i'r defnyddiwr ychwanegu meysydd, mae'r gwylwr yn anfon digwyddiadau. Mae angen dau beth gennych o'r digwyddiadau hyn:
validate— yn dweud wrthych os oes gan y templed yr holl feysydd gofynnol (o leiaf, un llofnodiad fesul derbynnydd)update— yn darparu cyflwr cyfredol y templed, gan gynnwysroleIdi bob cyfranogwr pan fydd angen mapio rôl templed arnoch
const viewer = document.getElementById('viewer');
const sendBtn = document.getElementById('send-btn');
let isValid = false;
const recipientRoles = {};
viewer.addEventListener('validate', (e) => {
isValid = e.detail.valid;
sendBtn.disabled = !isValid;
});
viewer.addEventListener('update', (e) => {
const roles = e.detail.template.roles;
roles.forEach((role) => {
recipientRoles[role.signerIndex] = role.id;
});
});
Mae'r roleId o'r digwyddiad update yn cysylltu pob derbynnydd â'u meysydd ar y templed. Cynnwyswch ef pan fydd eich llif anfon angen y map hwnnw.
3. Anfon y ddogfen
Pan fydd y defnyddiwr yn clicio anfon, galwch y mutation send gyda data'r derbynnydd a'r IDs rôl a ddalwyd o'r gwylwr:
sendBtn.addEventListener('click', async () => {
const token = '<token-from-authentication-guide>';
const recipients = [
{
firstName: 'Jane',
lastName: 'Smith',
email: 'jane@example.com',
role: 'Signer',
roleId: recipientRoles[1],
signerIndex: 1,
order: 1,
},
{
firstName: 'John',
lastName: 'Doe',
email: 'john@example.com',
role: 'Signer',
roleId: recipientRoles[2],
signerIndex: 2,
order: 2,
},
];
const response = await fetch('https://graphql.uk.legalesign.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
query: `mutation SendDocument {
send(input: {
groupId: "YOUR_GROUP_ID"
templateId: "dHBsYjQ5YTg5NWQtYWRhMy0xMWYwLWIxZGMtMDY5NzZlZmU0MzIx"
title: "Contract - Jane Smith & John Doe"
recipients: ${JSON.stringify(recipients).replace(/"(\w+)":/g, '$1:')}
sequentialSigning: true
})
}`,
}),
});
const result = await response.json();
const taskId = result.data.send;
// Poll for completion
console.log('Task started:', taskId);
});
Mae mutation send yn dychwelyd ID tasg. Gwnewch holiadur parhaus ar y chwiliad task a gwylio task.report.status nes iddi gyrraedd COMPLETED neu FAILED er mwyn cadarnhau bod creu’r ddogfen wedi cwblhau.
Modd Golygydd — Creu Templed
Mae modd golygydd yn rhoi'r profiad golygu templed llawn i ddefnyddwyr — ychwanegu rolau, gosod meysydd, gwneud opsiynau. Defnyddiwch hwn pan ydych eisiau i ddefnyddwyr adeiladu templedi a ellir eu hailddefnyddio.
<ls-document-viewer
id="editor"
templateid="dHBsYjQ5YTg5NWQtYWRhMy0xMWYwLWIxZGMtMDY5NzZlZmU0MzIx"
token="YOUR_ACCESS_TOKEN"
mode="editor"
></ls-document-viewer>
Yn y modd golygydd, mae'r digwyddiad update yn cael ei anfon bob tro y bydd y templed yn newid. Gallwch ddefnyddio hyn i olrhain cyflwr y templed neu ddangos dangosydd cadw:
const editor = document.getElementById('editor');
editor.addEventListener('update', (e) => {
console.log('Template updated:', e.detail);
});
editor.addEventListener('validate', (e) => {
console.log('Template valid:', e.detail.valid);
});
Mae newidiadau'r templed yn cael eu cadw'n awtomatig gan y gwylwr — does dim angen i chi alw unrhyw mutation GraphQL i gadw'r newidiadau.
Integreiddiad React
Mae'r amgylchwr React yn darparu'r un swyddogaeth gyda rheoli digwyddiadau arddull React:
import { useState } from 'react';
import { LsDocumentViewer } from 'legalesign-document-viewer-react';
const DocumentCompose = ({ templateId, recipients, token }) => {
const [isValid, setIsValid] = useState(false);
const [roleMap, setRoleMap] = useState({});
const handleValidate = (e) => {
setIsValid(e.detail.valid);
};
const handleUpdate = (e) => {
const roles = e.detail.template.roles;
const map = {};
roles.forEach((role) => {
map[role.signerIndex] = role.id;
});
setRoleMap(map);
};
const handleSend = async () => {
const mappedRecipients = recipients.map((r, i) => ({
...r,
roleId: roleMap[r.signerIndex],
order: i + 1,
}));
const response = await fetch('https://graphql.uk.legalesign.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
query: `mutation SendDocument {
send(input: {
groupId: "YOUR_GROUP_ID"
templateId: "${templateId}"
title: "Document"
recipients: ${JSON.stringify(mappedRecipients).replace(/"(\w+)":/g, '$1:')}
})
}`,
}),
});
const result = await response.json();
console.log('Task ID:', result.data.send);
};
if (!token) return null;
return (
<LsDocumentViewer
templateid={templateId}
token={token}
mode="compose"
recipients={JSON.stringify(recipients)}
onValidate={handleValidate}
onUpdate={handleUpdate}
>
<div slot="right-button">
<button onClick={handleSend} disabled={!isValid}>
Send
</button>
</div>
</LsDocumentViewer>
);
};
Tystion
I ychwanegu tyst ar gyfer llofnodwr, gosodwch roleType: "WITNESS" a defnyddiwch signerIndex sy'n gyfartal â mynegai'r llofnodwr rhieni + 100. Er enghraifft, mae tyst ar gyfer llofnodwr 2 yn cael signerIndex: 102:
<ls-document-viewer
mode="compose"
recipients='[
{"email": "signer@example.com", "firstname": "Alice", "lastname": "Jones", "signerIndex": 1},
{"email": "signer2@example.com", "firstname": "Bob", "lastname": "Brown", "signerIndex": 2},
{"email": "witness@example.com", "firstname": "Carol", "lastname": "White", "signerIndex": 102, "roleType": "WITNESS"}
]'
...
></ls-document-viewer>
Cysyniadau Allweddol
| Cysyniad Gwylwr | Math GraphQL | Disgrifiad |
|---|---|---|
Priodwedd templateid | Template | Y templed sy'n cael ei olygu neu'i gyfansoddi |
Priodwedd recipients | RecipientInput | Derbynwyr a basiwyd i fodd cyfansoddi |
roleId o ddigwyddiad update | Role | Yn cysylltu derbynnydd â'u meysydd ar y templed |
Digwyddiad validate | — | A oes gan y templed yr holl feysydd angenrheidiol |
Mutation send | send | Anfon y ddogfen ar ôl cyfansoddi |
Priodwedd token | — | Token o ddilysu |
mode="compose" | — | Modd symlach ar gyfer gosod meysydd a anfon |
mode="editor" | — | Modd golygu templed llawn |
experience mewn mewnbwn anfon | Experience | Rheoli brandio, e-byst, a thudalen llofnodi — gweler Esboniad o brofiadau |
Perthnasol
- Cyfeiriad Gwylwr Dogfennau — cyfeiriad llawn ar briodweddau ac digwyddiadau
- mutation send — anfon dogfen
- DocumentSendSettingsInput — strwythur mewnbwn anfon llawn
- Esboniad ar ddulliau anfon — anfon vs sendBatch vs sendBulk
- Uwchlwytho Ffeil fel Templed — uwchlwytho templedi trwy'r API
- Dilysu — dewis modd dilysu