Tüm isteklerde
X-Tenant header’ı zorunludur. Konuşmalar, mesajlar ve kanallar sıkı bir tenant izolasyonuna tabidir.Endpoint özeti
| Metot | Endpoint | Açıklama |
|---|---|---|
GET | /api/v1/conversations | Gelen kutusunu (konuşma listesi) getirir |
POST | /api/v1/conversations | Yeni konuşma başlatır veya mevcut konuşmaya müşteri bağlar |
DELETE | /api/v1/conversations/{id} | Konuşmayı soft delete eder |
GET | /api/v1/conversations/{id}/messages | Konuşmanın mesaj geçmişini getirir |
POST | /api/v1/conversations/{id}/messages | Metin mesajı gönderir |
POST | /api/v1/conversations/{id}/messages/media | Medya (dosya / görsel) mesajı gönderir |
PUT | /api/v1/conversations/{id}/messages/{messageId} | Mesajı düzenler |
DELETE | /api/v1/conversations/{id}/messages/{messageId} | Mesajı soft delete eder |
POST | /api/v1/conversations/{id}/read | Müşteri mesajlarını okundu işaretler |
GET | /api/v1/conversations/{id}/agent | AI agent durumunu getirir |
POST | /api/v1/conversations/{id}/agent/disable | AI agent’ı devre dışı bırakır |
POST | /api/v1/conversations/{id}/agent/enable | AI agent’ı aktif eder |
POST | /api/v1/conversations/{id}/export | Konuşmayı dışa aktarır |
GET | /api/v1/conversations/{id}/ai-suggestion | Bekleyen AI önerisini getirir |
POST | /api/v1/conversations/{id}/ai-suggestion/send | AI önerisini gönderir |
POST | /api/v1/conversations/{id}/ai-suggestion/dismiss | AI önerisini reddeder |
PUT | /api/v1/conversations/{id}/ai-suggestion/rating | AI önerisini oylar (up / down) |
POST | /api/v1/conversations/{id}/ai-suggestion/regenerate | AI önerisini yeniden üretir |
Konuşma ve mesaj kavramı
Sohbetler API’si, kliniğin WhatsApp vb. iletişim kanalları üzerinden hastalarla (müşterilerle) yaptığı görüşmeleri yönetir. Bir konuşma (conversation); ilgili iletişim kanalı (channel), normalize edilmiş bir telefon numarası (address) ve kayıtlı bir müşteri (customer) ile ilişkilidir.
İş kuralları
Konuşma başlatma
address alanı otomatik olarak temizlenir ve uluslararası formata (normalize) çevrilir.Konuşma başlatırken sistemde bu numarayla eşleşen soft-delete edilmiş bir hasta varsa sistem onu geri getirir (
restore).Mesaj gönderme
AI Agent duraklatma: API üzerinden manuel bir mesaj (metin veya medya) gönderildiğinde, aktif bir yapay zeka asistanı (bot) o konuşma için 30 dakika boyunca otomatik olarak devre dışı bırakılır.
Metin mesajlarında (
POST .../messages) isteğe bağlı quoted_message_id alanı gönderilerek başka bir mesaj alıntılanabilir.Mesaj düzenleme ve silme
Mesaj silme (
DELETE .../messages/{messageId}) gerçek bir veritabanı silme işlemi değildir; ilgili kayıt üzerinde is_deleted=true set edilir. Silme işlemi ChatLogDeleted event’i broadcast eder.Mesaj geçmişi
Sıralama: Mesajlar her zaman en yenisi en üstte olacak şekilde sıralanır (tarihe göre azalan).
Okundu işlemi (POST .../read)
Konuşmadaki müşteriden gelen okunmamış mesajları okundu olarak işaretler.
İşlem tamamlandığında
ConversationRead eventi broadcast edilir (gerçek zamanlı güncelleme).AI Agent kontrolü
Agent durum yanıtı:
GET .../agent endpoint’i aşağıdaki yapıda yanıt döner:Agent devre dışı bırakırken (
POST .../agent/disable) duration_minutes alanı opsiyoneldir. Min: 1, maks: 525600 (~1 yıl). Gönderilmezse süresiz devre dışı kalır.Export
POST .../export ile konuşma dışa aktarılır. Desteklenen formatlar: json, csv, txt, html.
message_count (maks. 10.000) veya export_all=true ile aktarılacak mesaj miktarı belirlenebilir. include_context parametresi bağlam verilerini dahil eder.AI Suggestion (Yarı-Otonom AI)
Bu endpoint grubu, yapay zekanın oluşturduğu yanıt önerilerini yönetir.Regenerate davranışı:
POST .../ai-suggestion/regenerate isteği, trigger olan chat log’larını is_processed=false olarak işaretler ve ProcessBufferedMessagesJob’u AI kuyruğuna atar. Yeni öneri asenkron oluşturulur ve AiSuggestionCreated broadcast event’i ile gelir.Send davranışı:
send_source alanı suggestion_as_is veya suggestion_edited değerini alır. suggestion_edited seçilirse message alanı zorunludur. take_over_agent=true gönderilirse agent manuel mesajla birlikte devreden çıkarılır.Gerçek zamanlı event’ler
| Event | Tetiklenme |
|---|---|
ChatLogUpdated | Mesaj düzenlendiğinde |
ChatLogDeleted | Mesaj soft delete edildiğinde |
ConversationRead | Okundu işlemi yapıldığında |
AiSuggestionCreated | Yeni AI önerisi oluşturulduğunda (regenerate sonrası) |
Yetkilendirme
Tüm “Conversation” işlemleri uygulama içinde tek bir ortak izne (permission) bağlanmıştır.
Uygulama izinleri (permissions)
| İşlem | Gerekli izin |
|---|---|
| Tüm işlemler (okuma, yazma, silme, dosya yükleme, export, agent, AI suggestion) | View:ChatLogPage |
Token scope’ları (Passport)
| İşlem | Scope |
|---|---|
Okuma (index, messages, agent, ai-suggestion, export) | conversations:read |
Yazma / silme (store, sendMessage, sendMediaMessage, destroy, read, agent/disable, agent/enable, ai-suggestion/*) | conversations:write |