agent
11 uç · /api/callcenter/v1/agent
İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 11 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.
POST /api/callcenter/v1/agent/call/resume — resumed: bekleyen bir çağrı VAR mı.
Gövde isteğe bağlı: {"device": "web"|"ios"|"android"} — geri bağlama INVITE'ı yalnız o
cihaza gider (yoksa web; bugünkü panel gövde göndermez).
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/call/resume" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}PUT /api/callcenter/v1/agent/device — ses NEREYE gelsin.
Kullanıcı kararı (2026-09-08): *"ikisi de olsun, hem tarayıcıdan hem cepten."*
Seçim temsilcinindir ve kalıcıdır: her çağrıda yeniden sorulan bir soru,
telefonun kendisini yavaşlatır.
🔴 mobile seçilirken numara ZORUNLU — şemada da CHECK var, ama hata mesajı
ORADAN gelirse kullanıcı 23514 gibi bir kod görür. Kapı burada, anlaşılır
cümleyle.
curl -X PUT "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/device" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/callcenter/v1/agent/live — WS payload'ının AYNISI, tek seferlik HTTP olarak.
İki işi var. (1) **Dürüst degrade:** WS kurulamazsa (proxy WS'i yutuyor, ağ kısıtlı) ekran boş
kalmaz, istemci buradan yoklar — sahte-canlı göstermek yerine daha yavaş ama gerçek veri.
(2) **Test edilebilirlik:** WebSocketUpgrade extractor'ı gerçek TCP-upgrade istediği için
oneshot ile sürülemez; payload'ın kiracı/temsilci izolasyonu bu uçtan HTTP ile doğrulanır.
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/live" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/callcenter/v1/agent/phone — CRM telefonunun açılış künyesi.
**POST çünkü YAZABİLİR** (dahili otomatiği) — ama yalnız provision: true
ile.
🔴 **Sağlama İSTEĞE BAĞLIDIR ve varsayılanı KAPALIDIR.** Künye, CRM panelinin
kabuğunda her oturumda bir kez çekilir (çağrı çubuğunun gelen çağrıyı
gösterebilmesi için). Sağlama koşulsuz olsaydı, telefonu HİÇ açmayacak
50 kişilik bir ekipte panele giren herkese dahili doğar ve kiracının dahili
aralığı, telefonu kullanmayan insanlarla dolardı. Karar kullanıcının
NİYETİNE bağlanır: Telefon sayfasını açmak ya da "Ara"ya basmak bir niyettir,
gelen kutusunu açmak değildir.
Yanıt dört soruyu birden cevaplar ve **hiçbirinde "bilinmiyor" bırakmaz**:
* is_agent — false ise agent_reason SEBEBİ söyler (askıya alınmış /
otomatik kapalı / koltuk kotası dolu). Sebepsiz false, yalnız *"henüz
sorulmadı"* demektir (kabuk açılışı) ve panel telefonu hiç çizmez.
* extension — null ise extension_reason SEBEBİ söyler (otomatik kapalı /
aralık dolu). Boş bir alan, kullanıcıya yapacak bir şey bırakmaz.
* caller_ids — boşsa panel *"önce bir numara ekleyin"* der; giden çağrı
anonymous ile gitmez (çoğu operatör onu reddeder ya da müşteri açmaz).
* webrtc — null ise tarayıcıdan konuşulamaz ve panel cihaz seçicisinde
"Tarayıcı" seçeneğini KİLİTLİ gösterir; gizlemez (ulaşılamayan kutu yalandır,
ama olmayan kutu da sebebiyle birlikte gösterilir).
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/phone" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}SF7-live D2 — agent KENDİ presence'ını değiştirir (ready/not-ready). FSM: çağrıdayken (ringing/
on-call) reddedilir → 409; geçersiz gerekçe → 400. AgentCtx.agent_id (yalnız kendi durumu).
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/presence" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/callcenter/v1/agent/softphone — ajanın aktif extension'ını bulur, sip_password'ü
açar, kısa-ömürlü TURN cred üretir ve WebRTC softphone'un register olması için gereken her şeyi
döner. Config (AppState.webrtc) yoksa 503; ajanın atanmış aktif extension'ı yoksa 409.
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/softphone" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /api/callcenter/v1/agent/stream?ticket=X — ticket tüket → (tenant, agent) → WS upgrade.
Ticket yok/geçersiz/expired/tekrar/**yanlış akış** → 401 (upgrade YOK).
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/stream" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /api/callcenter/v1/agent/stream/ticket — temsilci akışı için kısa-ömürlü, tek-kullanımlık
ticket. Tam 3-kapıdan geçmiş AgentCtx gerektirir; ticket **agent_id'yi taşır**, böylece soket
kimin durumunu yayacağını istemciye sormaz.
Ayrı izin YOK — bilinçli: temsilci yalnızca KENDİ durumunu alır, izin verecek bir "başkasının
verisi" yoktur. require_agent (agent düzlemi) zaten kapıdır.
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/stream/ticket" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}