Mantık işlevleri, Twenty platformunda çalışan sunucu tarafı TypeScript işlevleridir. HTTP istekleri, cron zamanlamaları veya veritabanı olayları tarafından tetiklenebilirler — ve ayrıca yapay zekâ ajanları için araçlar olarak sunulabilirler.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
Mantık işlevlerini ve tetikleyicilerini tanımlayın
defineLogicFunction
Mantık işlevlerini ve tetikleyicilerini tanımlayın
Her işlev dosyası, bir işleyici ve isteğe bağlı tetikleyiciler içeren bir yapılandırmayı dışa aktarmak için Kullanılabilir tetikleyici türleri:
İşleyicinizde, iletilen başlıklara şu şekilde erişin:Önemli noktalar:
defineLogicFunction() kullanır.src/logic-functions/createPostCard.logic-function.ts
- httpRoute: İşlevinizi bir HTTP yolu ve yöntemiyle
/s/uç noktasının altında kullanıma sunar:
örn.path: '/post-card/create'https://your-twenty-server.com/s/post-card/createadresinden çağrılabilir
- cron: Bir CRON ifadesi kullanarak işlevinizi bir zamanlamayla çalıştırır.
- databaseEvent: Çalışma alanı nesnesi yaşam döngüsü olaylarında çalışır. Olay işlemi
updatedolduğunda, dinlenecek belirli alanlarupdatedFieldsdizisinde belirtilebilir. Tanımsız veya boş bırakılırsa, herhangi bir güncelleme işlevi tetikler.
örn.person.updated,*.created,company.*
Bir işlevi CLI kullanarak manuel olarak da çalıştırabilirsiniz:Günlükleri şu şekilde izleyebilirsiniz:
Rota tetikleyicisi yükü
Bir rota tetikleyicisi mantık fonksiyonunuzu çağırdığında, AWS HTTP API v2 formatını izleyen birRoutePayload nesnesi alır.
RoutePayload türünü twenty-sdk içinden içe aktarın:RoutePayload türünün yapısı şu şekildedir:| Özellik | Tür | Açıklama | Örnek |
|---|---|---|---|
headers | Record\<string, string | undefined> | HTTP başlıkları (forwardedRequestHeaders içinde listelenenlerle sınırlı) | aşağıdaki bölüme bakın |
queryStringParameters | Record\<string, string | undefined> | Sorgu dizesi parametreleri (birden çok değer virgülle birleştirilir) | /users?ids=1&ids=2&ids=3&name=Alice -> { ids: '1,2,3', name: 'Alice' } |
pathParameters | Record\<string, string | undefined> | Rota deseninden çıkarılan yol parametreleri | /users/:id, /users/123 -> { id: '123' } |
body | object | null | Ayrıştırılmış istek gövdesi (JSON) | { id: 1 } -> { id: 1 } |
rawBody | string | undefined | JSON ayrıştırılmadan önceki özgün UTF-8 istek gövdesi. HMAC tarzı webhook imzalarını doğrulamak için kullanışlıdır (ör. GitHub’ın X-Hub-Signature-256, Stripe). Çalışma zamanı onu korumadığında undefined olur. | |
isBase64Encoded | boolean | Gövdenin base64 ile kodlanıp kodlanmadığı | |
requestContext.http.method | string | HTTP yöntemi (GET, POST, PUT, PATCH, DELETE) | |
requestContext.http.path | string | Ham istek yolu |
forwardedRequestHeaders
Varsayılan olarak, güvenlik nedenleriyle gelen isteklerden HTTP başlıkları mantık fonksiyonunuza aktarılmaz. Belirli başlıklara erişmek için bunlarıforwardedRequestHeaders dizisinde listeleyin:Başlık adları küçük harfe normalize edilir. Onlara küçük harfli anahtarlarla erişin (örneğin,
event.headers['content-type']).Bir işlevi bir yapay zekâ aracı veya iş akışı eylemi olarak kullanıma sunma
Mantık işlevleri, her birinin kendi tetikleyicisi olacak şekilde iki yerde kullanılabilir hâle getirilebilir:toolTriggerSettings— işlevi Twenty’nin yapay zekâ özellikleri (sohbet, MCP, işlev çağırma) tarafından bulunabilir hâle getirir. Standart JSON Şeması’nı kullanır; LLM’lerin doğal olarak anladığı biçimdir.workflowActionTriggerSettings— işlevin görsel iş akışı oluşturucusunda bir adım olarak görünmesini sağlar. Oluşturucunun uygun alan düzenleyicilerini, değişken seçicilerini ve etiketleri oluşturabilmesi için Twenty’nin zenginInputSchema’sını kullanır.
cronTriggerSettings, databaseEventTriggerSettings ve httpRouteTriggerSettings ile birlikte yer alır — aynı desen, aynı biçim.src/logic-functions/enrich-company.logic-function.ts
- Bir işlev yüzeyleri karıştırabilir — onu sohbette VE iş akışı oluşturucusunda kullanıma sunmak için hem
toolTriggerSettingshem deworkflowActionTriggerSettingsbildirin. toolTriggerSettings.inputSchemaveworkflowActionTriggerSettings.inputSchemaikisi de isteğe bağlıdır. Atlandığında, manifest oluşturucu bunları işleyici kaynak kodundan çıkarır (yapay zekâ aracı için JSON Şeması, iş akışı eylemi için Twenty’ninInputSchema’sı). Daha zengin tipleme istediğinizde birini açıkça belirtin — örneğin, iş akışı oluşturucu içinFieldMetadataType’ı bilenCURRENCYveyaRELATIONgibi alanlarla ya da yapay zekâ aracısının okuyabileceğidescriptionalanlarıyla:
İyi bir
description yazın. AI ajanları, aracı ne zaman kullanacaklarına karar vermek için işlevin description alanına güvenir. Aracın ne yaptığını ve ne zaman çağrılması gerektiğini açıkça belirtin.Yükleme kancaları — ön yükleme ve yükleme sonrası işleyiciler — bu çalışma zamanını paylaşır ancak kendi tanımlama işlevleriyle bildirilir ve tetikleyici ayarlarını almaz.
definePreInstallLogicFunction ve definePostInstallLogicFunction için Yükleme Kancaları bölümüne bakın.Tipli API istemcileri (twenty-client-sdk)
twenty-client-sdk paketi, mantık fonksiyonlarınızdan ve ön uç bileşenlerinizden Twenty API ile etkileşim kurmak için tip tanımlı iki GraphQL istemcisi sağlar.
| İstemci | İçe Aktar | Uç nokta | Oluşturuldu mu? |
|---|---|---|---|
CoreApiClient | twenty-client-sdk/core | /graphql — çalışma alanı verileri (kayıtlar, nesneler) | Evet, geliştirme/derleme zamanında |
MetadataApiClient | twenty-client-sdk/metadata | /metadata — çalışma alanı yapılandırması, dosya yüklemeleri | Hayır, önceden hazırlanmış olarak gelir |
CoreApiClient
Çalışma alanı verilerini sorgulayın ve değiştirin (kayıtlar, nesneler)
CoreApiClient
Çalışma alanı verilerini sorgulayın ve değiştirin (kayıtlar, nesneler)
CoreApiClient, çalışma alanı verilerini sorgulamak ve değiştirmek için ana istemcidir. yarn twenty dev veya yarn twenty build sırasında çalışma alanı şemanızdan oluşturulur, bu nedenle nesnelerinize ve alanlarınıza uyacak şekilde tamamen tiplenmiştir.true geçin, bağımsız değişkenler için __args kullanın ve ilişkiler için nesneleri iç içe yerleştirin. Çalışma alanı şemanıza göre tam otomatik tamamlama ve tip denetimi elde edersiniz.CoreApiClient geliştirme/derleme zamanında oluşturulur. Bunu önce
yarn twenty dev veya yarn twenty build çalıştırmadan kullanırsanız, bir hata verir. Oluşturma otomatik olarak gerçekleşir — CLI, çalışma alanınızın GraphQL şemasını inceler ve @genql/cli kullanarak tiplenmiş bir istemci üretir.Tür açıklamaları için CoreSchema’yı kullanma
CoreSchema, çalışma alanı nesnelerinize uyan TypeScript türleri sağlar — bileşen durumunu veya işlev parametrelerini tiplemek için kullanışlıdır:MetadataApiClient
Çalışma alanı yapılandırması, uygulamalar ve dosya yüklemeleri
MetadataApiClient
Çalışma alanı yapılandırması, uygulamalar ve dosya yüklemeleri
MetadataApiClient, SDK ile birlikte önceden hazırlanmış olarak gelir (oluşturma gerektirmez). Çalışma alanı yapılandırması, uygulamalar ve dosya yüklemeleri için /metadata uç noktasını sorgular.Dosya yükleme
MetadataApiClient, dosya türündeki alanlara dosya eklemek için bir uploadFile yöntemi içerir:| Parametre | Tür | Açıklama |
|---|---|---|
fileBuffer | Buffer | Dosyanın ham içeriği |
filename | string | Dosyanın adı (depolama ve görüntüleme için kullanılır) |
contentType | string | MIME türü (belirtilmezse varsayılan olarak application/octet-stream kullanılır) |
fieldMetadataUniversalIdentifier | string | Nesnenizdeki dosya türü alanının universalIdentifier değeri |
- Alan için
universalIdentifierkullanır (çalışma alanına özgü kimliği değil), böylece yükleme kodunuz uygulamanızın yüklü olduğu herhangi bir çalışma alanında çalışır. - Döndürülen
url, yüklenen dosyaya erişmek için kullanabileceğiniz imzalı bir URL’dir.
Kodunuz Twenty üzerinde çalıştığında (mantık işlevleri veya ön uç bileşenleri), platform kimlik bilgilerini ortam değişkenleri olarak enjekte eder:
TWENTY_API_URL— Twenty API’nin temel URL’siTWENTY_APP_ACCESS_TOKEN— Uygulamanızın varsayılan işlev rolü kapsamında kısa ömürlü bir anahtar
process.env’den okurlar. API anahtarının izinleri, defineApplicationRole() ile bildirilen role (veya application-config.ts içindeki defaultRoleUniversalIdentifier üzerinden referans verilen role) göre belirlenir.