Çağrı Merkezi

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/detach

POST /api/callcenter/v1/agent/call/detach

Oturum
İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/call/detach" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/callcenter/v1/agent/call/forward

POST /api/callcenter/v1/agent/call/forward

Oturum
İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/call/forward" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/callcenter/v1/agent/call/resume

POST /api/callcenter/v1/agent/call/resume — resumed: bekleyen bir çağrı VAR mı.

Oturum

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).

İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/call/resume" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
PUT/api/callcenter/v1/agent/device

PUT /api/callcenter/v1/agent/device — ses NEREYE gelsin.

Oturum

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.

İstek
curl -X PUT "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/device" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/callcenter/v1/agent/home

Agent home

Oturum
İstek
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/home" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/callcenter/v1/agent/live

GET /api/callcenter/v1/agent/live — WS payload'ının AYNISI, tek seferlik HTTP olarak.

Oturum

İ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.

İstek
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/live" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/callcenter/v1/agent/phone

POST /api/callcenter/v1/agent/phone — CRM telefonunun açılış künyesi.

Oturum

**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).

İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/phone" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/callcenter/v1/agent/presence

SF7-live D2 — agent KENDİ presence'ını değiştirir (ready/not-ready). FSM: çağrıdayken (ringing/

Oturum

on-call) reddedilir → 409; geçersiz gerekçe → 400. AgentCtx.agent_id (yalnız kendi durumu).

İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/presence" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/callcenter/v1/agent/softphone

POST /api/callcenter/v1/agent/softphone — ajanın aktif extension'ını bulur, sip_password'ü

Oturum

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.

İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/softphone" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/callcenter/v1/agent/stream

GET /api/callcenter/v1/agent/stream?ticket=X — ticket tüket → (tenant, agent) → WS upgrade.

Oturum

Ticket yok/geçersiz/expired/tekrar/**yanlış akış** → 401 (upgrade YOK).

İstek
curl -X GET "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/stream" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/callcenter/v1/agent/stream/ticket

POST /api/callcenter/v1/agent/stream/ticket — temsilci akışı için kısa-ömürlü, tek-kullanımlık

Oturum

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.

İstek
curl -X POST "https://{slug}.call.blesyum.app/api/callcenter/v1/agent/stream/ticket" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
Bu sayfa işine yaradı mı?