Custom (Özel API) Entegrasyonu

Bu yazının tahmini okunma süresi 8 dakikadır.

Netsantral Custom entegrasyonu; santralinizi farklı veri gönderme metodları ile web servislerinizle haberleştiren, gelen yanıtlara göre santralinizi yönlendiren ve TTS sesli yanıt robotu ile arayanlara istediğiniz metni okutabileceğiniz özel bir API projesidir.

Ne işe yarar?

Custom entegrasyonu ile santral, uzak sunucudaki bir web servisle güvenli bir şekilde haberleştirebilir, gelen yanıtlara göre santral akışı değiştirilebilir. Çağrı bilgileri ve tuş bilgisi ile statik ve dinamik değişkenleri önceden belirtilen URL adresine istenilen veri gönderim metodu* ile gönderilir. Servisten dönen cevaba göre TTS robotu ile gönderilen metin okunur veya yine servisten dönecek bir numaraya yönlendirme yapılabilir. Bütün bunlar için özel oluşturulmuş bir yazılım dili öğrenilmesi gerekmeden, Netsantral tarafında sadece bir kaç ayar yapılarak entegrasyon kurma işlemi yapılabilir. Custom entegrasyonu ile yapılabilecekleriniz ihtiyaçlarınıza göre şekillenebilir. 

Web servisine güvenli şekilde çağrı bilgilerini göndermek için statik anahtar ekleyebilirsiniz.

* HTTP GET – HTTP POST – JSON POST – XML POST

Neler yapılabilir?

  • Kullandığınız CRM yazılımı veya E-ticaret sistemi ile iletişime geçip müşteriyi tanıma, sipariş durumu sorgulama, siparişi onaylama, çağrı bildirimi bırakma vs. gibi işlemler yaptırabilirsiniz.
  • Arayan müşteriyi tanıyıp varsa borcunu okutabilirsiniz.
  • Santralinizi sahadaki personelinize dinamik yönlendirebilir, sürekli olarak nöbetçi veya görevli personellerinizi Netsantral üzerinden tanımlamak zorunda kalmazsınız. Kendi veritabanınızdaki listelerinize göre dinamik yönlendirme yapabilirsiniz.
  • Dinamik bir metni arayan kişilere hem okutabilir hem SMS olarak gönderebilirsiniz.
  • Santralinize müşteri tanıma,arıza kaydı alma,fatura bilgisi okuma vb. Özellikleri kazandırabilirsiniz.

 Nasıl Çalışır ?

Netsantral tarafında Custom entegrasyonu aktif ettikten sonra yeni bir fonksiyon eklemek ve bu fonksiyondan modül oluşturmak yeterlidir.

Fonksiyon Oluşturma :

Entegrasyonlar > Entegrasyon Ekle > Pasif Entegrasyonlar > Özel API (Custom) > Aktif Et

Entegrasyonlar > Özel API Oluştur

  • Fonksiyon ismi : Fonksiyona bir isim verilmelidir.
  • Fonksiyon URL : Web servisinizin olduğu URL adresidir. Örn : http://abc123.com/netgsm/musteri_tani.php
  • Fonksiyon Metod : Çağrı bilgisi ver özel değişkenlerin gönderileceği veri gönderim metodu.
    • Kullanılabilir Metodlar :
      • HTTP POST
      • HTTP GET
      • JSON POST
      • XML POST
  • Tekrarlama Sayısı : Fonksiyonun tuşlama olmadığında kaç kere tekrarlanacağı (varsayılan:3)
  • Tuşlama Seçenekleri : Arayandan abone numarası, sipariş no vs. gibi bir numara istenecekse açılmalıdır.
    • Ne Tuşlanacak? : Tuşlanması istenecek veri girilir. Daha sonra hatırlayabilmek için önemlidir.
    • Max. Tuş sayısı : Arayandan istenecek tuş bilgisinin max. sayısı. Örneğin TC Kimlik no 11 hanelidir. Ve 11 haneden fazla tuşlama yapılması istenmez.
    • Tuş Süresi : Giriş anonsundan sonra ve her tuş arasında geçerli olan bekleme süresi. Örneğin bu alana 5 girilirse 12345 numaralı sipariş numarası tuşlanması için her rakamdan yani tuşdan sonra 5 saniye yeni bir tuşlama yapılması beklenir. Yapılmaz ise Fonksiyon tekrarlanır. Buda yukarıdaki tekrarlama sayısına göre yapılacaktır.
  • Arama Değişkenleri : Aramaya ait değişkenlerdir. Standart olarak verilen URL adresine gönderilir.
    • arayan_no : Arayan numaraya ait numara bilgisidir. 05xx.. formatında gönderilir. (str)
    • santral_no : Santralin kurulu olduğu numaradır. 850xx.. formatında gönderilir.(str)
    • aranan_no : Aranan numaraya ait bilgidir. Gelen hattınızın numarasıdır. 850xx.. formatında gönderilir.(str)
    • arama_id : Aramaya ait benzersiz id numarasıdır. Ses kaydı bulmak için veya görüşme raporu ile eşleştirmek vb. için kullanılabilir.(str)
    • tus_bilgisi : Fonksiyonda tuşlama yapılması istenmişse tuşlanan rakamın bilgisidir. Eğer tuşlama istenmemişse -1 olarak gönderilir.(int)
  • Sabit Değişkenler : Fonksiyona ait statik yani sabit değişkenlerdir. Web servisinizin güvenliği için belirleyeceğiniz bir token bilgisi veya user password bilgisi gibi bilgileri göndermek için uygundur. Değeri fonksiyonu oluştururken verilir.
  • Modül Değişkeni : Modüllere ait dinamik değişkenlerdir. Fonksiyondan oluşturulan her modül için ayrı bir değer verilebilir. Örneğin personel sorgulamak isteniyor (aynı web servis olduğu varsayılırsa). Hem yazılım hem muhasebe departmanı için ayrı fonksiyon oluşturmaya gerek kalmadan modül değişkeni eklenerek modüller oluşturulabilir. Değeri modülü ayarlarken verilir.
  • Sonuç Durumları : Santralin akışını belirleyecek kısım burasıdır. Standart olarak her fonksiyon hata ve zaman aşımına düşebilir. Yani bu durumlar standart olarak eklidir. Müşteri bulundu – müşteri bulunamadı gibi durumlar eklenerek oluşan bu durumlara göre santral yönlendirilebilir.
    • Örnek vermek gerekirse, Müşteri sorgulama işlemi yapılacak ;
      • Durum Kodu Durum Adı Açıklama
        • 1 Müşteri bulundu Müşteri bulunması durumu
        • 2 Müşteri bulunamadı Müşterinin bulunamaması durumu
      • Web servisinden result alanı 1 yani Müşteri bulunduğunda müşteri işlemleri IVR ına, result alanı 2 yani müşteri bulunamadığında ise gelen işlemler IVR ına yönlendirilebilir. Santral akışı dinamik olarak yönlendirilebilir.
    • Bunlardan ayrı olarak eğer result alanı “dynamic” gönderilir ve redirect alanında bir telefon numarası dönülürse, data alanı okunduktan sonra ilgili numaraya yönlendirme yapılabilir.
  • Bilgi : Fonksiyon hakkında kısa bilgi yazılır.

Tüm bu bilgiler girilirken ve girildikten sonra ekranın sağ tarafında gönderilecek metod, metoda uygun gönderilecek veri seti ve url canlı olarak görülebilir.

Fonksiyonu kaydetmeden önce “Test et” butonuna ile test ekranı açılıp, arama simüle edilerek web servisin çalışabilirliliği kontrol ve test edilebilir.

Fonksiyon kaydedilir. Fonksiyon listesinde bu fonksiyondan yeni modül oluşturulur.

Beklenen Cevap

Web servisten JSON olarak bir veri dönmesi beklenir. Bu veri genel olarak :

{ 	"status": "success", 	"result": "1", 	"data": "okunacak metin" }

şeklinde olmalıdır.

Status : Status alanı “success” gönderildiği zaman data alanı okunabilir duruma gelir.

Result : Result alanı fonksiyonun sonuç durumlarında eklediğiniz durum kodlarından biri olmak zorundadır. Farklı olarak eğer “dynamic” gönderilir ve redirect alanı ile bir telefon numarası gönderilirse numaya yönlendirme yapılır.

Data : Data alanın da gönderilen metin, TTS robotu ile okunur ve SMS gönderilebilir. Okuma ve SMS için status alanında “success” gelmelidir.

Numaraya Yönlendirme için beklenen cevap :

Web servisden aşağıdaki cevaba benzer bir veri döndüğünde, data alanı kullanıcıya okunduktan sonra redirect alanındaki telefona yönlendirme yapılır.

{ 	"status": "success", 	"result": "dynamic", 	"data": "Ahmet kişisi aranıyor", 	"redirect": "05xxXXXxxXX" }

Örnek Senaryo :  

Müşteri Tanıma Senaryosu

Veri tabanınızda müşterileriniz ve onlara ait telefon numaraları var. Santralinizi arayanlar kayıtlı müşterileriniz ise onlara isimleriyle hitap edip, özel olarak oluşturulmuş IVR sistemine aktarmak istiyorsunuz. Custom entegrasyon ile çok kolay bir şekilde yapabilirsiniz.

Fonksiyon Ayarları :

Fonksiyon İsmiMüşteri Tanıma
Fonksiyon Urlhttp://abc123.com/musteritani.php
Fonksiyon MetodHTTP POST
Tekrarlama Sayısı3
Tuşlama İsteniyor muHayır
Arama DeğişkenleriVarsayılan alanlar
Sabit DeğişkenlerToken : 123456
Modül DeğişkenleriYok
Sonuç Durumları1 – Müşteri bulundu – Müşteri bulunduğunda çalışır2 – Müşteri bulunamadı – Müşteri bulunamadığında çalışır
BilgiAbc123.com sitesindeki kayıtlı müşterileri tanır

Örneğin (PHP) :

<?php
if(isset($_POST['token'])) {
    $token = $_POST['token'];
    $phone = $_POST['arayan_no'];
    if($token == '123456' ){
        try {
            $db = new PDO("mysql:host=localhost;dbname=musteriler", "root", "");
        } catch ( PDOException $e ){
            print $e->getMessage();
        }
        $query = $db->prepare("SELECT * FROM musteriler where telefon like ?");
        $query->execute(array('%'.ltrim($phone, '0').'%'));
        $member = $query->fetch();
        if($member != null ){
            $response = ['status'=>'success', 'result'=>'1', 'data'=>'Merhaba '.$member['ad']. ' '. $member['soyad'] ];
        } else {
            $response = ['status'=>'success', 'result'=>'2', 'data'=>'Müşteri bulunamadı'];
        }
    } else {
        $response = ['status'=>'error', 'result'=>'e', 'data'=>'Sorgulamaya yetkiniz yok.'];
    }
} else {
    $response = ['status'=>'error', 'result'=>'e', 'data'=>'Sorgulamaya yetkiniz yok.'];
}
echo json_encode($response,256);

Görüldüğü gibi burada müşteri bulunması durumunda, ismiyle hitap edip daha sonra Müsteri IVR’ına, bulunamaması durumda ise Genel bir IVR a yönlendirme yapılabilir.

Makaleyi yararlı buldunuz mu?