Ana içeriğe geç

Santral API

Base URL: https://api.sanalsantral.com.tr Prefix: /santral

Kimlik Doğrulama​

Tüm isteklerde Authorization header’ı ile API anahtarınızı göndermeniz gerekmektedir.

Authorization: Bearer <API_KEY>

API anahtarınızı hesap yöneticinizden temin edebilirsiniz.

Endpointler​

1. Agent Login​

Bir agenti belirtilen kuyruğa dahil eder.

ÖzellikDeğer
URLPOST /santral/agentLogin
AuthBearer Token

Request Body:

{
"pbxId":1,
"dahiliNo":"1001",
"queue": "100",
"reason":"login"
}
AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
dahiliNostringEvetDahili numarası
queuestringEvetKuyruk numarası
reasonstringHayırGiriş nedeni

Response:

{
"success": true,
"message": "Agent login başarılı",
"data": {},
"dahiliNo": "1001",
"queue": "100",
"reason": "login"
}

2. Agent Logoff​

Bir agenti kuyruktan çıkarır.

ÖzellikDeğer
URLPOST /santral/agentLogoff
AuthBearer Token

Request Body:

{
"pbxId": 1,
"dahiliNo": "1001",
"queue": "100",
"reason": "logoff"
}

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
dahiliNostringEvetDahili numarası
queuestringEvetKuyruk numarası
reasonstringHayırÇıkış nedeni

Response:

{
"success": true,
"message": "Agent logoff başarılı",
"data": {},
"dahiliNo": "1001",
"queue": "100",
"reason": "logoff"
}

3. Simple CDR (Çağrı Detay Kayıtları - Basit)​

Basitleştirilmiş çağrı detay kayıtlarını getirir.

ÖzellikDeğer
URLPOST /santral/simpleCDR veya GET /santral/simpleCDR
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1,
"startDate": "2024-01-01 00:00:00",
"endDate": "2024-01-31 23:59:59",
"callerid": "05551234567",
"dialedNumber": "1001",
"direction": "inbound"
}
AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
startDatestringEvetBaşlangıç tarihi (YYYY-MM-DD HH:mm:ss)
endDatestringEvetBitiş tarihi (YYYY-MM-DD HH:mm:ss)
calleridstringHayırArayan numara filtresi
dialedNumberstringHayırAranan numara filtresi
directionstringHayırÇağrı yönü filtresi (inbound/outbound)

Response:

{
"success": true,
"message": "CDR kayıtları başarıyla getirildi",
"data": [
{
"id": 1,
"tenant": "SANAL",
"startAt": "2024-01-15 10:30:00",
"direction": "inbound",
"callerId": "05551234567",
"callerName": "John Doe",
"dialedNumber": "1001",
"disposition": "ANSWERED",
"durationSeconds": 120,
"uniqueId": "1705312200.123",
"whoAnswered": "1001"
}
]
}

4. CDR (Çağrı Detay Kayıtları - Detaylı)​

Detaylı çağrı detay kayıtlarını getirir.

ÖzellikDeğer
URLPOST /santral/cdr veya GET /santral/cdr
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1,
"startDate": "2024-01-01 00:00:00",
"endDate": "2024-01-31 23:59:59",
"callerid": "05551234567",
"direction": "inbound"
}

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
startDatestringEvetBaşlangıç tarihi
endDatestringEvetBitiş tarihi
calleridstringHayırArayan numara filtresi
directionstringHayırÇağrı yönü filtresi

Response:

{
"success": true,
"message": "CDR kayıtları başarıyla getirildi",
"data": [
{
"startAt": "2024-01-15 10:30:00",
"answerAt": "2024-01-15 10:30:05",
"endAt": "2024-01-15 10:32:05",
"callerId": "05551234567",
"dialedNumber": "1001",
"firstDst": "100",
"lastDst": "1001",
"whereLanded": "1001",
"disposition": "ANSWERED",
"durationSeconds": 125,
"billSeconds": 120,
"uniqueId": "1705312200.123",
"linkedId": "1705312200.123"
}
]
}

5. Queue Stats (Kuyruk İstatistikleri)​

Tüm kuyrukların anlık istatistiklerini getirir.

ÖzellikDeğer
URLPOST /santral/queueStats veya GET /santral/queueStats
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1
}

Response:

{
"success": true,
"message": "Kuyruk istatistikleri başarıyla getirildi",
"data": [
{
"queueId": "100",
"queueName": "Destek",
"agentsAvailable": 5,
"agentsPaused": 1,
"agentsFree": 3,
"agentsOnline": 5,
"serviceLevel": 80,
"serviceLevel2": 90,
"callsInQueue": 2,
"firstWaiting": 15,
"secondWaiting": 8,
"thirdWaiting": 0,
"callsOnline": 2,
"talkTime": 3600,
"holdTime": 120,
"answeredCalls": 45,
"callsReceived": 50,
"abandonedCalls": 3,
"timedOutCalls": 2,
"maxHoldTime": 60,
"averageTalkTime": 80,
"averageHoldTime": 15
}
]
}

6. Extension Stats (Dahili İstatistikleri)​

Tüm dahililerin anlık durumlarını getirir.

ÖzellikDeğer
URLPOST /santral/extensionStats veya GET /santral/extensionStats
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1
}

Response:

{
"success": true,
"message": "Dahili istatistikleri başarıyla getirildi",
"data": [
{
"extensionNumber": "1001",
"extensionName": "Ahmet Yılmaz",
"state": "Idle",
"uniqueId": "",
"dndStatus": "off"
}
]
}

7. Extension Status (Dahili Durumu)​

Bir dahilinin anlık SIP kayıt durumunu sorgular (kayıt durumu, IP adresi, cihaz bilgisi). Bilgi Asterisk AMI üzerinden gerçek zamanlı alınır.

ÖzellikDeğer
URLPOST /santral/extensionStatus veya GET /santral/extensionStatus
AuthBearer Token

Request Body / Query Params:

{ "pbxId": 1, "extension": "1001" }

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
extensionstringEvetSorgulanacak dahili numarası (ör. 1001)

Response (Başarılı):

{
"success": true,
"message": "Extension status retrieved",
"data": {
"response": "Success",
"status": "OK (12 ms)",
"address-ip": "192.168.1.100",
"sip-useragent": "Yealink SIP-T31P"
}
}

Response (Hata):

{
"success": false,
"message": "Could not retrieve extension status",
"error": "Timeout"
}

data alanı AMI SIPShowPeer yanıtını içerir; alan adları küçük harfle döner.

​

8. Extension Queues (Dahilinin Kuyrukları)​

Bir dahilinin üye olduğu kuyrukları listeler.

ÖzellikDeğer
URLPOST /santral/extensionQueues veya GET /santral/extensionQueues
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1,
"extensionNumber": "1001"
}

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
extensionNumberstringEvetDahili numarası

Response:

{
"success": true,
"message": "Dahili kuyrukları başarıyla getirildi",
"data": {
"extensionNumber": "1001",
"queues": [
{
"queueId": "100",
"queueName": "Destek"
},
{
"queueId": "200",
"queueName": "Satış"
}
]
}
}

9. Get DIDs (DID Numaraları)​

PBX’e tanımlı DID (Direct Inward Dialing) numaralarını listeler.

ÖzellikDeğer
URLPOST /santral/getDIDs veya GET /santral/getDIDs
AuthBearer Token

Request Body / Query Params:

{
"pbxId": 1
}
AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası

Response:

{
"success": true,
"message": "DID listesi başarıyla getirildi",
"data": [
{
"id": 1,
"number": "02121234567"
},
{
"id": 2,
"number": "08501234567"
}
]
}

10. Get Recording (Ses Kaydı)​

Çağrı ses kaydını indirir veya tarayıcıda oynatır. Dosya WAV formatında döner. Tarayıcı üzerinden oynatma için HTTP Range desteği mevcuttur.

ÖzellikDeğer
URLGET /santral/getRecording
AuthBearer Token

Query Params:

AlanTipZorunluAçıklama
pbxIdnumberEvetPBX kimlik numarası
idstringEvetKayıt benzersiz kimlik numarası
typestringEvetdownload (indirme) veya play (oynatma)

Headers (Opsiyonel):

HeaderAçıklama
Rangebytes=0-1024 şeklinde kısmi içerik isteği (oynatma modu için)

Response (type=download):

  • Content-Type: audio/wav

  • Content-Disposition: attachment; filename="recording_<id>.wav"

  • Dosya doğrudan indirilir.

Response (type=play):

  • Content-Type: audio/wav

  • Content-Disposition: inline

  • Accept-Ranges: bytes

  • HTTP 206 Partial Content desteklidir.

Genel Response Yapısı​

Tüm endpointler aşağıdaki formatta JSON response döner:

{
"success": true,
"message": "İşlem açıklaması",
"data": {}
}
AlanTipAçıklama
successbooleanİşlem başarılı ise true, hata durumunda false
messagestringİşlem sonucunu açıklayan mesaj
dataanyİşlem sonucu dönen veri (hata durumunda bulunmayabilir)

Hata Kodları​

HTTP KoduAçıklama
400Geçersiz parametre veya eksik zorunlu alan
401Geçersiz veya eksik API anahtarı
403Bu kaynağa erişim yetkiniz bulunmamaktadır
404İstenen kaynak bulunamadı
500Sunucu hatası