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
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:
3. Settings.ini dosyasını düzenleme
-
Aşağıdaki komutu çalıştırarak "Settings.ini" dosyasını açın.
Shellnano /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.iniLICENSE_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ı.
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.
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.
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.
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.
Shellsystemctl enable webapi
- Daemon arka plan servisini başlatmak için aşağıdaki komutu kullanabilirsiniz.
Shellsystemctl start webapi
8. nginx.conf dosyasını düzenleme
Bu değişiklik 3CX her güncellendiğinde yapılmalıdır.
- Aşağıdaki komutlar ile nginx.conf dosyasını açabilirsiniz.
Shellnano /etc/nginx/sites-enabled/3cxpbx
Ya da
Shellnano /var/lib/3cxpbx/Bin/nginx/conf/nginx.conf - Açılan nginx.conf dosyasında bu alanı bulun.
nginx.confclient_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:
Shellnano /etc/apt/sources.list -
Sonrasında dosyayı düzenleyin:
sources.listdeb [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 ;
Shellapt update -
Lame yüklemek için;
Shellapt install lame -
WebAPI'yi yeniden başlatmak için aşağıdaki komutu kullanabilirsiniz.
Shellsystemctl restart webapi -
Daemon arka plan servisinin durumunu test etmek için aşağıdaki komutu kullanabilirsiniz.
Shellsystemctl status 'webapi' -
Hata ayıklama günlüğü için bu komutu kullanabilirsiniz.
Shelljournalctl -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.