Asterisk PBX orqali o'tgan har bir qo'ng'iroq Call Detail Record (CDR) yozuvini hosil qiladi. Bu yozuvlarda juda ko'p ma'lumot bor: kim qo'ng'iroq qilgan, qachon, qancha gaplashgan, qo'ng'iroqqa javob berilganmi. Lekin ko'pchilik Asterisk administratorlarida CDR ma'lumotlari MySQL jadvalida yoki oddiy faylda ishlatilmay yotadi — ko'rinmas va foydasiz holda.
Bu qo'llanma sizning CDR ma'lumotlaringizni xom baza satrlaridan real biznes qarorlarga asos bo'ladigan mazmunli hisobotlarga aylantiradi. Siz CDR qanday ishlashini, undan qanday samarali so'rov olishni va call-markazni boshqarishda haqiqatan yordam beradigan hisobot tizimini qanday qurish (yoki tanlash) kerakligini o'rganasiz.
Asterisk CDR ichida nima bor?
CDR yozuvi Asterisk qayta ishlagan har bir qo'ng'iroq uchun yaratiladi. Har bir yozuv standart maydonlardan iborat:
| Maydon | Tavsif | Misol |
|---|---|---|
accountcode | Qo'ng'iroqqa biriktirilgan hisob kodi | sales-team |
src | Manba (qo'ng'iroq qiluvchi) raqami | +15551234567 |
dst | Manzil (terilgan) raqam | 200 |
dcontext | Manzil konteksti | from-internal |
clid | To'liq Caller ID satri | "John Smith" <+15551234567> |
channel | Boshlang'ich kanal | PJSIP/trunk-0000001a |
dstchannel | Manzil kanali | PJSIP/1001-0000001b |
lastapp | Oxirgi bajarilgan ilova | Dial, Queue, Voicemail |
lastdata | Oxirgi ilovaga uzatilgan ma'lumot | PJSIP/1001,30 |
start | Qo'ng'iroq boshlanish vaqti | 2026-03-18 09:15:22 |
answer | Javob berilgan vaqt | 2026-03-18 09:15:28 |
end | Qo'ng'iroq tugash vaqti | 2026-03-18 09:18:45 |
duration | Qo'ng'iroqning umumiy davomiyligi (soniya) | 203 |
billsec | Hisoblanadigan soniyalar (suhbat vaqti) | 197 |
disposition | Qo'ng'iroq natijasi | ANSWERED, NO ANSWER, BUSY, FAILED |
amaflags | AMA bayroqlari | DOCUMENTATION |
uniqueid | Qo'ng'iroqning unikal identifikatori | 1710752122.456 |
userfield | Maxsus foydalanuvchi maydoni | (sozlamaga bog'liq) |
CDR va CEL: farqni tushunish
CDR har bir qo'ng'iroq uchun bitta yozuv — ya'ni xulosa beradi. Buni chek deb tasavvur qiling.
CEL (Channel Event Logging) qo'ng'iroq davomidagi har bir hodisani yozadi: kanal yaratilishi, chaqiruv signali, javob, ulanish, uzatish, tugatish. Bu esa to'liq tranzaksiya jurnali.
Oddiy hisobot uchun (qo'ng'iroqlar hajmi, davomiyligi, natijasi) CDR yetarli. Murakkab analitika uchun (uzatish zanjirlari, konferensiya ishtirokchilari, navbat bilan o'zaro ishlash) CEL kerak bo'ladi.
| Ehtiyoj | CDR yetarli | CEL kerak |
|---|---|---|
| Kunlik qo'ng'iroqlar soni | ✅ | ✅ |
| O'rtacha qo'ng'iroq davomiyligi | ✅ | ✅ |
| Qo'ng'iroq natijalari bo'yicha taqsimot | ✅ | ✅ |
| Uzatish yo'lini kuzatish | ❌ | ✅ |
| Har bir mijozning navbatdagi kutish vaqti | Cheklangan | ✅ |
| Konferensiya ishtirokchilarini hisobga olish | ❌ | ✅ |
| Operator javob berguncha ketgan chaqiruv vaqti | ❌ | ✅ |
| Aniq billing hisob-kitoblari | ❌ | ✅ |
CDR saqlashni sozlash
1-variant: CSV (standart)
Standart holatda Asterisk CDR'ni /var/log/asterisk/cdr-csv/Master.csv fayliga yozadi. Kichik o'rnatmalar uchun bu yetarli, lekin tezda noqulay bo'lib qoladi.
# Check if CSV CDR is active
asterisk -rx "cdr show status"2-variant: MySQL/MariaDB
CDR hisobotlari uchun eng keng tarqalgan backend. /etc/asterisk/cdr_mysql.conf faylida sozlanadi:
[global]
hostname = localhost
dbname = asteriskcdrdb
table = cdr
password = your_db_password
user = asterisk_cdr
port = 3306CDR jadvalini yarating:
CREATE TABLE cdr (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
calldate DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
clid VARCHAR(80) NOT NULL DEFAULT '',
src VARCHAR(80) NOT NULL DEFAULT '',
dst VARCHAR(80) NOT NULL DEFAULT '',
dcontext VARCHAR(80) NOT NULL DEFAULT '',
channel VARCHAR(80) NOT NULL DEFAULT '',
dstchannel VARCHAR(80) NOT NULL DEFAULT '',
lastapp VARCHAR(80) NOT NULL DEFAULT '',
lastdata VARCHAR(80) NOT NULL DEFAULT '',
duration INT(11) NOT NULL DEFAULT 0,
billsec INT(11) NOT NULL DEFAULT 0,
disposition VARCHAR(45) NOT NULL DEFAULT '',
amaflags INT(11) NOT NULL DEFAULT 0,
accountcode VARCHAR(20) NOT NULL DEFAULT '',
uniqueid VARCHAR(150) NOT NULL DEFAULT '',
userfield VARCHAR(255) NOT NULL DEFAULT '',
INDEX idx_calldate (calldate),
INDEX idx_src (src),
INDEX idx_dst (dst),
INDEX idx_disposition (disposition),
INDEX idx_accountcode (accountcode)
);3-variant: PostgreSQL
Yirikroq o'rnatmalar uchun. /etc/asterisk/cdr_pgsql.conf faylida sozlanadi:
[global]
hostname = localhost
dbname = asteriskcdrdb
table = cdr
password = your_db_password
user = asterisk_cdr
port = 54324-variant: ODBC (universal)
ODBC qo'llab-quvvatlanadigan istalgan ma'lumotlar bazasi bilan ishlaydi. /etc/asterisk/cdr_adaptive_odbc.conf orqali sozlanadi:
[asterisk_cdr]
connection = asterisk
table = cdr
alias start => calldate
alias clid => srcSozlagandan so'ng CDR'ni qayta yuklang:
asterisk -rx "module reload cdr"
asterisk -rx "cdr show status"Eng zarur CDR so'rovlari
CDR ma'lumotlar bazasiga tushgandan keyin, har bir administratorga kerak bo'ladigan so'rovlar quyidagilar:
Kunlik qo'ng'iroqlar hajmi
SELECT
DATE(calldate) AS call_date,
COUNT(*) AS total_calls,
SUM(CASE WHEN disposition = 'ANSWERED' THEN 1 ELSE 0 END) AS answered,
SUM(CASE WHEN disposition = 'NO ANSWER' THEN 1 ELSE 0 END) AS no_answer,
SUM(CASE WHEN disposition = 'BUSY' THEN 1 ELSE 0 END) AS busy,
SUM(CASE WHEN disposition = 'FAILED' THEN 1 ELSE 0 END) AS failed
FROM cdr
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY DATE(calldate)
ORDER BY call_date DESC;Soatlik qo'ng'iroq taqsimoti (heatmap uchun ma'lumot)
SELECT
DAYOFWEEK(calldate) AS day_of_week,
HOUR(calldate) AS hour_of_day,
COUNT(*) AS call_count
FROM cdr
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY DAYOFWEEK(calldate), HOUR(calldate)
ORDER BY day_of_week, hour_of_day;Bu so'rov heatmap uchun ma'lumot beradi — smenalarni rejalashtirishda eng foydali vizualizatsiyalardan biri.
Manzil bo'yicha o'rtacha qo'ng'iroq davomiyligi
SELECT
dst AS extension,
COUNT(*) AS total_calls,
ROUND(AVG(billsec), 1) AS avg_talk_seconds,
ROUND(AVG(duration), 1) AS avg_total_seconds,
ROUND(AVG(duration - billsec), 1) AS avg_ring_seconds,
SUM(CASE WHEN disposition = 'ANSWERED' THEN 1 ELSE 0 END) / COUNT(*) * 100 AS answer_rate_pct
FROM cdr
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
AND disposition IN ('ANSWERED', 'NO ANSWER')
GROUP BY dst
HAVING total_calls >= 5
ORDER BY total_calls DESC
LIMIT 20;Eng faol qo'ng'iroq qiluvchilar (kiruvchi)
SELECT
src AS caller_number,
COUNT(*) AS call_count,
SUM(billsec) AS total_talk_seconds,
ROUND(AVG(billsec), 1) AS avg_talk_seconds,
MIN(calldate) AS first_call,
MAX(calldate) AS last_call
FROM cdr
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
AND src != ''
AND LENGTH(src) > 5 -- Filter internal extensions
GROUP BY src
ORDER BY call_count DESC
LIMIT 25;Javobsiz qo'ng'iroqlar tahlili
SELECT
src AS caller_number,
dst AS called_extension,
calldate,
duration AS ring_seconds,
disposition
FROM cdr
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND disposition != 'ANSWERED'
AND LENGTH(src) > 5
ORDER BY calldate DESC;Trunklardan foydalanish
SELECT
SUBSTRING_INDEX(channel, '-', 1) AS trunk,
COUNT(*) AS total_calls,
SUM(billsec) AS total_seconds,
ROUND(AVG(billsec), 1) AS avg_seconds,
SUM(CASE WHEN disposition = 'ANSWERED' THEN 1 ELSE 0 END) AS answered,
SUM(CASE WHEN disposition = 'FAILED' THEN 1 ELSE 0 END) AS failed
FROM cdr
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY SUBSTRING_INDEX(channel, '-', 1)
ORDER BY total_calls DESC;Bir vaqtdagi qo'ng'iroqlar cho'qqisi (murakkab daraja)
SELECT
DATE(calldate) AS call_date,
HOUR(calldate) AS call_hour,
MAX(concurrent) AS peak_concurrent
FROM (
SELECT
calldate,
(SELECT COUNT(*) FROM cdr c2
WHERE c2.calldate <= c1.calldate
AND ADDTIME(c2.calldate, SEC_TO_TIME(c2.duration)) >= c1.calldate) AS concurrent
FROM cdr c1
WHERE calldate >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
) AS concurrent_data
GROUP BY DATE(calldate), HOUR(calldate)
ORDER BY call_date DESC, call_hour;CDR hisobot vositalarini taqqoslash
Qo'lda yozilgan SQL so'rovlar
Afzalliklari: to'liq nazorat, qo'shimcha dasturiy ta'minot kerak emas Kamchiliklari: SQL bilishni talab qiladi, vizualizatsiya yo'q, avtomatlashtirish yo'q, ko'p vaqt oladi
Asternic CDR Reports
Asterisk uchun PHP'da yozilgan CDR ko'ruvchi.
Afzalliklari: CDR jadvali bilan bevosita ishlaydi, oddiy grafiklar bor Kamchiliklari: eski PHP kodi, cheklangan sozlash imkoniyati, real vaqt rejimi yo'q, eskirgan interfeys
CDR-Stats (tashlab qo'yilgan)
Django asosidagi CDR analitika platformasi.
Afzalliklari: bir paytlar firibgarlikni aniqlash bilan birga ancha to'liq yechim edi Kamchiliklari: loyiha tashlab qo'yilgan. Oxirgi jiddiy yangilanishlar yillar oldin bo'lgan. Python 2 davri. Yangi o'rnatmani bundan boshlamang.
Navbatlarda nima sodir bo'layotganini taxmin qilishdan charchadingizmi?
Astervis sizning Asterisk PBX'ingiz uchun 30+ realtime grafik, operator KPI va CRM-integratsiya beradi. On-premise. 5 daqiqada o'rnatiladi. $119/oydan flat — operatorlar soni cheklanmagan.
Grafana + SQL Datasource
Grafana'ni to'g'ridan-to'g'ri CDR ma'lumotlar bazangizga ulang.
Afzalliklari: kuchli vizualizatsiya, bepul, juda moslashuvchan Kamchiliklari: har bir so'rovni o'zingiz yozasiz. Navbatlarga moslashtirilgan mantiq yo'q. Yaxshi dashboard to'plamini yig'ish uchun 20-40 soat kerak. Ustiga doimiy texnik xizmat.
Astervis
Xom CDR hisobotlaridan ancha ilgarilab ketgan, maxsus yaratilgan analitika platformasi.
Afzalliklari:
- —CDR'ni avtomatik yig'ish: ma'lumotlar bazasini qo'lda sozlash shart emas. Astervis CDR ma'lumotlarini AMI va o'zining yig'ish quvuri orqali o'qiydi.
- —30+ tayyor grafik: heatmap'lar, trend chiziqlari, taqqoslash ko'rinishlari — hammasi qutidan chiqishi bilan ishlaydi
- —Navbat va CDR birgalikda: sof CDR vositalaridan farqli o'laroq, Astervis CDR ma'lumotlarini navbat hodisalari bilan bog'laydi va qo'ng'iroqning butun hayot siklini ko'rsatadi
- —Operatorlar samaradorligi: CDR va navbat ma'lumotlari asosida har bir operator uchun alohida KPI'lar
- —Bitta buyruq bilan o'rnatish: PHP ham, Java ham, o'zi yozgan SQL ham kerak emas
Kamchiliklari: 14 kunlik sinov muddatidan keyin pullik (oyiga $119 dan boshlab)
Oddiy CDR'dan nariga: ilg'or analitika
Xom CDR ma'lumotlari "nima bo'ldi" degan savolga javob beradi. Ilg'or analitika esa "nega bo'ldi" va "endi nima qilish kerak" degan savollarga javob beradi.
Qo'ng'iroq natijasini tasniflash
CDR'dagi disposition maydoni sizga ANSWERED yoki NO ANSWER deb aytadi, biznes natijasini emas. Javob berilgan qo'ng'iroq sotuvga olib keldimi? Muammo hal bo'ldimi? Qayta qo'ng'iroq so'roviga aylandimi?
Ilg'or platformalar CDR'ni quyidagilar bilan birlashtiradi:
- —Navbat ma'lumotlari: kutish vaqti, navbat nomi, qo'ng'iroqni qabul qilgan operator
- —CRM ma'lumotlari: mijoz kartochkasi, tiket holati, bitim bosqichi
- —Suhbat yozuvlari: aslida nima muhokama qilingani
Aynan shu bog'lanishda CDR jurnal bo'lishdan to'xtab, bilim manbaiga aylanadi.
Trendlarni aniqlash
Bir kunlik CDR hisobotlari — shovqin. Foydali xulosalar trendlardan chiqadi:
- —O'rtacha ishlov berish vaqti haftadan haftaga o'sib boryaptimi? (o'qitish muammosi)
- —Muvaffaqiyatsiz qo'ng'iroqlar aniq trunklarda to'planyaptimi? (provayder muammosi)
- —Qo'ng'iroqlar hajmi boshqa soatlarga siljiyaptimi? (bozordagi o'zgarish)
- —Ayrim ichki raqamlarda voz kechishlar keskin oshyaptimi? (xodimlar yetishmovchiligi)
Bashoratli smena rejalashtirish
Tarixiy CDR ma'lumotlari navbat analitikasi bilan birga bashoratli xodimlar rejalashtirish modellarini qurish imkonini beradi:
- —Qo'ng'iroqlar hajmi qonuniyatlarini soat, kun, hafta va oy kesimida tahlil qiling
- —Mavsumiylik va oldindan ma'lum tadbirlarni hisobga oling
- —SLA maqsadlaridan kelib chiqib, har bir vaqt oralig'iga kerakli operatorlar sonini hisoblang
- —Smena jadvallarini avtomatik shakllantiring
Bu CDR analitikasining eng oliy maqsadi — tarixiy ma'lumotni oldindan ishlaydigan operatsion qarorlarga aylantirish.
Astervis bilan CDR hisobotlarini sozlash
Agar o'zingiz SQL so'rov yozishni chetlab o'tib, bir necha daqiqada ishga tayyor CDR hisobotini olmoqchi bo'lsangiz:
1-qadam: Astervis'ni o'rnating
curl -fsSL https://api.astervis.io/api/releases/install.sh | bashAstervis AMI orqali Asterisk serveringizga avtomatik ulanadi va qo'ng'iroq ma'lumotlarini — CDR, navbat hodisalari va kanal hodisalarini — o'zining TimescaleDB backendiga yig'a boshlaydi.
2-qadam: Tayyor hisobotlarni ko'rib chiqing
Dashboardni http://your-server:3000 manzilida oching. CDR asosidagi hisobotlar darhol mavjud:
- —Qo'ng'iroqlar hajmi trendlari: kunlik, haftalik, oylik — taqqoslash qatlamlari bilan
- —Heatmap: qo'ng'iroqlarning soat va hafta kuni bo'yicha taqsimoti
- —Natijalar bo'yicha taqsimot: javob berilgan, o'tkazib yuborilgan, band, muvaffaqiyatsiz — trendlar bilan
- —Operatorlar samaradorligi: qabul qilingan qo'ng'iroqlar, o'rtacha davomiylik, mavjudlik
- —Trunk analitikasi: har bir trunk yuklamasi, uzilishlar ulushi, bir vaqtdagi qo'ng'iroqlar
- —Eng faol raqamlar va yo'nalishlar: eng katta hajmli raqamlar va ular bo'yicha batafsil ko'rish
3-qadam: CRM bilan integratsiya qiling
Mijoz kontekstini CDR ma'lumotlari yonida ko'rish uchun Bitrix24 yoki AmoCRM'ni ulang. Qo'ng'iroq yozuvini ochganingizda mijoz tarixi, ochiq bitimlar va qo'llab-quvvatlash murojaatlari — hammasi bitta oynada ko'rinadi.
CDR ma'lumotlarini saqlashning eng yaxshi amaliyotlari
CDR ma'lumotlarini qancha saqlash kerak
| Foydalanish holati | Saqlash muddati | Sababi |
|---|---|---|
| Operatsion hisobot | 90 kun | Smena rejalashtirish uchun yaqin davr qonuniyatlari |
| Talablarga muvofiqlik (GDPR) | Talabga ko'ra | Yurisdiksiyaga bog'liq |
| Billing bo'yicha nizolar | 12 oy | Standart e'tiroz bildirish muddati |
| Trend tahlili | 24 oy | Mavsumiy qonuniyatlarni aniqlash |
| Tartibga solish talablari (telekom) | 1-7 yil | Yurisdiksiyaga bog'liq |
Unumdorlikni optimallashtirish
MySQL/MariaDB'dagi CDR jadvallari uchun:
-- Partition by month for faster queries
ALTER TABLE cdr PARTITION BY RANGE (TO_DAYS(calldate)) (
PARTITION p202601 VALUES LESS THAN (TO_DAYS('2026-02-01')),
PARTITION p202602 VALUES LESS THAN (TO_DAYS('2026-03-01')),
PARTITION p202603 VALUES LESS THAN (TO_DAYS('2026-04-01')),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
-- Archive old data
CREATE TABLE cdr_archive LIKE cdr;
INSERT INTO cdr_archive SELECT * FROM cdr WHERE calldate < DATE_SUB(CURDATE(), INTERVAL 1 YEAR);
DELETE FROM cdr WHERE calldate < DATE_SUB(CURDATE(), INTERVAL 1 YEAR);Yuqori yuklamali o'rnatmalar uchun (kuniga 10 000 dan ortiq qo'ng'iroq) TimescaleDB'ni ko'rib chiqing — bu vaqt qatorlari uchun maxsus yaratilgan PostgreSQL kengaytmasi. Astervis ichida aynan shundan foydalanadi va katta hajmlarda u CDR so'rovlarini oddiy MySQL'dan bir necha barobar tezroq bajaradi.
CDR bilan ishlashdagi tipik xatolar
1. Yo'qolgan yozuvlar
CDR yozuvlarini tarmoq emas, Asterisk hosil qiladi. Agar Asterisk suhbat o'rtasida ishdan chiqsa, o'sha CDR to'liq bo'lmasligi yoki umuman bo'lmasligi mumkin. CDR yozuvlari sonini kutilayotgan qo'ng'iroqlar hajmi bilan doim solishtirib turing.
2. duration va billsec chalkashligi
- —
duration= qo'ng'iroq boshlanishidan tugashigacha bo'lgan umumiy vaqt (chaqiruv signali ham kiradi) - —
billsec= javobdan tugatishgacha bo'lgan vaqt (faqat suhbat)
Operator samaradorligi metrikalari uchun duration ishlatilsa, raqamlar sun'iy ravishda oshib ketadi. Suhbat vaqtini hisoblashda doim billsec dan foydalaning.
3. Uzatilgan qo'ng'iroqlarning ikki marta hisoblanishi
Ko'r uzatishlar (blind transfer) bitta mijoz murojaati uchun bir nechta CDR yozuvi hosil qiladi. Ikki marta uzatilgan qo'ng'iroq 3 ta CDR yozuvini beradi. Hisobotingiz buni linkedid (Asterisk 12+) yoki dastlabki uniqueid bo'yicha guruhlash orqali hisobga olishi kerak.
4. Vaqt mintaqalari mos kelmasligi
Agar Asterisk serveringiz UTC'da ishlasa, jamoangiz esa EST'da ishlasa, CDR vaqt belgilari "ish vaqti"dan 5 soatga farq qiladi. Yoki Asterisk'da vaqt mintaqasini sozlang, yoki o'girishni hisobot qatlamida bajaring.
5. Navbatdan kelgan qo'ng'iroqlarda kontekst yo'q
Navbatdan kelgan qo'ng'iroq CDR'i uni oxirida qabul qilgan operatorni ko'rsatadi, lekin quyidagilarni ko'rsatmaydi:
- —mijoz navbatda qancha kutgani
- —undan oldin nechta operatorga taklif qilingani (RINGNOANSWER hodisalari)
- —mijoz kutishdan voz kechib, keyin qayta qo'ng'iroq qilganmi
Aynan shuning uchun call-markaz analitikasi uchun yolg'iz CDR yetarli emas. CDR bilan birga queue_log yoki AMI hodisalari ma'lumotlari kerak bo'ladi.
Xulosa
CDR ma'lumotlari Asterisk hisobotlarining poydevori, lekin xom CDR yozuvlari faqat boshlanish nuqtasi. "Bazadagi ma'lumot" bilan "amaliy xulosalar" o'rtasidagi tafovut — aynan shu joyda ko'pchilik jamoalar tiqilib qoladi: call-markaz ishini yaxshilash o'rniga haftalab SQL so'rov yozib, dashboard yig'ishadi.
Agar sizga oddiy qo'ng'iroq loglari kerak bo'lsa, qo'lda yozilgan SQL so'rovlar ish beradi. Agar heatmap'lar, operator KPI'lari, trunk monitoringi va CRM integratsiyasi bilan ishga tayyor analitika kerak bo'lsa — Astervis buning barchasini 5 daqiqalik o'rnatishda, birinchi kundanoq tayyor 30+ grafik bilan beradi.
Bepul 14 kunlik sinovni boshlang va CDR ma'lumotlaringiz shuncha vaqtdan beri sizga nima demoqchi bo'lganini ko'ring.
Real vaqt rejimidagi monitoring ham kerakmi? O'qing: Asterisk navbatlarini real vaqtda qanday kuzatish kerak
Yechimlarni taqqoslayapsizmi? Ko'ring: 2026-yilda eng yaxshi Asterisk monitoring vositalari
Taxmin qilishni bas qiling. Ko'rishni boshlang.
Asterisk call-markazingizning haqiqiy ko'rinishi: navbatlardagi kutish vaqti, operatorlar faolligi, trunk yuklamasi va 30+ grafik. Sizning serveringizda on-premise. 5 daqiqada o'rnatish. Kartasiz.
$119/oydan flat. Operatorlar soni cheklanmagan. 14 kunlik triаl.
