Skip to main content
Tüm isteklerde X-Tenant header’ı zorunludur. Konuşmalar, mesajlar ve kanallar sıkı bir tenant izolasyonuna tabidir.

Endpoint özeti

Tüm parametreler, alanlar ve örnek istek/yanıtlar için API Referansı sekmesine bakın.

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

Konuşma başlatma idempotent çalışır: Aynı numara ve kanal için tekrar istek atılırsa mevcut konuşmayı döner.
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

Asenkron gönderim (202 Queued): Mesaj gönderme istekleri (POST .../messages ve .../messages/media) API tarafından anında işlenip karşı tarafa iletilmez. İstek alındığında OutboundMessageDispatcher üzerinden arka plan kuyruğuna eklenir ve API 202 Accepted durum koduyla yanıt döner:
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.
Kanalın maxMessageLength ve supportedMediaTypes kısıtlamaları gönderim öncesinde kontrol edilir. Bu limitleri aşan mesajlar reddedilir.
Metin mesajlarında (POST .../messages) isteğe bağlı quoted_message_id alanı gönderilerek başka bir mesaj alıntılanabilir.
Medya mesajı formatı: Bu istek JSON olarak yapılamaz. Body formatı kesinlikle multipart/form-data olmalıdır. Maksimum dosya boyutu 50 MB’dır.
MIME tipi otomatik tespiti: Sistem yüklenen dosyanın MIME tipini otomatik analiz eder ve mesaj tipini (image, video, audio, document) kendisi belirler.

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

Yetkilendirme

Tüm “Conversation” işlemleri uygulama içinde tek bir ortak izne (permission) bağlanmıştır.

Uygulama izinleri (permissions)

Token scope’ları (Passport)