O auxiliar de renderização
Mantenha uma lógica pura em seu próprio arquivo, para que seja fácil de testar unidades. Este encolher os tokens de um record em{{dot.path}} e substitui-los.
O manipulador
O manipulador usa oCoreApiClient
para ler e escrever dados de CRM. Ele carrega o modelo, carrega o registro de destino, preenche
o corpo e cria um documento.
loadRecordValues executa uma consulta diferente para uma Pessoa vs. Uma Empresa e flattens
o resultado — veja
load-record-values.ts.
Expo-na como uma ferramenta e uma ação de fluxo de trabalho
Uma únicadefineLogicFunction pode carregar vários gatilhos. Aqui, toolTriggerSettings
faz com que seja chamável por agentes IA e workflowActionTriggerSettings o transforma em
passo do construtor de fluxo de trabalho. Ambos descrevem suas informações com um esquema JSON.
templateId e recordId —
vê generate-document-input.schema.ts.
Concede-o acesso
Funções lógicas são executadas como o papel do aplicativo. Ele precisa ler templates e registrar e criar documentos, então permitir que emsrc/roles/default-role.ts:
UPLOAD_FILE permite que a função envie o PDF gerado na próxima seção.
Ver Roles para permissões refinadas.
Anexar arquivo PDF real
Um campo de texto renderizado é útil, mas os usuários querem um documento real. Vamos gerar um PDF e armazená-lo no registro como um arquivo para download. Primeiro, dê ao objetodocumento um campo ARQUIVO para segurar o PDF. Aplicativos enviam
para seus próprios campos de arquivos, então este campo é o que encaminha o upload:
generate-document-pdf.ts.
Ele analisa o Markdown em tokens com marcado. exer, então as envia com
pdf-lib: títulos reais, execuções bold/italic, listas de marcadores e numerados,
bloqueios e regras — uma renderização A4 polida e multi-página do modelo
em si, ao invés de uma parede de texto.

As fontes internas do pdf-lib usam codificação WinAnsi, portanto os acentos da Europa Ocidental são exibidos
por padrão; o utilitário mapeia aspas tipográficas e travessões e descarta caracteres que
não consegue codificar. Renderizar scripts não-latinos (chinês, árabe, cirílico) significaria que
incorporando uma fonte Unicode.
uploadFile bytes
para o campo de arquivos de propriedade; o id retornado é o que você salva:

uploadFile destina-se apenas a campos de arquivos propriedade do aplicativo (então o upload sempre requer um aplicativo
que possui o campo, mais o sinalizador de papéis UPLOAD_FILE). É por isso que o PDF
fica no campo file do próprio registro - o mesmo padrão que o
call-recorder app
usa para gravações.Próximo: Rotas HTTP →
Servir a função sobre HTTP e renderizar documentos como páginas da web.