L’assistant de rendu
Gardez une logique pure dans son propre fichier donc il est facile de le tester. Cela aplanit un record en jetons{{dot.path}} et les substitue.
Le gestionnaire
Le gestionnaire utilise leCoreApiClient
généré pour lire et écrire les données CRM. Il charge le modèle, charge l’enregistrement cible, remplit
le corps, et crée un document.
loadRecordValues exécute une requête différente pour une personne par rapport à une entreprise et aplatit
le résultat — voir
load-record-values.ts.
Exposer comme un outil et une action de workflow
Une seuledefineLogicFunction peut contenir plusieurs déclencheurs. Ici, toolTriggerSettings
le rend appelable par les agents AI, et workflowActionTriggerSettings le transforme en une étape
dans le constructeur de workflow visuel. Les deux décrivent leur entrée avec un schéma JSON.
templateId et recordId —
voir generate-document-input.schema.ts.
Accorder l’accès
Les fonctions logiques s’exécutent en tant que rôle de l’application. Il a besoin de lire les modèles et les enregistrements et de créer des documents, donc permettez cela danssrc/roles/default-role.ts:
UPLOAD_FILE permet à la fonction d’envoyer le PDF généré dans la section suivante.
Voir Roles pour des autorisations plus fines.
Joindre un vrai fichier PDF
Un champ de texte rendu est utile, mais les utilisateurs veulent un vrai document. Nous allons générer un PDF et le stocker dans l’enregistrement en tant que fichier téléchargeable. Premièrement, donnez à l’objetdocument un champ FILES pour contenir le PDF. Les applications téléchargent
dans leurs champs propres de fichiers, donc ce champ permet de router le téléchargement:
generate-document-pdf.ts.
Il analyse le Markdown en jetons avec marked. exer, puis les pose avec
pdf-lib: de vraies rubriques, gras/italique exécute, puces et listes numérotées,
blockquotes et règles — un rendu A4 polyvalent et polyvalent du modèle
lui-même, plutôt qu’un mur de texte.

Les polices intégrées de pdf-lib’s utilisent l’encodage WinAnsi, de sorte que les accents WesternEuropean rendent
hors de la boite; l’aide mappe les guillemets intelligents et les tirets et drops les caractères qu’elle
ne peut pas encoder. Le rendu de scripts non latins (chinois, arabe, cyrillique) impliquerait
d’intégrer une police Unicode.
uploadFile achemine les octets
vers votre champ de fichiers appartenant à l’application; le id retourné est ce que vous sauvegardez:

uploadFile ne cible que les champs de fichiers app-owned (donc les téléchargements nécessitent toujours une application
qui possède le champ, plus le paramètre UPLOAD_FILE). C’est pourquoi le PDF
se trouve sur le propre champ file de l’enregistrement — le même motif que l’application
call-recorder app
utilise pour les enregistrements.Suivant : Routes HTTP →
Servez la fonction via HTTP et rendez les documents en tant que pages Web.