Funcțiile de logică sunt funcții TypeScript pe partea de server care rulează pe platforma Twenty. Acestea pot fi declanșate de solicitări HTTP, programări cron sau evenimente din baza de date — și pot fi, de asemenea, expuse ca instrumente pentru agenți AI.Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
defineLogicFunction
Definiți funcții logice și declanșatoarele acestora
defineLogicFunction
Definiți funcții logice și declanșatoarele acestora
Fiecare fișier de funcție folosește Tipuri de declanșatoare disponibile:Tipul
În handler, accesați anteturile transmise mai departe astfel:Puncte cheie:
defineLogicFunction() pentru a exporta o configurație cu un handler și declanșatoare opționale.src/logic-functions/createPostCard.logic-function.ts
- httpRoute: Expune funcția pe o cale și metodă HTTP sub endpoint-ul
/s/:
de ex.path: '/post-card/create'este apelabil lahttps://your-twenty-server.com/s/post-card/create
- cron: Rulează funcția pe un program folosind o expresie CRON.
- databaseEvent: Rulează la evenimentele ciclului de viață ale obiectelor din spațiul de lucru. Când operațiunea evenimentului este
updated, câmpurile specifice de urmărit pot fi specificate în array-ulupdatedFields. Dacă este lăsat nedefinit sau gol, orice actualizare va declanșa funcția.
de ex.person.updated,*.created,company.*
Puteți, de asemenea, să executați manual o funcție folosind CLI:Puteți urmări jurnalele cu:
Payload-ul declanșatorului de rută
Când un declanșator de rută invocă funcția logică, aceasta primește un obiectRoutePayload care urmează
AWS HTTP API v2 format.
Importați tipul RoutePayload din twenty-sdk:RoutePayload are următoarea structură:| Proprietate | Tip | Descriere | Exemplu |
|---|---|---|---|
headers | Record\<string, string | undefined> | Anteturi HTTP (doar cele listate în forwardedRequestHeaders) | consultați secțiunea de mai jos |
queryStringParameters | Record\<string, string | undefined> | Parametri query string (valorile multiple unite cu virgule) | /users?ids=1&ids=2&ids=3&name=Alice -> { ids: '1,2,3', name: 'Alice' } |
pathParameters | Record\<string, string | undefined> | Parametri de cale extrași din modelul rutei | /users/:id, /users/123 -> { id: '123' } |
body | object | null | Corpul cererii analizat (JSON) | { id: 1 } -> { id: 1 } |
rawBody | string | undefined | Corpul original al cererii în UTF-8, înainte de parsarea JSON. Util pentru verificarea semnăturilor de tip HMAC pentru webhook-uri (de exemplu, X-Hub-Signature-256 de la GitHub, Stripe). undefined atunci când mediul de execuție nu a păstrat-o. | |
isBase64Encoded | boolean | Indică dacă corpul este codificat în base64 | |
requestContext.http.method | string | Metoda HTTP (GET, POST, PUT, PATCH, DELETE) | |
requestContext.http.path | string | Calea brută a cererii |
forwardedRequestHeaders
În mod implicit, anteturile HTTP din cererile de intrare nu sunt transmise funcției dvs. de logică din motive de securitate. Pentru a accesa anumite anteturi, listați-le explicit în array-ulforwardedRequestHeaders:Numele anteturilor sunt normalizate la litere mici. Accesați-le folosind chei cu litere mici (de exemplu,
event.headers['content-type']).Expunerea unei funcții ca instrument AI sau ca acțiune în fluxul de lucru
Funcțiile logice pot fi expuse în două locuri, fiecare cu propriul declanșator:toolTriggerSettings— face funcția descoperibilă de către funcționalitățile AI ale Twenty (chat, MCP, apelarea de funcții). Folosește JSON Schema standard, formatul pe care LLM-urile îl înțeleg nativ.workflowActionTriggerSettings— determină ca funcția să apară ca un pas în constructorul vizual de fluxuri de lucru. FoloseșteInputSchemabogat al Twenty, astfel încât constructorul să poată afișa editori de câmp adecvați, selectoare de variabile și etichete.
cronTriggerSettings, databaseEventTriggerSettings și httpRouteTriggerSettings — același tipar, aceeași formă.src/logic-functions/enrich-company.logic-function.ts
- O funcție poate combina suprafețele — declară atât
toolTriggerSettings, cât șiworkflowActionTriggerSettingspentru a o expune atât în chat, cât și în constructorul de fluxuri de lucru. toolTriggerSettings.inputSchemașiworkflowActionTriggerSettings.inputSchemasunt ambele opționale. Când sunt omise, generatorul de manifest le deduce din codul sursă al handlerului (JSON Schema pentru instrumentul AI,InputSchemaal Twenty pentru acțiunea de flux de lucru). Furnizează unul în mod explicit atunci când dorești o tipizare mai bogată — de exemplu, cu câmpuri compatibile cuFieldMetadataType, precumCURRENCYsauRELATIONpentru constructorul de fluxuri de lucru, sau cu câmpuridescriptionpe care agentul AI le poate citi:
Scrieți o
description bună. Agenții AI se bazează pe câmpul description al funcției pentru a decide când să folosească instrumentul. Fiți specifici cu privire la ceea ce face instrumentul și când ar trebui apelat.Install hooks — pre-install and post-install handlers — share this runtime but are declared with their own define functions and don’t take trigger settings. See Install Hooks for
definePreInstallLogicFunction and definePostInstallLogicFunction.Clienți API tipizați (twenty-client-sdk)
Pachetultwenty-client-sdk oferă doi clienți GraphQL tipați pentru a interacționa cu API-ul Twenty din funcțiile de logică și componentele Front.
| Client | Importați | Endpoint | Generat? |
|---|---|---|---|
CoreApiClient | twenty-client-sdk/core | /graphql — date ale spațiului de lucru (înregistrări, obiecte) | Da, în timpul dev/build |
MetadataApiClient | twenty-client-sdk/metadata | /metadata — configurarea spațiului de lucru, încărcări de fișiere | Nu, este livrat preconstruit |
CoreApiClient
Interogați și modificați datele spațiului de lucru (înregistrări, obiecte)
CoreApiClient
Interogați și modificați datele spațiului de lucru (înregistrări, obiecte)
CoreApiClient este clientul principal pentru interogarea și modificarea datelor din spațiul de lucru. Este generat din schema spațiului de lucru în timpul yarn twenty dev sau yarn twenty build, astfel încât este complet tipizat pentru a corespunde obiectelor și câmpurilor dvs.true pentru a include un câmp, folosiți __args pentru argumente și imbricați obiecte pentru relații. Obțineți autocompletare și verificare a tipurilor complete, pe baza schemei spațiului dvs. de lucru.CoreApiClient este generat în timpul dev/build. Dacă îl utilizați fără a rula mai întâi
yarn twenty dev sau yarn twenty build, va arunca o eroare. Generarea are loc automat — CLI inspectează schema GraphQL a spațiului dvs. de lucru și generează un client tipizat folosind @genql/cli.Folosirea CoreSchema pentru adnotări de tip
CoreSchema oferă tipuri TypeScript care corespund obiectelor din spațiul dvs. de lucru — utile pentru tiparea stării componentelor sau a parametrilor funcțiilor:MetadataApiClient
Configurația spațiului de lucru, aplicații și încărcări de fișiere
MetadataApiClient
Configurația spațiului de lucru, aplicații și încărcări de fișiere
MetadataApiClient este livrat preconstruit împreună cu SDK-ul (nu este necesară generarea). Interoghează endpointul /metadata pentru configurarea spațiului de lucru, aplicații și încărcări de fișiere.Încărcarea fișierelor
MetadataApiClient include o metodă uploadFile pentru atașarea fișierelor la câmpuri de tip fișier:| Parametru | Tip | Descriere |
|---|---|---|
fileBuffer | Buffer | Conținutul brut al fișierului |
filename | string | Numele fișierului (folosit pentru stocare și afișare) |
contentType | string | Tipul MIME (implicit application/octet-stream dacă este omis) |
fieldMetadataUniversalIdentifier | string | universalIdentifier al câmpului de tip fișier de pe obiectul dvs. |
- Folosește
universalIdentifieral câmpului (nu ID-ul specific spațiului de lucru), astfel încât codul dvs. de încărcare funcționează în orice spațiu de lucru în care aplicația dvs. este instalată. urlreturnat este un URL semnat pe care îl puteți folosi pentru a accesa fișierul încărcat.
Când codul dvs. rulează pe Twenty (funcții de logică sau componente Front), platforma injectează acreditările ca variabile de mediu:
TWENTY_API_URL— URL-ul de bază al API-ului TwentyTWENTY_APP_ACCESS_TOKEN— Cheie cu durată scurtă, limitată la rolul implicit de funcție al aplicației
process.env. Permisiunile cheii API sunt determinate de rolul referențiat în defaultRoleUniversalIdentifier din application-config.ts.