1. Dosyaları Sisteminize Yükleyin


  • Debian için gerekli dosyaları buradan indirebilirsiniz.
  • Dosya yolu aşağıdaki gibi olacak şekilde webapi adında bir klasör oluşturun.

/var/www/webapi/

  • Zip arşivinden çıkan tüm dosyaları  başta oluşturduğunuz webapi klasorüne kopyalayın.
  • Ardından bu komutu çalıştırın: chmod +x /var/www/webapi/WebhooksApi
  • MP3 dosyaları için dosya yolu aşağıdaki gibi olacak şekilde "mp3" adında bir klasör oluşturun:

/var/www/webapi/mp3

Önemli:

MP3 klasörüne yazma izni vermeniz gerekiyor.

 

2. Düzenleme için Nano Kurma


Nano'yu kurmak için aşağıdaki komutu kullanabilirsiniz:

Shell
apt install nano

 

3. Settings.ini dosyasını düzenleme


  • Aşağıdaki komutu çalıştırarak "Settings.ini" dosyasını açın.

    Shell
    nano /var/www/webapi/Settings.ini

     

  • Aşağıdaki "LICENSE_KEY" parametresinin değerini size verilen lisans anahtarıyla değiştirin ve  Crtl+X sonrasında Y ve Enter tuşlarına basarak dosyayı kaydedin.

    Settings.ini
    LICENSE_KEY=AAAA-AAAA-AAAA-AAAA
  • Eğer WebHook kullanmak isterseniz bu dosyanın içerisinde WebHook alanının altında bulunan "WEBHOOK_POST_ENABLED" ayarını "true" yapmalısınız. Hemen aşağısında "WEBHOOK_URL" alanı bulunmakta. Bu alana PBX'inizden gelen verileri hangi URL adresine göndermek istiyorsanız o adresi buraya yazmalısınız. İşlem sonunda dosya içerisindeki WebHooks alanı aşağıdaki gibi olmalı.

Settings.ini
WEBHOOK_POST_ENABLED = true
WEBHOOK_URL = https://verilerin-gönderileceği-endpoint

 

4. AccessKeys.csv Dosyasını Düzenleme


Artık AccessKeys.csv dosyasını düzenlemeye hazırsınız. Aşağıdaki komut ile nano kullanarak komut satırı üzerinden düzenleme yapabilirsiniz.

Shell
nano /var/www/webapi/AccessKeys.csv

 

Bu dosyanın içerisindeki key alanı API'lere ulaşmak için kullanacağınız erişim anahtarı olacak. Bir erişim anahtarı oluşturun. Bu erişim anahtarı için mail adresi ve isim bilgisini girdikten sonra en son permission alanı gelecek. Bu alanda bu key ile hangi API uçlarına erişmek istediğinizi ayarlayabilirsiniz:

all: Tüm API'lere erişim verir (SET, GET and CallControl).

get: Postman dökümanında adı "GET" ile başlayan API'lere erişim verir.

set: Postman dökümanında adı "SET" ve "GET" ile başlayan API'lere erişim verir.

 

Önemli:

Varsayılan olarak WebAPI kurulumu yapan tüm müşterilerde AccessKeys.csv dosyası içerisinde bir erişim anahtarı bulunur. Bu anahtarı silmenizi ya da değiştirmenizi öneririz.

 

Düzenleme işlemini tamamladıktan sonra kaydedip kapatın.

 

5. .NET SDK 6.0 Kurulumu


Sırasıyla aşağıdaki komutları çalıştırarak SDK kurulumunu gerçekleştirebilirsiniz.

Shell

wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y dotnet-sdk-6.0

 

6. Daemon Oluşturma


  • Daemon oluşturmak için nano editorünü kullanarak "webapi.service" dosyasını oluşturalım.
    Shell

    nano /etc/systemd/system/webapi.service

     

  • Daemon oluşturulduktan sonra bir editöre aşağıdaki satırları koyup Crtl+X sonrasında Y ve Enter tuşlarına basarak dosyayı kaydedin.
    webapi.service
    Description=webapi
    After=nginx.service
    After=3CXAudioProvider01.service
    After=3CXCallFlow01.service
    After=3CXCfgServ01.service
    After=3CXEventNotificationManager.service
    After=3CXIVR01.service
    After=3CXMediaServer.service
    After=3CXPhoneSystem01.service
    After=3CXPhoneSystemMC01.service
    After=3CXQueueManager01.service
    After=3CXSystemService01.service
    After=3CXTunnel01.service
    [Service]
    Environment=DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/tmp
    WorkingDirectory=/var/www/webapi/
    ExecStart=/var/www/webapi/WebhooksApi --urls=http://127.0.0.1:8081
    Restart=always
    RestartSec=10
    SyslogIdentifier=webapi
    
    [Install]
    WantedBy=multi-user.target

     

7. Daemon arka plan servisini aktif etme ve başlatma


  • Daemon arka plan servisini aktif etmek için aşağıdaki komutu kullanabilirsiniz.
    Shell
    systemctl enable webapi
  • Daemon arka plan servisini başlatmak için aşağıdaki komutu kullanabilirsiniz.
    Shell
    systemctl start webapi

 

8. nginx.conf dosyasını düzenleme


Önemli:

Bu değişiklik 3CX her güncellendiğinde yapılmalıdır.

  • Aşağıdaki komutlar ile nginx.conf dosyasını açabilirsiniz.
    Shell
    nano /etc/nginx/sites-enabled/3cxpbx

    Ya da

    Shell
    nano /var/lib/3cxpbx/Bin/nginx/conf/nginx.conf
  • Açılan nginx.conf dosyasında bu alanı bulun.
    nginx.conf
    client_max_body_size 300m;
    root "/var/lib/3cxpbx/Data/Http/wwwroot";
  • Yukarıda bulduğunuz alanın altına aşağıda belirtilen alanı eklemeniz gerekiyor.
    nginx.conf

    location ~ ^/webapi/?(.*) 

    {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8081/webapi/$1$is_args$args;
    proxy_buffering off;
    }

  • nginx servisini yeniden başlatmak için aşağıdaki komutu kullanın:

    systemctl restart nginx

 

9. Wav dosyasını MP3'e dönüştürmek için lame yükleme


3CX, standart depoları kendi kullanacağı şekilde değiştirir. Eğer lame kurulu değilse depo eklemeniz gerekiyor:

  • Aşağıdaki komut ile dosyayı/editörü açabilirsiniz:

    Shell
    nano /etc/apt/sources.list
  • Sonrasında dosyayı düzenleyin:

    sources.list
    deb [arch=amd64 by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/debian/1806 buster main
    
    deb [arch=amd64 by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/debian-security/1806 buster main
    
    deb http://deb.debian.org/debian buster main contrib non-free
    
    deb http://deb.debian.org/debian buster-updates main contrib non-free
    
    deb http://deb.debian.org/debian buster-backports main contrib non-free
    
    deb http://security.debian.org/debian-security/ buster/updates main contrib non-free
  • Dosyayı Crtl+X sonrasında Y ve Enter tuşlarına basarak kaydedin çıkın.

  • Güncellemek için ;

    Shell
    apt update
  • Lame yüklemek için;

    Shell
    apt install lame
  • WebAPI'yi yeniden başlatmak için aşağıdaki komutu kullanabilirsiniz.

    Shell
    systemctl restart webapi
  • Daemon arka plan servisinin durumunu test etmek için aşağıdaki komutu kullanabilirsiniz.

    Shell
    systemctl status 'webapi'
  • Hata ayıklama günlüğü için bu komutu kullanabilirsiniz.

    Shell
    journalctl -fu webapi

 

10. webapi'yi test etmek


Kurulum başarıyla tamamlandıktan sonra 4. adımda oluşturduğunuz erişim anahtarı ile webapi servisini test edebilirsiniz. Bu testleri tarayıcı üzerinden ya da Postman aracılığı ile yapabilirsiniz.

Örnek bir API endpoint'i bu şekildedir: https://{{3CXFQDN}}:{{3CXHTTPSPORT}}/webapi/{{AccessKey}}/pbx.callsinfo

"3CXFQDN" alanına 3CX PBX'inizin FQDN adresini , "AccessKey" alanına 4. adımda oluşturduğunuz erişim anahtarını ve "3CXHTTPSPORT" alanına 3CX PBX'inizin HTTPS portunu girin.

Kurulum esnasında değiştirilmediği sürece 3CX için varsayılan HTTPS portu 5001'dir.

Apı'lerin nasıl kullanıldığına sizin için hazırladığımız Postman dökümanından ulaşabilirsiniz.