İçeriğe geç
Fiber Santral

Fiber Santral API

Yerleşik santral API'si

Santralinizden canlı çağrıları, kayıtları, dahilileri ve kuyrukları okuyabilir; arama başlatabilir, IVR çalabilir ve SMS gönderebilirsiniz. Uçlar standart HTTP GET istekleridir; yanıtlar JSON (rehber XML). Kendi uygulamanızdan, CRM'inizden ya da santral IVR betiğinden çağırın.

Okuma uçları — veri döndürür İşlem uçları — çağrı başlatır/sonlandırır

Kimlik ve adres

Her istek kullanıcı adı ve API şifresi taşır. API şifresini panelde Ayarlar → API Kullanım Şifresi bölümünden alırsınız; bu şifre web giriş şifrenizden ayrıdır. Şifre en az bir özel karakter içerir; adres satırında # yerine %23, % yerine %25 yazın.

Santral adresiniz

Her kurulumun kendi alan adı vardır. Aşağıdaki örneklerde geçen {site-adiniz} yerine panelinize girdiğiniz adresi yazın.

https://{site-adiniz}

Santraliniz yalnız http sunuyorsa örneklerdeki https yerine http yazın.

Yanıt biçimi

Yanıtların tümü success ve count alanlarını, ardından data dizisini taşır. İstek başarısızsa success false döner.

API şifresi URL içinde açık gider. İstekleri yalnız kendi sunucunuzdan yapın, tarayıcıya ya da genel istemci koduna gömmeyin. Şifre sızarsa panelden yenileyin.

GET

Aktif aramalar

O an santralden geçen canlı çağrıları listeler. Web panelinizde arayan numaraya göre müşteri bilgisi getirmek için kullanışlıdır.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=activecalls

Örnek yanıt

[
  {
    "success": true,
    "count": 1,
    "data": [
      {
        "channel": "SIP/trunk-sip-Trunk110-36a9b",
        "duration": "00:01:14",
        "calltype": "Kuyruk(630)",
        "callinfo": "Konuşuyor",
        "src": "9053xxxxxxxxx",
        "dst": "110"
      }
    ]
  }
]
channel
Çağrının ayırt edici kimliği; ses kaydı indirmede kullanılır.
duration
Çağrı süresi.
calltype
Çağrı tipi (ör. kuyruk numarası).
callinfo
Çağrı durumu (ör. "Konuşuyor").
src
Arayan numara.
dst
Aranan numara / dahili.
Kod örnekleri
JSONObject := TJsonObject.Create;
try
  JSONObject.Parse(TEncoding.UTF8.GetBytes(
    NetHTTP.Get('https://{site-adiniz}/?username=Kullanıcı&password=Şifre&action=activecalls').ContentAsString), 1);
  if StrToInt(JSONObject.GetValue('count').Value) <> 0 then
  begin
    VeriArray := JSONObject.GetValue('data') as TJSONArray;
    for don := 0 to VeriArray.Count - 1 do
    begin
      Veriler := TJsonObject.Create;
      try
        Veriler.Parse(TEncoding.UTF8.GetBytes(VeriArray.Items[don].ToString), 0);
        Memo.Lines.Add(Veriler.GetValue('channel').Value);
        Memo.Lines.Add(Veriler.GetValue('src').Value);
        Memo.Lines.Add(Veriler.GetValue('dst').Value);
      finally Veriler.Free; end;
    end;
  end;
finally JSONObject.Free; end;
GET

Çağrı detayları

İki tarih arasındaki çağrı kayıtlarını (CDR) döndürür. Numaraya göre süzebilir, IVR/görüştürme uçlarından taşınan veriyi uf=yes ile isteyebilirsiniz.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=cdr&date1={ddMMyyyyHHmm}&date2={ddMMyyyyHHmm}&number=&uf=yes
ParametreZorunluAçıklama
date1EvetBaşlangıç; ddMMyyyyHHmm (ör. 030920190100).
date2EvetBitiş; aynı biçim.
numberHayırYalnız bu numaraya ait kayıtlar. Boşsa tümü.
ufHayıryes ise IVR/görüştürme uçlarının taşıdığı veriyi de getirir.

Örnek yanıt

{
  "success": true,
  "count": 2,
  "data": [
    {
      "id": "28699",
      "calldate": "03.09.2019 12:30:38",
      "calltype": "incoming",
      "src": "90507XXXXXXX",
      "dst": "101",
      "duration": "85,69",
      "disposition": "ANSWERED",
      "queue": "",
      "record": true,
      "userfield": "Gelen bilgi"
    }
  ]
}
id
Kaydın kimliği; ses dosyası indirmede kullanılır.
calldate
Tarih ve saat.
calltype
incoming / outcoming.
src · dst
Arayan ve aranan.
duration
Çağrı süresi (sn).
disposition
Sonuç: ANSWERED, BUSY, NO ANSWER…
queue
Varsa kuyruk numarası.
record
Ses kaydı var mı (true/false).
userfield
Taşınan serbest bilgi.
GET

Dahililer

Dahilileri ve register (bağlı) olma durumlarını listeler.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=users

Örnek yanıt

{
  "success": true,
  "count": 2,
  "data": [
    { "username": "100", "name": "Mehmet", "regstatus": "OK (93 ms)" },
    { "username": "101", "name": "Satış",  "regstatus": "OK (109 ms)" }
  ]
}
username
Dahili numarası.
name
Dahili kullanıcı adı.
regstatus
Register durumu ve yanıt süresi.
GET

Kuyruklar

Çağrı kuyruklarını ve her kuyruğa bağlı dahilileri listeler.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=queues

Örnek yanıt

{
  "success": true,
  "count": 2,
  "data": [
    { "queuenumber": "630", "name": "Muhasebe", "internal": "100,101,102" },
    { "queuenumber": "632", "name": "Satış",    "internal": "105,106" }
  ]
}
queuenumber
Kuyruk numarası.
name
Kuyruk adı.
internal
Kuyruğa bağlı dahililer (virgülle).
GET

Rehber

Santralde kayıtlı rehberin tamamını XML olarak döndürür (IP telefon rehberi biçimi).

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=phonedirectory

Örnek yanıt (XML)

<?xml version="1.0" encoding="UTF-8" ?>
<iexIPPhoneDirectory>
  <DirectoryEntry>
    <Name>Fiber Santral</Name>
    <Telephone>908502590259</Telephone>
  </DirectoryEntry>
</iexIPPhoneDirectory>
GET

Ses kaydı indirme

Çağrı detaylarındaki id (ya da chanid) ile çağrının ses dosyasını .gsm biçiminde indirir.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=record&id={cdr_id}

id yerine chanid parametresi de kullanılabilir.

İŞLEM

Arama başlatma

Önce verilen dahiliyi çaldırır, dahili açınca hedef numarayı arar (trunk araması).

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=callnumber&number={telefon}&internal={dahili}
ParametreZorunluAçıklama
numberEvetAranacak telefon numarası.
internalEvetÖnce çalacak dahili.
İŞLEM

IVR (anons) araması

Bir numarayı arayıp seçtiğiniz robot/anons planını çalar. file içinde süslü parantezli metin sese çevrilir; | sonrası santraldeki hazır ses dosyasının adıdır.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=callivr&number={telefon}&dp={arama_planı}&dest={robot_no}&uf={taşınacak_veri}&file={merhaba,Mehmet%20bey}|SES1|SES2
ParametreZorunluAçıklama
numberEvetÇağrı gönderilecek numara.
dpEvetKullanılacak arama planı.
destEvetOkunacak robot numarası.
fileEvetÇalınacak içerik. {…} metni sese çevrilir, | sonrası yüklü ses adıdır.
ufHayırÇağrıyla taşınacak serbest veri (CDR'de uf=yes ile okunur).

Santral IVR betiği örneği

procedure baslat;
begin
  Read(tuslama, '${XPLAY}', 3, 5);
  API(sonuc, 'https://uygulamaniz.com/api/sms.php?tuslama=${tuslama}&id=${MSTUF}');
  PlayBack('tesekkurler');
  Hangup;
end;
${XPLAY}
İstekteki file sesini okur.
${MSTUF}
İstekteki uf verisini çeker.

Tüm script komutları (Read, PlayBack, Dial, API…) ve örnekleri: IVR script dokümanı.

İŞLEM

İki numarayı görüştürme

İki numarayı, birbirinin numarasını görmeden santral üzerinden konuşturur.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=callback&number1={telefon1}&number2={telefon2}&dp={arama_planı}&uf={taşınacak_veri}
İŞLEM

Çağrı sonlandırma

Devam eden bir çağrıyı kanal kimliğiyle kapatır. Kanalı aktif aramalar ya da çağrı detayları ucundan alırsınız.

İstek
https://{site-adiniz}/?username={kullanıcı}&password={api_şifresi}&action=hangupcall&channel={kanal}
OLAY

Çağrı bilgisi gönderme

Santralden geçen çağrıların bilgisini kendi uygulamanıza POST eder. Panelde tanımlanan URL'e çağrı başında ve sonunda istek gider; URL içindeki değişkenler santral tarafından doldurulur.

Çağrı başında (örnek hedef URL)
https://uygulamaniz.com/cagri?arayan={src}&aranan={dst}&kanal={chanid}
Çağrı bitince (örnek hedef URL)
https://uygulamaniz.com/kapanis?durum={status}&sure={duration}&kanal={chanid}
{src} · {dst}
Arayan ve aranan numara.
{chanid}
Çağrının benzersiz kimliği; ses kaydı vb. çekmek için kullanılır.
{status}
Sonuç: ANSWER, BUSY, NOANSWER, CANCEL, CONGESTION.
{duration}
Çağrı süresi (sn).

Hedef URL'de DID numarası boş bırakılırsa santralde kayıtlı tüm numaralarda POST çalışır.

IVR

Metni sese çevirme

Santral IVR betiğinde metni anlık seslendirir.

procedure TTS;
begin
  TTS('Merhaba Mehmet Bey, bu bir test mesajıdır.');
end;
SMS

Otomatik SMS

GET ya da POST ile SMS gönderir. IVR betiğinden ya da kendi sunucunuzdan çağrılabilir; örneğin cevapsız çağrıda arayan numaraya otomatik dönüş SMS'i.

İstek
https://websms.{site-adiniz}/get_api.php?username={kullanıcı}&password={api_şifresi}&receivers=538400XXXX&text=Mesaj%20metni&originator=Başlık
ParametreZorunluAçıklama
usernameEvetKullanıcı adı.
passwordEvetAPI şifresi.
receiversEvetAlıcı GSM numaraları. Çoklu için ,; rapor takibi için id:numara.
textEvetSMS metni. En çok 1080 karakter.
originatorEvetSMS başlığı (onaylı gönderici adı).
internationalHayır1 uluslararası, 0/boş yurt içi.
unicodeHayır1 Unicode, 8 Türkçe, 0/boş standart GSM.
delivery_timeHayırİleri tarih Y-m-d H:i:s. Boşsa hemen.
response_typeHayırhtml ya da varsayılan json.

Başarılı yanıt

{
  "status": true,
  "data": {
    "sms_id": 13264888,
    "sms_count": 1,
    "amount": "0.0060",
    "credit": "5202.2040",
    "valid_receiver": 1,
    "invalid_receiver": 0
  }
}

Hatalı yanıt

{
  "status": false,
  "error": { "code": 2, "message": "Invalid username or password" }
}
Hata kodları
KodAnlamı
1Zorunlu parametre eksik (kullanıcı, şifre, alıcılar, metin, başlık).
2Geçersiz kullanıcı adı veya şifre.
3Erişim reddedildi.
4Başlıkta geçersiz karakter.
5Başlık 3–11 karakter olmalı.
6Başlık yasaklı.
7Başlık sistemde yok.
8Başlık onay bekliyor.
10 · 11Alıcı bulunamadı / geçerli alıcı yok.
12Mesaj metni boş.
14Kredi yetersiz.
15Teslim süresi geçersiz.
16 · 99Sistem/bilinmeyen hata, tekrar deneyin.

Bir uç beklediğiniz gibi çalışmıyorsa ya da yeni bir entegrasyon gerekiyorsa bize yazın.