sounds
13 uç · /api/callcenter/v1/sounds
İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 13 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.
GET /sounds/{id}/audio — panelde dinleme.
idstorage_ref bir İÇ uçtur (kenarda yalnız medya VM'inin IP'sine açık) → tarayıcı onu çekemez.
Önizleme bu yüzden oturum yetkisiyle buradan akar. Kaynak, kaydın hangi yolla ses kazandığına
göre iki yerden gelir: yüklenen/birleştirilen bayt kaydın kendisinde, sentezlenen TTS baytı
tts_audio_cache'te.
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/<id>/audio" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /sounds/{id}/files — çalma listesi parçaları (çalma sırasıyla).
idcurl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/<id>/files" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /sounds/{id}/files — ham audio gövdesi yükle.
id**Multipart değil, ham bayt — bilinçli:** panel fetch(body: File) ile gönderir; multipart bir
ayrıştırıcı bağımlılığı ve ikinci bir tavan yüzeyi (parça başına limit) getirirdi. Dosya adı
sorgu dizesinde taşınır.
Yüklenen bayt **telefon formatına normalize edilir** (8 kHz/16-bit/mono WAV) ve DB'ye o hâliyle
girer; ham dosya SAKLANMAZ. Gerekçe: medya sunucusunda mod_shout yok (mp3 çalınmaz) ve süre
hesabı bayt uzunluğundan çıkar (bkz. audio modülü).
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/<id>/files" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}DELETE /sounds/{id}/files/{fid} — parça çıkar, kalanı yeniden birleştir.
idfidcurl -X DELETE "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/<id>/files/<fid>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}PUT /sounds/{id}/files/order — çalma sırasını değiştir.
idSıra **tek UPDATE turunda** yazılır ve position kolonunda unique kısıt vardır: iki parçayı
takas ederken ara adım çakışırdı. Bu yüzden önce hepsi negatife taşınır (çakışmayan geçici
alan), sonra hedef sıraya yazılır — hepsi aynı transaction'da.
curl -X PUT "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/<id>/files/order" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}SF6.3 / SF13.3 / **P0.1** — TTS sentez hattı: tts sound'u sentezle, **audio baytını sakla**,
idstorage_ref'i FreeSWITCH'in çalabileceği gerçek adrese set et.
**2026-08-15'te kapatılan boşluk:** bu uç eskiden sentezliyor, ücret düşüyor ve üretilen sesi
ATIYORDU (let _audio = …); storage_ref yalnız *planlanan* bir yolu tutuyor, arkasında dosya
olmuyordu. Artık tts_cache::get_or_synthesize baytı callcenter.tts_audio_cache'e yazar ve
dönen URL doğrudan çalınabilir olur.
**Cache artık içerik-adresli ve GLOBAL:** anahtar (sağlayıcı, çözülmüş-ses, format, metin)
HMAC'idir. Bunun iki sonucu var: (1) sağlayıcı ya da varsayılan ses değişirse anahtar da değişir
→ eski ses servis edilmeye devam etmez (2026-07-13 FORWARD-NOTE'u); (2) aynı metni içeren FARKLI
satırlar tek sentezi paylaşır — paneldeki karşılama ile akıştaki aynı cümle ikinci kez
ücretlendirilmez (eski satır-başına dedup'ın aksine).
**Ücretlendirme fail-CLOSED KALIR (çağrı yolundan farklı — bilinçli):** burada kullanıcı
interaktif bir düğmeye basıyor, "yetersiz kredi" mesajını GÖREBİLİYOR ve tekrar deneyebiliyor.
Çağrı yolunda böyle bir alıcı yok; orada reddetmek IVR'ı yeniden sessizleştirirdi, bu yüzden
orası post-paid'dir (bkz. tts_cache modül başlığı).
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/<id>/synthesize" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}BLE2-4674 — panelin bekletme müziği seçicisinin sistem seçenekleri. Sabit liste ama uçtan
verilir: panel adres/akış adı SABİT YAZMAZ (modül adresleri kuralının aynısı).
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/moh-streams" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}SF13.3 — kullanılabilir TTS sesleri (canlı Azure → küratörlü tr-TR; Stub → mock). Ses-seçici kaynağı.
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/sounds/voices" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}