渲染帮助器
将纯逻辑保留在它自己的文件中,这样便于拆除测试。 这会将一条记录 展平成{{dot.path}} 占位符并进行替换。
处理程序
处理程序使用生成的CoreApiClient
读写CRM 数据。 它加载模板,加载目标记录,填充
物体,并创建一个“文档”。
loadRecordValues 会针对 Person 与 Company 运行不同的查询,并将结果展平 — 参见
load-record-values.ts。
显示为一个工具和工作流操作
单个的defineeLogicFunction 可以带几个触发器。 在这里,toolTriggerSettings
让它可以被AI 代理人调用,workflowActionTriggerSettings 将它变成可视工作流生成器中的
步骤。 两者都用JSON方案描述他们的输入情况。
templateId 和 recordId -
查看 generate-document-input.schema.ts。
授予访问权限
逻辑函数作为应用程序的角色运行。 它需要阅读模板和记录 并创建文档,以便允许在 “src/roles/default-role.ts” 中:UPLOAD_FILE 让函数在下一节上传生成的 PDF。
请参阅 Roles 以获取更精细的权限。
附加一个真实的 PDF 文件
渲染文本字段是有用的,但用户需要一个真正的文档。 让我们生成一个 PDF 并将其作为可下载的文件存储在记录上。 首先,给文档对象一个FILES字段来持有PDF。 应用将
上传到他们拥有 的文件字段,所以此字段是上传的路线:
generate-document-pdf.ts。
它将Markdown解析为代币,标记为“标记”。 `运行,然后使用
pdf-lib:真实标题,bold/italic 运行,子弹和编号列表
blockquotes and rules — — 一个经过筛选、多页的 A4 渲染模板
本身,而不是一个文本墙。

pdf-lib的内置字体使用WinAnsi编码,所以西欧语音会将
渲染到盒子之外; 助手地图的智能引用和破折号并掉落它
无法编码。 渲染非拉丁脚本(中文、 阿拉伯语、 西里尔语) 将意味着
嵌入一个 Unicode 字体。
uploadFile 路由字节
到你的应用拥有的文件字段。返回的 id 是你保存的:

uploadFile 仅针对app-owned 文件字段。(所以上传文件总需要一个拥有字段的
应用,加上UPLOAD_FILE 角色标志)。 这就是为什么PDF
会降落在记录自己的“file”字段上——相同的样式
call-recorder app
用于录制的原因。下一步:HTTP路由 →
通过 HTTP 提供函数并将文档渲染为 web 页面。