VirtualATS-ə sorğular
Dövr üzrə zəng siyahısının tələb edilməsi
URL |
https://web.vats.az/vats/api/callRecord/history
|
Metod
|
GET
|
Parametrlər
|
from (mütləq deyil) – "ddMMyyyyHHmmssZ" formatında intervalın başlanğıc tarixi to (mütləq deyil) - "ddMMyyyyHHmmssZ" formatında intervalın bitmə tarixi offset (mütləq deyil, qeyd edilmədikdə nəticə = 0) – təqdim edilməyəcək nəticədə sayı limit (mütləq deyil, qeyd edilmədikdə nəticə = 50) – maksimal nəticə sayı. 1000-dən çox ola bilməz. order (mütləq deyil,qeyd edilmədikdə = asc) – nəticələrin çeşidlənməsi direction (mütləq deyil) – zəng istiqaməti disposition (mütləq deyil) – zəng statusu
|
Neticə
|
Obyektlərin massiv görünüşü: { “callDate”: "1.01.2019 10:05:36+0300", “callerId”: "Azerizone <994124886606>", “callId”: "3489655c982f4e46b9c9ca975b031781", “source”: "994123102255", “destination”: "994123102266", “answeredNumber”: "100", “duration”: "75", “talkTime”: "50", “direction”: "INBOUND", “disposition”: "ANSWERED", “recordConversation”: "https://web.vats.az/vats/api/storageFile/download/12345" } izahı: ● callDate – "d.MM.yyyy HH:mm:ssZ" formatında zəngin tarixi və vaxtı ● callerId - zəng edənin Caller ID-si ● callId – zəngin ID-si, zəngin unikal identifikasiya kodu ● source – zəng edən nömrə ● destination – zəng daxil olan nömrə ● answeredNumber – zəngə cavab verən daxili nömrə ● duration – saniyələrlə zəng müddəti ● talkTime – saniyələrlə danışıq müddəti ● direction – zəngin istiqaməti ○ Gələn zənglər = INBOUND ○ çıxan zənglər = OUTBOUND ● disposition – zəng statusları ○ zəng edilir = RING ○ cavablandırılmış zəng= ANSWERED ○ zəngə cavab verilmədi = NO_ANSWERED ○ xəta baş verdi = FAILED ○ məşğul = BUSY ● recordConversation – danışıq səs faylını yükləmək üçün URL
Nəticə siyahısı cavabdakı icazə başlıqındakı imzanı hesablamaq üçün istifadə olunur.
|
Misal
|
2019-cu ilin yanvar ayı üçün məlumatların əldə edilməsi (tarixə görə ən kiçikdən böyüyə qədər sıralanan ilk 100 qeyd) https://web.vats.az/vats/api/callRecord/history?from=01012019000000%2B0300&to=31012019235 959%2B0300&offset=0&limit=100&order=asc
2019-cu ilin 10 Fevral - 15 Mart tarixləri üçün məlumatların əldə edilməsi (ilk 100 qeydi buraxmaqla 200 yazı və tarixə görə əvvəldən axıradək sıralanmışdır): https://web.vats.az/vats/api/callRecord/history?from=10022019000000%2B0300&to=15032019235 959%2B0300&offset=100&limit=200&order=desc
|
Daxili nomrələri və onların statusunu tələb etmək:
URL |
https://web.vats.az/vats/api/account/list
|
Metod
|
GET
|
Nəticə
|
Obyektlərin massiv görünüşü: { “number”: "100”, “callerId”: "Mamed <100>”, “status”: "ONLINE” } İzahı: ● number – daxili nömrə ● callerId – istifadəçi nömrəsinin Caller ID-si ● status – istifadəçinin daxili nömrənin statusu: ○ aktiv = ONLINE ○ aktiv deyil = OFFLINE ○ qoşulmayıb = DISCONNECTED ○ izlənilmir= UNMONITORED
|
Misal
|
https://web.vats.az/vats/api/account/list
Nəticə: [ { “number”: "100”, “callerId”: "Mamed <100>”, “status”: "ONLINE” }, { “number”: "101”, “callerId”: "Əli <101>”, “status”: "OFFLINE” } ]
|
Qeydə alınmış danışıqların səs fayllarının əldə edilməsi
URL |
https://web.vats.az/vats/api/storageFile/download/{id və yaxud https://web.vats.az/vats/api/storageFile/download/{id}?vats-authentication={authentication } URL, zəng tarixçəsi və ya zəng bildiriş obyektindəki recordConversation sahəsi tərəfindən təyin edilir. İcazə parametri başlıqda və ya tələb parametrində ötürülə bilər. Birincisi başlıq yoxlanılır və əgər olmadıqda sorğu parametri yoxlanılır.
|
Metod
|
GET
|
Parametrlər
|
{id} – Danışıq səsləri üçün İD fayl Bu parametr, sorğuda icazə başlığındakı imzanı hesablamaq üçün istifadə olunur. {authentication} - строка авторизации
|
Nəticə
|
Audio fayllar yığımı
|
Misal
|
https://web.vats.az/vats/api/storageFile/download/12345 https://web.vats.az/vats/api/storageFile/download/12345?vats-authentication=1234567%3A348965 5c982f4e46b9c9ca975b031781
|
VirtualATS komandaları
Asinxron rejimdə zəng etmək.
Bu sorğu zəng sorğusunu yaratdıqdan dərhal sonra zəngin İD-sini yaradaraq geri qaytarır.
URL |
https://web.vats.az/vats/api/call/originate
|
Metod
|
GET
|
Parametrler
|
to – zəngin ediləcəyi nömrə number – zəng edən daxili nömrə defaultNumber – number parametrində yanlış göstərildiyi təqdirdə istifadə olunan daxili nömrə
|
Nəticə
|
Obyektin görünüşü: { “value”: “3489655c982f4e46b9c9ca975b031781” } harda: ● value - zəngin ID-si
|
Misal
|
https://web.vats.az/vats/api/call/originate?to=0124886606&number=102&defaultNumber=100
|
Sinxron rejimdə gedən zənglər
Bu sorğu zəng etdikdən sonra zəng nömrəsini qaytarır.
URL |
https://web.vats.az/vats/api/call/create
|
Metod
|
GET
|
Parametrlər
|
to – zəngin ediləcəyi nömrə number – zəng üçün daxili nömrə defaultNumber - parametr nömrəsi yalnış göstərildiyi təqdirdə istifadə olunan daxili nömrə
|
Nəticə
|
Obyektin görünüşü: { “value”: “3489655c982f4e46b9c9ca975b031781” } harada: ● value - ID zəng
|
Misal
|
https://web.vats.az/vats/api/call/create?to=994557967473&number=102&defaultNumber=100
|
Zəngi bitirmək
URL |
https://web.vats.az/vats/api/call/hangup/{callId}
|
Metod
|
GET
|
Parametrlər
|
{callId} – zəngin ID-si Bu parametr, sorğuda icazə başlığındakı imzanı hesablamaq üçün istifadə olunur.
|
Misal
|
https://web.vats.az/vats/api/call/hangup/3489655c982f4e46b9c9ca975b031781
|
VirtualATS hadisələri
Zənglərin CRM sistemə inteqrasiyası
URL |
CRM tərəfindən göstərilmiş URL
|
Metod
|
POST
|
Parametrlər
|
Obyekt { “apiKey”: “1234567890abcdef” “callDate”: "1.01.2019 10:05:36+0300", “callerId”: "Hüseyn <994557967473>", “callId”: "3489655c982f4e46b9c9ca975b031781", “source”: "994557967473", “destination”: "994124886606", “answeredNumber”: "100", “duration”: "75", “talkTime”: "50", “direction”: "INBOUND", “disposition”: "ANSWERED", “recordConversation”: " https://web.vats.az/vats/api/storageFile/download/12345 ", “state”: “HANGUP” } harada: ● apiKey – CRM systemin API açarı ● callDate - "d.MM.yyyy HH:mm:ssZ" formatında zəngin tarixi və vaxtı ● callerId - zəng edənin Caller ID-si ● callId – zəngin ID-si, zəngin unikal identifikatoru ● source – zəng edən nömrə ● destination – zəng daxil olan nömrə ● answeredNumber – zəngə cavab verən daxili nömrə ● duration – saniyələrlə zəng müddəti ● talkTime – saniyələrlə danışıq müddəti ● direction – zəngin istiqaməti, məğzi: ○ gələn zəng= INBOUND ○ çıxan zəng = OUTBOUND ● disposition - zəngin statusu, yani: ○ zəng daxil olur= RING ○ qəbul edilən zəng= ANSWERED ○ cavabsız zəng = NO_ANSWERED ○ xəta = FAILED ○ məşğul = BUSY ● recordConversation – danışıqların səs fayllarını yükləmək üçün URL ● state – zəng statusu ○ NEW – yeni zəng ○ UPDATE – qoşulma, zəngin statusunu yeniləmə ○ HANGUP – zəngi bitirmək
|
Nəticə
|
Obyekt görünüşü { “result”: “” “errors”: [] } harada:
● result -CRM sistemi ilə verilənlərin nəticəsi, məğzi: ○ success - uğurlu ○ error - yanlış ● errors – səhvin izahı ilə sətrlər massivi
|
Aşağıdaki hadisələr zamanı məlumat CRM sisteminə ötürülür:
● Zəng başladıqda
● Zəng qəbul edildikdə
● Zəng bitdikdə
Avtorizasiya
Təsvir
Avtorizasiya sorğuya bir başlıq əlavə etməklə həyata keçirilir: vats-authentication. Bu başlıq üç hissədən ibarətdir:
publicKey:token:sign
Harda:
- publicKey - VirtualATS-in açıq açarıdır;
- token – Unix vaxtı (1970-ci il yanvarın 1-dən etibarən millisekundların sayını təmsil edən sətirdir);
- sign - məlumat imzası;
Alqoritm
İmzanın hesablanması üçün istifadə olunan funksiyalar: HmacUtils.hmacSha1Hex(secretKey, body) (HmacSHA1 MAC for the given key and value as hex string)
Java kitabxanası: https://commons.apache.org/proper/commons-codec/
Harda:
- secretKey – müştərinin VirtualATS-də məxfi açarı
- body – bu token+sorğu/cavabdan ibarətdir