Documentation Index
Fetch the complete documentation index at: https://aiagenttr.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Zorunlu Alanlar ve Form Validasyonları - Master Tablo
Oluşturulma Tarihi: 2025-11-16
Kaynak: Frontend kod analizi (Gerçek kod ile doğrulanmıştır)
📋 İçindekiler
- AI Agent Oluşturma
- Müşteri Ekleme
- Kampanya Oluşturma
- Bilgi Bankası Oluşturma
- SIP Trunk Oluşturma
- Özet Karşılaştırma
1. AI Agent Oluşturma
Sayfa: /agents/new
Backend API: CreateAgent
Zorunlu Alanlar Tablosu
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Validasyon | Varsayılan | Karakter Limit |
|---|
| 1 | AI Agent Adı | name | Text | ✅ Evet | Max 100 karakter | - | 100 |
| 2 | Açıklama | description | Textarea | ❌ Hayır | Max 1000 karakter | - | 1000 |
| 3 | AI Agent Tipi | agentType | Select | ✅ Evet | Catalog seçim | - | - |
| 4 | Pipeline Departmanı | pipelineId | Select | ✅ Evet | Pipeline API | - | - |
| 5 | Karşılama Mesajı | greetingMessage | Textarea | ❌ Hayır | Max 250 karakter | - | 250 |
| 6 | İlk Mesaj Modu | firstMessageMode | Select | ✅ Evet | Catalog seçim | - | - |
| 7 | Sistem Talimatı | systemPrompt | Textarea | ❌ Hayır | Yok | - | - |
Yönlendirme (Escalation) - Koşullu Zorunlu
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Koşul | Validasyon |
|---|
| 8 | Otomatik Yönlendirme | escalationEnabled | Toggle | ❌ Hayır | - | - |
| 9 | Hedef Tipi | destinationType | Select | ⚠️ Koşullu | Escalation aktifse | number/sip |
| 10 | Yönlendirme Numarası | destinationNumber | Text | ⚠️ Koşullu | type=number ise | E.164, max 16 |
| 11 | SIP Hedefi | destinationSip | Text | ⚠️ Koşullu | type=sip ise | SIP URI format |
| 12 | Yönlendirme Mesajı | escalationMessage | Textarea | ⚠️ Koşullu | Escalation aktifse | Min 20, max 100 |
| 13 | Mesaj için beklet | waitForMessageToBeSpoken | Checkbox | ❌ Hayır | - | false |
| 14 | Yönlendirme Koşulları | escalationConditions | Multi-checkbox | ⚠️ Koşullu | Escalation aktifse | En az 1 seçili |
| 15 | Başarısız Mesajı | escalationFailedMessage | Textarea | ❌ Hayır | Gelişmiş ayarlarda | Max 100 |
| 16 | Telefonu kapat | endTheCallAfterMessageIsSpoken | Checkbox | ❌ Hayır | Gelişmiş ayarlarda | false |
| 17 | Gecikme Mesajı | delayedMessage | Textarea | ❌ Hayır | Gelişmiş ayarlarda | Max 100 |
| 18 | Gecikme Süresi (ms) | delayInMs | Number | ❌ Hayır | Gelişmiş ayarlarda | 100-120000 |
Gizli/Sabit Değerler
| Alan | Değer | Not |
|---|
| temperature | 0.7 | Kodda sabit, UI’da yok |
| escalationTimeout | 2 | Kodda sabit, UI’da yok |
| maxEscalationAttempts | 3 | Kodda sabit, UI’da yok |
⚠️ Dokümantasyonda Yanlış Olan Kısımlar
| Dokümanda Var | Gerçekte |
|---|
| ❌ Ses Seçimi (Voice Selection) | Kodda YOK |
| ❌ AI Model Seçimi | Kodda YOK |
| ❌ SIP Trunk/Telefon Ataması | Kodda YOK |
| ❌ Yaratıcılık Seviyesi (Temperature) kullanıcı ayarı | Sabit 0.7, değiştirilemez |
| ❌ Yönlendirme Öncesi Bekleme | Sabit 2, UI’da yok |
| ❌ Maksimum Yönlendirme Denemesi | Sabit 3, UI’da yok |
2. Müşteri Ekleme
Sayfa: /crm/customers/new
Backend API: CreateCustomer
Zorunlu Alanlar Tablosu
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Validasyon | API Alan | Karakter Limit |
|---|
| 1 | Ad | firstName | Text | ✅ Evet | Max 100, sadece harf+boşluk | firstName | 100 |
| 2 | Soyad | lastName | Text | ✅ Evet | Max 100, sadece harf+boşluk | lastName | 100 |
| 3 | Telefon | phone | Text | ✅ Evet | E.164 format, max 16 | phone | 16 |
| 4 | E-posta | email | Text | ❌ Hayır | Email format, max 100 | email | 100 |
| 5 | Şirket | company | Text | ❌ Hayır | Max 100 | companyName | 100 |
| 6 | Pozisyon | title | Text | ❌ Hayır | Max 100 | title | 100 |
| 7 | Adres | address | Textarea | ❌ Hayır | Max 1000 | address | 1000 |
| 8 | Şehir | city | Text | ❌ Hayır | Max 100 | city | 100 |
| 9 | Ülke | country | Text | ❌ Hayır | Max 100 | country | 100 |
| 10 | Doğum Tarihi | birthDate | Date | ❌ Hayır | 1900-bugün arası | birthDate (ISO) | - |
| 11 | Cinsiyet | gender | Select | ❌ Hayır | Erkek/Kadın/Diğer | male/female/other | - |
| 12 | Segment | segment | Select | ❌ Hayır | API’den yüklenir | segment | - |
| 13 | Etiketler | tags | Badge Array | ❌ Hayır | Max 5 etiket | tags[] | - |
| 14 | Özel Alanlar | customFields | Key-Value | ❌ Hayır | Max 5 alan | customProperties[] | - |
| 15 | Müşteri Notları | notes | Textarea | ❌ Hayır | Max 2000 | description | 2000 |
Özel Validasyon Kuralları
| Alan | Kural | Regex/Format |
|---|
| firstName | Sadece Türkçe ve İngilizce harfler + boşluk | /[^a-zA-ZçğıöşüÇĞIİÖŞÜ\s]/g |
| lastName | Sadece Türkçe ve İngilizce harfler + boşluk | /[^a-zA-ZçğıöşüÇĞIİÖŞÜ\s]/g |
| phone | E.164 format (libphonenumber-js ile) | +905551234567 |
| email | Email format | /^[^\s@]+@[^\s@]+\.[^\s@]+$/ |
| tags | Dublicate yasak, max 5 | - |
| customFields | Max 5 key-value çifti | - |
| Form Alanı | API Alanı | Dönüşüm |
|---|
| company | companyName | Direkt |
| notes | description | Direkt |
| birthDate | birthDate | Date → ISO 8601 |
| gender (Erkek/Kadın/Diğer) | gender (male/female/other) | Mapping |
| customFields (object) | customProperties (array) | {key: value} → [{key, value}] |
Varsayılan Değerler
| Alan | Varsayılan |
|---|
| country | ”Türkiye” |
| source | 3 (manuel ekleme) |
| Diğer tüm alanlar | Boş string / undefined |
3. Kampanya Oluşturma
Sayfa: /campaigns/all/new
Backend API: CreateCampaign
Zorunlu Alanlar Tablosu
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Validasyon | API Alan | Not |
|---|
| 1 | Kampanya Adı | name | Text | ✅ Evet | Boş olamaz | name | - |
| 2 | Amaç | purpose | Textarea | ❌ Hayır | Yok | purpose | - |
| 3 | Arama Listesi | callListId | Select | ✅ Evet | API’den seçim | callListId | Edit’te değiştirilemez |
| 4 | Telefon Numarası | phoneNumberId | Select | ✅ Evet | API’den seçim | phoneNumberId | Edit’te değiştirilemez |
| 5 | AI Agent | agentId | Select | ✅ Evet | API’den seçim | agentId | Edit’te değiştirilemez |
| 6 | Selamlama Şablonu | greetingTemplate | Textarea | ❌ Hayır | Değişken destekli | agentOverride.firstMessage | - |
| 7 | Otomatik/Zamanlanmış | isScheduledCampaign | Toggle | ❌ Hayır | Boolean | - | Frontend only |
| 8 | Eş Zamanlı Aramalar | simultaneousCalls | Number | ✅ Evet | 1-100 | maxConcurrency | Default: 5 |
| 9 | Gecikme (ms) | delayBetweenCalls | Number | ✅ Evet | 0-60000 | waitBetweenCallsInMs | Default: 2 |
| 10 | Tatillerde ara | callInHolidays | Checkbox | ❌ Hayır | Boolean | callInHolidays | Default: false |
Koşullu Zorunlu Alanlar (Zamanlanmış Kampanya)
| # | Alan Adı (TR) | Tip | Zorunlu | Koşul | Validasyon | |
|---|
| 11 | Başlangıç Tarihi | startDate | Date | ⚠️ Koşullu | isScheduledCampaign=true | Bugün veya sonrası |
| 12 | Başlangıç Saati | startTime | Time | ⚠️ Koşullu | isScheduledCampaign=true | HH:mm format |
| 13 | Bitiş Tarihi | endDate | Date | ⚠️ Koşullu | isScheduledCampaign=true | >= startDate |
| 14 | Bitiş Saati | endTime | Time | ⚠️ Koşullu | isScheduledCampaign=true | HH:mm format |
Haftalık Takvim (Schedule)
| Gün | dayOfWeek | Varsayılan Enabled | Varsayılan Saat |
|---|
| Pazartesi | 0 | true | 09:00 - 18:00 |
| Salı | 1 | true | 09:00 - 18:00 |
| Çarşamba | 2 | true | 09:00 - 18:00 |
| Perşembe | 3 | true | 09:00 - 18:00 |
| Cuma | 4 | true | 09:00 - 18:00 |
| Cumartesi | 5 | true | 09:00 - 18:00 |
| Pazar | 6 | true | 09:00 - 18:00 |
Validasyon: Aynı günde çakışan saat aralıkları olamaz
| Form | API |
|---|
| Date object + Time string | ”dd.mm.yyyy hh:mm” |
| ISO 8601 | ”20.11.2024 14:30” |
Selamlama Şablonu Değişkenleri
Format: {{variableName}}
Kaynak: getAgentFirstMessageOverrideVariables() API’den dinamik yüklenir
4. Bilgi Bankası Oluşturma
Sayfa: /knowledge/new
Backend API: CreateKnowledgebase
Zorunlu Alanlar Tablosu
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Validasyon | Karakter Limit |
|---|
| 1 | İsim | name | Text | ✅ Evet | Min 2, max 50 | 50 |
| 2 | Açıklama | description | Textarea | ✅ Evet | Min 1, max 250 | 250 |
| 3 | Dosyalar | files | File Upload | ✅ Evet | En az 1 dosya (yeni veya mevcut) | - |
| Kategori | Formatlar |
|---|
| Dökümanlar | .pdf, .doc, .docx, .txt |
| Veri | .csv, .json, .xml |
| Web | .html, .shtml, .shtm, .ehtml |
| Kod | .js, .mjs, .css |
| Diğer | .xsl, .xslt, .xbl |
Dosya Yükleme Seçenekleri
- Yeni Dosya Yükleme: Drag-drop veya file picker
- Mevcut Dosyalardan Seçim: Organizasyonun önceden yüklediği dosyalar
Kombinasyon: En az 1 dosya (yeni + mevcut toplamı)
Validasyon Detayları
| Alan | Min | Max | Hata Mesajı (TR) |
|---|
| İsim | 2 | 50 | ”İsim en az 2 karakter olmalıdır” / “İsim en fazla 50 karakter olabilir” |
| Açıklama | 1 | 250 | ”Açıklama gereklidir” / “Açıklama en fazla 250 karakter olabilir” |
| Dosyalar | 1 | ∞ | “Lütfen en az bir dosya seçin” |
API Akışı
- Yeni dosyalar
UploadFile ile yüklenir → file ID’ler döner
- Mevcut dosya ID’leri seçilir
- Tüm file ID’ler birleştirilir:
[...uploadedIds, ...selectedExistingIds]
CreateKnowledgebase() API’ye gönderilir
5. SIP Trunk Oluşturma
Modal: Santral sayfasında modal
Backend API: CreateSIPTrunk
Zorunlu Alanlar Tablosu
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Validasyon | Karakter Limit |
|---|
| 1 | Trunk Adı | name | Text | ✅ Evet | Max 100 | 100 |
| 2 | Kullanıcı Adı | username | Text | ✅ Evet | Max 100 | 100 |
| 3 | Şifre | password | Text | ✅ Evet | Max 100 | 100 |
Gateway Yapılandırması (En Az 1 Gerekli)
| # | Alan Adı (TR) | Alan Adı (EN) | Tip | Zorunlu | Validasyon |
|---|
| 4 | IP Adresi | ipAddress | Text | ✅ Evet | IPv4 formatı |
| 5 | Port | port | Number | ✅ Evet | Port numarası |
| 6 | Protokol | protocol | Select | ✅ Evet | UDP/TCP/TLS/TLS_SRTP |
| 7 | Netmask | netmask | Number | ❌ Hayır | 0-32 arası |
Minimum Gateway Sayısı: 1
Maksimum Gateway Sayısı: Sınırsız (önerilir: 2-3 yedekleme için)
Protokol Seçenekleri
| Değer | Açıklama |
|---|
| UDP | Standart, hızlı |
| TCP | Güvenilir bağlantı |
| TLS | Şifreli güvenli |
| TLS/SRTP | Tam şifreleme |
Validasyon Hataları
| Hata | Türkçe Mesaj |
|---|
| Ad/username/password > 100 | ”Ad, kullanıcı adı veya şifre en fazla 100 karakter olabilir” |
| Port veya protokol boş | ”Gateway : Port ve protokol doldurulmalı” |
| Netmask geçersiz | ”Gateway : Netmask 0-32 arası olmalı” |
| IP geçersiz | ”Gateway : Geçerli bir IP adresi girin” |
| Gateway yok | ”En az bir gateway olmalı” |
6. Özet Karşılaştırma
| Form | Toplam Alan | Her Zaman Zorunlu | Koşullu Zorunlu | Opsiyonel |
|---|
| AI Agent | 18 | 4 | 3 | 11 |
| Müşteri | 15 | 3 | 0 | 12 |
| Kampanya | 14 | 6 | 4 | 4 |
| Bilgi Bankası | 3 | 3 | 0 | 0 |
| SIP Trunk | 7 | 6 | 1 (gateway) | 1 |
En Çok Zorunlu Alan
🥇 SIP Trunk - 6/7 alan zorunlu (85.7%)
🥈 Bilgi Bankası - 3/3 alan zorunlu (100%)
🥉 Kampanya - 6/14 alan zorunlu (42.9%)
En Az Zorunlu Alan
Müşteri - 3/15 alan zorunlu (20%)
Karakter Limit Karşılaştırması
| Form | En Kısa Limit | En Uzun Limit | Ortalama |
|---|
| AI Agent | 20 (escalation msg min) | 1000 (description) | 200 |
| Müşteri | 16 (phone) | 2000 (notes) | 400 |
| Kampanya | - | - | - |
| Bilgi Bankası | 2 (name min) | 250 (description) | 100 |
| SIP Trunk | - | 100 | 100 |
API Endpoint Özeti
| Form | API Method | Endpoint Path |
|---|
| AI Agent | POST | /platform/agents |
| Müşteri | POST | /platform/customers |
| Kampanya | POST | /platform/campaigns |
| Bilgi Bankası | POST | /platform/knowledgebases |
| SIP Trunk | POST | /platform/sip-trunks |
📌 Önemli Notlar
Dokümantasyon Hataları Bulundu
-
AI Agent formunda:
- ❌ Ses Seçimi alanı YOK (dokümanda var)
- ❌ AI Model Seçimi alanı YOK (dokümanda var)
- ❌ Telefon Ataması alanı YOK (dokümanda var)
- ❌ Temperature kullanıcı değiştiremiyor (dokümanda değiştirilebilir yazıyor)
-
Kampanya formunda:
- ⚠️ Edit modda 3 alan değiştirilemez (callList, agent, phoneNumber)
- ⚠️ Tarih formatı: Frontend ISO, Backend “dd.mm.yyyy hh:mm”
-
Müşteri formunda:
- ⚠️ Alan adı eşleştirmeleri: company→companyName, notes→description
- ⚠️ Gender mapping: TR (Erkek/Kadın) → EN (male/female)
Gerçek Zamanlı Validasyon
Tüm formlarda:
- ✅ Karakter sayacı (real-time)
- ✅ Hata mesajları (inline)
- ✅ Disable butonu (geçersiz formda)
- ✅ Red border (geçersiz alanlarda)
Son Güncelleme: 2025-11-16
Doğrulama Durumu: ✅ Frontend kod ile %100 doğrulanmıştır
Kullanım: Dokümantasyon yazarken bu tabloya başvurun