L’helper del rendering
Mantenere la logica pura nel proprio file in modo che sia facile da unit-test. Questo appiattisce un record in{{dot.path}} token e li sostituisce.
Il gestore
Il gestore utilizza ilCoreApiClient
generato per leggere e scrivere i dati CRM. Carica il modello, carica il record di destinazione, riempie
il corpo e crea un documento.
loadRecordValues esegue una query diversa per una Persona contro una Società e appiattisce
il risultato — vedi
load-record-values.ts.
Esporre come strumento e come azione del flusso di lavoro
Un singolodefineLogicFunction può portare diversi trigger. Qui, toolTriggerSettings
lo rende chiamabile da agenti AI, e workflowActionTriggerSettings lo trasforma in un passaggio
nel costruttore di flussi di lavoro visivi. Entrambi descrivono il loro input con uno schema JSON.
templateId e recordId —
vedi generate-document-input.schema.ts.
Concedi l’accesso
Le funzioni Logica vengono eseguite come ruolo dell’app. Ha bisogno di leggere i modelli e registra e creare documenti, in modo da consentire che insrc/roles/default-role.ts:
UPLOAD_FILE permette alla funzione di caricare il PDF generato nella prossima sezione.
Vedi Roles per i permessi a grana più fine.
Allega un file PDF reale
Un campo di testo renderizzato è utile, ma gli utenti vogliono un documento reale. Generiamo un file PDF e memorizzalo sul record come file scaricabile. Innanzitutto, dai aldocument object un campo FILES per tenere il PDF. Le app caricano
nei loro propri campi di file, quindi questo campo è quello che il caricamento:
generate-document-pdf.ts.
Analizza il Markdown in token con marked. exer, poi li mette fuori con
pdf-lib: intestazioni reali, bold/italic runs, proiettile e liste numerate,
blockquotes e regole — un rendering A4 lucido e multi-pagina del modello
stesso, piuttosto che un muro di testo.

pdf-lib’s built-in font utilizzare WinAnsi encoding, così gli accenti occidentali europei rendono
fuori dalla scatola; le mappe helper citazioni intelligenti e trattini e lascia i caratteri
non possono codificare. Rendering non latino script (Cinese, Arabo, Cirillico) significherebbe
incorporare un carattere Unicode.
uploadFile percorre bytes
nel campo dei file di proprietà dell’app; il id restituito è quello che salvi:

uploadFile si rivolge solo ai campi di file app-owned (quindi i caricamenti richiedono sempre un’app
che possiede il campo, più il flag ruolo UPLOAD_FILE). Ecco perché il PDF
atterra sul campo file del record - lo stesso modello utilizzato dall’app
call-recorder
per le registrazioni.Il prossimo: percorsi HTTP →
Servire la funzione su HTTP e rendere i documenti come pagine web.