Der Rendering-Helfer
Behalten Sie die reine Logik in ihrer eigenen Datei, so dass es leicht zu Unit-Test ist. Dies flattert einen Eintrag in{{dot.path}} Token und ersetzt diese.
Der Handler
Der Handler verwendet die generierteCoreApiClient
zum Lesen und Schreiben von CRM-Daten. Es lädt die Vorlage, lädt den Zieldatensatz, füllt den Körper
und erstellt ein “Dokument”.
loadRecordValues führt eine andere Abfrage für eine Person gegen eine Firma aus und flattert
das Ergebnis — siehe
load-record-values.ts.
Als Werkzeug und Workflow-Aktion anzeigen
Eine einzelnedefineLogicFunction kann mehrere Trigger tragen. Hier macht toolTriggerSettings
es von KI-Agenten aufrufbar und workflowActionTriggerSettings verwandelt es in einen
Schritt im visuellen Workflow-Builder. Beide beschreiben ihre Eingabe mit einem JSON-Schema.
templateId und recordId —
siehe generate-document-input.schema.ts.
Zugriff gewähren
Die logischen Funktionen laufen als Rolle der App. Es muss Vorlagen lesen und Datensätze und Dokumente erstellen, also erlauben Sie dies insrc/roles/default-role.ts:
UPLOAD_FILE lässt die Funktion das generierte PDF im nächsten Abschnitt hochladen.
Siehe Roles für feinkörnige Berechtigungen.
Eine echte PDF-Datei anhängen
Ein gerendertes Textfeld ist nützlich, aber Benutzer wollen ein echtes Dokument. Generieren wir ein PDF und speichern es als herunterladbare Datei. Gib zuerst dasdocument Objekt ein FILES-Feld um die PDF zu halten. Apps laden
in ihre eigenen Datei-Felder hoch. Daher ist dieses Feld was das Hochladen leitet:
generate-document-pdf.ts.
Es analysiert Markdown in Tokens mit markiert. exer, legt sie dann mit
pdf-lib: echte Überschriften, fett/kursiv läuft, Kugel und nummerierte Listen,
Blockzitate und Regeln — eine polierte, mehrseitige A4 Darstellung der Vorlage
selbst statt einer Wand aus Text.

Die in pdf-lib integrierten Schriftarten verwenden die WinAnsi-Codierung, sodass westeuropäische Akzentzeichen standardmäßig korrekt dargestellt werden; die Hilfsfunktion ordnet typografische Anführungszeichen und Gedankenstriche zu und verwirft Zeichen, die nicht codiert werden können. Das Rendern nicht-lateinischer Skripte (chinesisch, arabisch, kyrillisch) würde bedeuten, dass
eine Unicode-Schriftart einbettet.
uploadFile ruft Bytes
in dein app-owned Datei-Feld zurück; die zurückgegebene id ist, was du speicherst:

uploadFile zielt nur auf app-besitzer Datei-Felder (Uploads erfordern also immer eine
-App, die das Feld besitzt, plus das UPLOAD_FILE Rollenflag). Aus diesem Grund landet das PDF
auf das eigene Feld file des Datensatzes — das gleiche Muster wie die
call-recorder app
verwendet für Aufnahmen.Weiter: HTTP-Routen →
Servieren Sie die Funktion über HTTP und rendern Sie Dokumente als Webseiten.