Men FreePBX'da call-markaz hisobotlarini shunchalik ko'p marta sozlaganman-ki, sanog'ini yo'qotdim. Vaziyat har doim bir xil: odam FreePBX'ni o'rnatadi, navbatlarni ishga tushiradi, keyin so'raydi: "hisobotlarim qani?"
Javob yoqimsiz. FreePBX'ning ichki hisobot moduli call-markaz ishi uchun mo'ljallanmagan. U shunchaki navbatlari bor ATS uchun mo'ljallangan.
Bu farq ko'pchilik jamoalar o'ylaganidan muhimroq — buni ular uch oydan keyin, "soatlar kesimida o'rtacha kutish vaqtimiz qancha?" degan oddiy savolga javob topa olmay qolganda tushunishadi.
Mening fikrim: FreePBX — mavjud open-source ATS boshqaruv interfeyslari ichida eng yaxshisi. Lekin uning hisobot modullarini call-markaz analitikasi deb qabul qilish — CRM o'rniga jadvaldan foydalanish bilan bir xil: texnik jihatdan ishlaydi va xuddi shunday texnik jihatdan sizni ushlab turadi.
FreePBX aslida nima beradi (halol baho)
Tashqi vositalarni baholashga vaqt sarflashdan oldin FreePBX bilan aynan nima kelishini tushunib oling. Ba'zi narsalar o'ylanganidan yaxshiroq. Ko'pchiligi esa — yomonroq.
CDR Reports moduli (bepul, ichki)
Ko'pchilik birinchi bo'lib shuni topadi. Modul Asterisk'ning cdr jadvaliga so'rov yuboradi va natijani veb-interfeysda ko'rsatadi.
U nimani yaxshi bajaradi:
- —Sana oralig'i, ichki raqam yoki DID bo'yicha qo'ng'iroqlar tarixini qidirish
- —Oflayn tahlil uchun CSV eksporti
- —Qo'ng'iroq davomiyligi bo'yicha oddiy statistika
U nimani qila olmaydi:
- —Navbat kesimidagi metrikalarni ko'rsatish (qo'ng'iroqlar navbat konteksti bo'yicha emas, kanal bo'yicha yoziladi)
- —Operator holatlari o'zgarishini kuzatish (kirish, pauza, bo'sh, post-ishlov)
- —SLA bajarilishini hisoblash
- —Real vaqtda biror narsani ko'rsatish
FreePBX CDR ichida bajaradigan SQL mana bu:
-- This is essentially what FreePBX CDR module queries
SELECT calldate, src, dst, duration, billsec, disposition, channel, dstchannel
FROM cdr
WHERE calldate BETWEEN '2026-04-01' AND '2026-04-02'
ORDER BY calldate DESC;E'tibor bering, bu yerda nima yo'q: queue_log bilan join ham, operator identifikatsiyasi ham, kutish vaqti hisobi ham yo'q. CDR moduli sizning navbatlaringizdan butunlay alohida ma'lumot manbai bilan ishlaydi.
Mening fikrim: CDR hisobotlari billingni solishtirish va "bu qo'ng'iroq bo'lganmi?" degan oddiy tekshiruvlar uchun yaxshi. Ular call-markaz hisoboti emas. Agar kimdir sizga CDR hisobotlari analitika ehtiyojingizni qoplaydi desa — u odam call-markazda ishlamagan.
Queue Reports (tijorat moduli — $149)
Sangoma Queue Reports modulini sotadi va ko'p jamoalar uni hisobot muammosini hal qiladi deb umid qilib sotib oladi.
CDR ustiga nima qo'shadi:
- —Navbat darajasidagi qo'ng'iroq sanoqlari (javob berilgan, tashlab ketilgan, taymaut bo'yicha tugagan)
- —Operator sessiyasi davomiyligini hisobga olish
- —Kutish vaqtining oddiy o'rtacha qiymatlari
Nima baribir ishlamaydi:
- —Real vaqt dashboard yo'q (ma'lumot jonli emas, sahifa qayta yuklanganda yangilanadi)
- —O'rtacha kutish vaqti taqsimotni yashiradi — qo'ng'iroqlarning 80% i 10 soniya, 20% i esa 4 daqiqa kutayotganini ko'ra olmaysiz
- —Operator natijalari bilan navbat natijalari o'rtasida bog'liqlik ko'rsatilmaydi
- —Heatmap va qonuniyatlarni vizualizatsiya qilish yo'q
- —Turli davrlar ko'rsatkichlarini solishtirib bo'lmaydi
$149 — bir martalik to'lov, bu o'rinli. Lekin modul beradigan imkoniyat bilan 20 operatorli call-markazga haqiqatan kerak bo'lgan narsa o'rtasidagi farq juda katta.
UCP (User Control Panel)
UCP operatorlar uchun. U shaxsiy qo'ng'iroqlar tarixini, ovozli pochtani va mavjudlik holatini ko'rsatadi. Bu hisobot vositasi emas va men uni shunday deb ko'rsatmoqchi emasman.
FreePBX hisobotlaridagi bo'shliq (raqamlar bilan)
Amaliy misol. 15 operatorli FreePBX call-markazi har kuni quyidagi savollarga javob berishi kerak:
| Savol | FreePBX CDR | Queue Reports ($149) | Tashqi analitika |
|---|---|---|---|
| Bugun nechta qo'ng'iroqni qayta ishladik? | Qisman (navbat filtri yo'q) | Ha | Ha |
| Ayni damda SLA bajarilishi qanday? | Yo'q | Yo'q (real vaqt yo'q) | Ha |
| Qaysi operatorda AHT eng yuqori? | Yo'q | Qisman (faqat tizimdagi vaqt) | Ha |
| Qaysi soatda tashlab ketilgan qo'ng'iroq eng ko'p? | Yo'q | Yo'q (soatlik taqsimot yo'q) | Ha |
| Ertaga xodimlar yetarlimi? | Yo'q | Yo'q | Ha |
| Qaysi trank to'liq yuklangan? | Yo'q | Yo'q | Ha |
| Bu hafta o'tgan hafta bilan solishtirganda qanday? | Qo'lda CSV eksport | Yo'q | Ha |
7 savoldan 6 tasi tashqi vositani talab qiladi. FreePBX qisman javob beradigan yagona savol (qo'ng'iroqlar soni) ham qo'lda filtrlashni talab qiladi.
FreePBX'da haqiqiy hisobotni sozlash
1-qadam. Navbat loglashni yoqing (juda muhim — ko'pchilik shuni o'tkazib yuboradi)
FreePBX'da navbat loglash sukut bo'yicha to'liq yoqilmagan. Usiz hech qanday tashqi vosita sizga yordam bera olmaydi.
FreePBX admin panelida Applications > Queues bo'limini oching va har bir navbat uchun:
- —
Advanced tabida:
- —Event When Called: Yes
- —Event Membership: Yes
- —Queue Logging: Yes (aynan shuni ko'pchilik e'tibordan chetda qoldiradi)
- —
Timing & Agent Options bo'limida:
- —Wrap-Up Time: haqiqiy post-ishlov maqsadingizni kiriting (sukut bo'yicha 0 — hisob yuritilmaydi degani)
- —Member Delay: 0 (ulanishdan oldin e'lon kerak bo'lmasa)
Keyin loglash ishlayotganini tekshiring:
# Check that queue_log is being written
tail -20 /var/log/asterisk/queue_log
# You should see entries like:
# 1774000000|1774000001|support|CONNECT|15|SIP/200|12
# 1774000012|NONE|support|ADDMEMBER|SIP/201Agar queue_log bo'sh bo'lsa, Asterisk konfiguratsiyasini tekshiring:
; /etc/asterisk/logger.conf
; Make sure queue_log is enabled
[logfiles]
queue_log => queue_log# After changes:
fwconsole restart
# Or if you want to avoid dropping calls:
asterisk -rx "logger reload"Mening fikrim: mening bahoimcha, FreePBX'dagi call-markazlarning 40% ida navbat loglash to'liq sozlanmagan. Ular buni 3 oydan keyin, kimdir "nega ma'lumot yo'q?" deb so'raganda bilib qolishadi. Buni hozir tuzating.
2-qadam. Tashqi vositalar uchun AMI'ni sozlang
Har qanday tashqi monitoring vositasi Asterisk Manager Interface (AMI) orqali ulanadi. FreePBX buni o'zi boshqaradi, lekin siz alohida foydalanuvchi yaratishingiz kerak.
FreePBX'da Settings > Asterisk Manager Users bo'limiga o'ting yoki konfigni to'g'ridan-to'g'ri tahrirlang:
; /etc/asterisk/manager.conf (managed by FreePBX - use GUI when possible)
[monitoring]
secret = generate_a_32_char_password_here
deny = 0.0.0.0/0.0.0.0
permit = 10.0.0.0/255.255.255.0 ; Your monitoring server subnet
read = system,call,log,agent,reporting
write = system,call,agent,reporting
writetimeout = 5000Xavfsizlik bo'yicha eslatma: prodakshenda hech qachon permit = 0.0.0.0/0.0.0.0 ishlatmang. Kirishni monitoring serveringizning IP manzili yoki tarmoq osti bilan cheklang. ATS tizimlari aynan ochiq AMI orqali buziladi.
# Test AMI connection from your monitoring server
telnet freepbx-server 5038
# Then type:
Action: Login
Username: monitoring
Secret: your_password
# You should get: Response: Success
# Then test queue data:
Action: QueueStatus
Queue: your_queue_name3-qadam. Tarixiy hisobotlar uchun bazaga kirishni sozlang
Tarixiy analitika uchun tashqi vositalarga CDR va queue_log bazalariga kirish kerak. FreePBX MySQL/MariaDB ishlatadi:
# Create a read-only database user for analytics
mysql -u root -p
CREATE USER 'analytics'@'monitoring-server-ip' IDENTIFIED BY 'secure_password';
GRANT SELECT ON asteriskcdrdb.cdr TO 'analytics'@'monitoring-server-ip';
GRANT SELECT ON asteriskcdrdb.cel TO 'analytics'@'monitoring-server-ip';
FLUSH PRIVILEGES;Agar tashqi vositangiz queue_log faylini to'g'ridan-to'g'ri o'qisa (ba'zilari shunday qiladi), log rotatsiyasini ehtiyotkorlik bilan sozlang:
# /etc/logrotate.d/asterisk-queue-log
/var/log/asterisk/queue_log {
monthly
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate # Important: don't move the file, copy and truncate
}Mening fikrim: copytruncate bu yerda majburiy. Agar logrotate faylni ko'chirsa, Asterisk qayta ishga tushirilgunga qadar eski fayl deskriptoriga yozishda davom etadi va siz ma'lumot yo'qotasiz. Men buning sababli paydo bo'lgan "ma'lumot yo'qolgan" shikoyatlari haftalab tekshirilganini ko'rganman.
FreePBX uchun hisobot vositalari solishtiruvi (halol reyting)
1. Astervis - loyiha emas, natija kerak bo'lgan jamoalar uchun eng yaxshisi
Astervis Asterisk asosidagi ATS tizimlari, jumladan FreePBX uchun maxsus yaratilgan.
FreePBX'ga o'rnatish:
# On your FreePBX server or a separate machine (recommended)
curl -fsSL https://api.astervis.io/api/releases/install.sh | bash
# Add your FreePBX server in the dashboard
# Queues auto-discovered within 60 secondsFreePBX uchun uni nima ajratib turadi:
- —FreePBX navbat konfiguratsiyasini avtomatik aniqlaydi (navbatlarni qo'lda moslashtirish shart emas)
- —30+ grafik: heatmap'lar, operator ko'rsatkichlari dinamikasi, tranklar analitikasi
- —AMI hodisalari orqali soniyadan tez yangilanadigan real vaqt dashboardlari
- —KPI, reyting va smena rejalashtirish bilan operatorlarni boshqarish
- —CRM integratsiyasi (Bitrix24, AmoCRM)
- —Self-hosted — ma'lumotlaringiz o'z tarmog'ingizda qoladi
Narxi: oyiga $119 dan, operatorlar soni cheklanmagan. 14 kunlik bepul sinov.
Kimga mos: FreePBX'ni call-markaz sifatida ishlatadigan (5+ operator) va alohida joriy etish loyihasisiz darhol ko'rinish olishni istagan jamoalarga.
2. Grafana + o'z stegingiz - DevOps jamoalari uchun eng yaxshisi
Agar sizda DevOps muhandis bo'lsa va to'liq moslashtirishni istasangiz:
- —Grafana + PostgreSQL/TimescaleDB o'rnating
- —
/var/log/asterisk/queue_loguchun parser yozing - —Real vaqt ma'lumotlari uchun AMI hodisalari tinglovchisini yarating
- —Dashboardlarni noldan yig'ing
Real muddat: prodakshen sifatidagi yechim uchun 40–80 soat. Keyin esa doimiy qo'llab-quvvatlash.
# Example: basic queue_log parser to PostgreSQL
# This is the EASY part. The hard part is real-time AMI event processing.
awk -F'|' '{print $1","$2","$3","$4","$5","$6}' /var/log/asterisk/queue_log \
| psql -c "COPY queue_events FROM STDIN WITH CSV"Mening fikrim: o'z analitikasini quradigan jamoalarni hurmat qilaman. Lekin men "FreePBX ustida Grafana" turidagi uchta loyiha katta ishtiyoq bilan boshlanib, uni qurgan muhandis ishdan ketgach yoki boshqa vazifaga o'tgach, olti oy ichida tashlab yuborilganini ko'rganman. Dastlabki qurish — xarajatning 20% i, qo'llab-quvvatlash esa 80% i.
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.
3. QueueMetrics - eskirgan variant
QueueMetrics 2004-yildan beri bor va Asterisk bilan chuqur integratsiyalashgan. Lekin unga FreePBX serveringizda Java/Tomcat kerak.
# QueueMetrics installation on FreePBX
yum install java-11-openjdk tomcat # Java + Tomcat on your PBX server
# Download and deploy WAR file
# Configure database, AMI, queue_log path...
# Total setup: 2-4 hours if everything goes rightFreePBX'ga xos muammo: bitta serverda FreePBX bilan yonma-yon ishlaydigan Tomcat resurslar uchun raqobatlashadi. Bir vaqtning o'zida real vaqt ovozini qayta ishlayotgan tizimda Java'ning xotira sarfi (odatda 512 MB – 1 GB) yaxshi yechim emas. Prodakshendagi FreePBX serverlari resurslarni qo'ng'iroqlarni qayta ishlashga ajratishi kerak.
Narxlar va migratsiya tahlili uchun batafsil QueueMetrics solishtiruvimizni o'qing.
4. Asternic Stats - arzon variant
Asternic QueueMetrics'ga qaraganda soddaroq va Java o'rniga PHP'da ishlaydi:
- —
queue_logni to'g'ridan-to'g'ri o'qiydi - —Oddiy veb-dashboard (2010-yilgacha bo'lgan interfeys estetikasi)
- —QueueMetrics'ga qaraganda kamroq resurs talab qiladi
Halol baho: Asternic navbatlar bo'yicha oddiy statistikani uddalaydi. Agar sizga "kuniga har bir navbatda nechta qo'ng'iroq" kerak bo'lsa va boshqa hech nima kerak bo'lmasa — bu yetarli. Real vaqt monitoringi, operator ko'rsatkichlarini kuzatish yoki zamonaviy analitikaga o'xshash biror narsa unda yo'q.
To'liq ma'lumot — Asternic solishtiruvimizda.
FreePBX uchun hisobot SQL so'rovlari
Agar o'z hisobotlaringizni qurayotgan bo'lsangiz yoki analitika vositangiz to'g'ri hisoblayotganini tekshirmoqchi bo'lsangiz — FreePBX bazasida haqiqatan ishlaydigan SQL so'rovlar mana bu:
queue_log dan operator ko'rsatkichlari
-- Agent call counts and average handle time (FreePBX queue_log table)
SELECT
agent,
COUNT(CASE WHEN event = 'CONNECT' THEN 1 END) AS calls_answered,
COUNT(CASE WHEN event = 'RINGNOANSWER' THEN 1 END) AS calls_missed,
ROUND(AVG(CASE WHEN event = 'COMPLETECALLER' OR event = 'COMPLETEAGENT'
THEN CAST(data2 AS UNSIGNED) END)) AS avg_talk_seconds,
ROUND(AVG(CASE WHEN event = 'COMPLETECALLER' OR event = 'COMPLETEAGENT'
THEN CAST(data1 AS UNSIGNED) END)) AS avg_hold_seconds
FROM queue_log
WHERE time > UNIX_TIMESTAMP(CURDATE())
AND agent != 'NONE'
GROUP BY agent
ORDER BY calls_answered DESC;Soatlar bo'yicha tashlab ketish darajasi
-- Abandon rate by hour (identifies understaffing windows)
SELECT
HOUR(FROM_UNIXTIME(time)) AS hour,
COUNT(CASE WHEN event = 'ABANDON' THEN 1 END) AS abandoned,
COUNT(CASE WHEN event IN ('CONNECT','ABANDON') THEN 1 END) AS total,
ROUND(100.0 * COUNT(CASE WHEN event = 'ABANDON' THEN 1 END) /
NULLIF(COUNT(CASE WHEN event IN ('CONNECT','ABANDON') THEN 1 END), 0), 1) AS abandon_pct
FROM queue_log
WHERE time > UNIX_TIMESTAMP(CURDATE() - INTERVAL 7 DAY)
AND queuename = 'your_queue'
GROUP BY HOUR(FROM_UNIXTIME(time))
ORDER BY hour;SLA bajarilishi (80/30)
-- SLA: percentage of calls answered within 30 seconds
SELECT
DATE(FROM_UNIXTIME(time)) AS day,
COUNT(CASE WHEN event = 'CONNECT' AND CAST(data1 AS UNSIGNED) <= 30 THEN 1 END) AS within_sla,
COUNT(CASE WHEN event = 'CONNECT' THEN 1 END) AS total_answered,
ROUND(100.0 * COUNT(CASE WHEN event = 'CONNECT' AND CAST(data1 AS UNSIGNED) <= 30 THEN 1 END) /
NULLIF(COUNT(CASE WHEN event = 'CONNECT' THEN 1 END), 0), 1) AS sla_pct
FROM queue_log
WHERE time > UNIX_TIMESTAMP(CURDATE() - INTERVAL 30 DAY)
AND queuename = 'support'
GROUP BY DATE(FROM_UNIXTIME(time))
ORDER BY day DESC;Tranklar yuklamasi (FreePBX CDR)
-- Concurrent call peaks by trunk (capacity planning)
SELECT
DATE(calldate) AS day,
HOUR(calldate) AS hour,
channel,
COUNT(*) AS calls,
MAX(duration) AS max_duration
FROM cdr
WHERE calldate > DATE_SUB(NOW(), INTERVAL 7 DAY)
AND channel LIKE 'PJSIP/trunk%'
GROUP BY DATE(calldate), HOUR(calldate), channel
ORDER BY calls DESC
LIMIT 20;FreePBX hisobotlarida uchraydigan tipik xatolar
1. CDR'dagi duration ni suhbat vaqti deb qabul qilish
CDR'dagi duration maydoni chaqiruv vaqtini ham o'z ichiga oladi. billsec suhbat vaqtiga yaqinroq, lekin unda IVR bo'ylab harakat vaqti ham bor. Ikkalasi ham operator va mijoz o'rtasidagi haqiqiy suhbat vaqtini aks ettirmaydi.
Aniq suhbat vaqti uchun queue_log dagi CONNECT/COMPLETE hodisalarini kutish vaqti (data1) va suhbat vaqti (data2) maydonlari bilan birga ishlating.
2. Navbat turlarini ajratmaslik
Sotuv, qo'llab-quvvatlash va VIP navbatlari uchun yagona SLA maqsadi ma'nosiz. FreePBX'da alohida navbatlar yarating va ularni alohida kuzating:
; queues_additional.conf (FreePBX manages this, but understand the structure)
[sales](!)
servicelevel=20 ; 20-second SLA for sales
strategy=rrmemory
[support](!)
servicelevel=30 ; 30-second SLA for support
strategy=leastrecent
[vip](!)
servicelevel=15 ; 15-second SLA for VIP
strategy=linear ; Always ring best agent first3. Qo'ng'iroqdan keyingi ishni e'tiborsiz qoldirish
FreePBX'dagi sukut qiymati wrapuptime=0 operator go'shakni qo'yishi bilan darhol keyingi qo'ng'iroqni olishini bildiradi. Bu quyidagilarga olib keladi:
- —Noaniq AHT (post-ishlov keyingi qo'ng'iroq davomida bajariladi)
- —Operatorlarning charchashi (qo'ng'iroqlar orasida nafas rostlash vaqti yo'q)
- —Sig'imni noto'g'ri hisoblash
Mos post-ishlov vaqtini belgilang:
; In FreePBX: Applications > Queues > Queue Settings
wrapuptime=30 ; 30 seconds between callsYuklamani to'g'ri taqsimlash orqali operatorlar charchashining oldini olish haqida batafsil o'qing.
4. Hisobotlarni eng band soatlarda ishga tushirish
CDR bazasiga yuborilgan analitik so'rovlar qo'ng'iroqlarni qayta ishlash bilan raqobatlashadi. Og'ir hisobotlarni band bo'lmagan soatlarga rejalashtiring yoki undan ham yaxshisi — ma'lumotlarni alohida analitik bazaga replikatsiya qiling.
Shu hafta nimani sozlash kerak
Agar sizda navbatli FreePBX bo'lsa va CDR hisobotlaridan boshqa analitika bo'lmasa, harakat rejangiz mana bu:
1-kun: Barcha navbatlarda navbat loglashni yoqing (yuqoridagi 1-qadam). queue_log yozilayotganiga ishonch hosil qiling.
2-kun: Tashqi monitoring uchun AMI kirishini sozlang (2-qadam). Ulanishni tekshiring.
3-kun: Analitika vositasini o'rnating. Astervis'ni 14 kun bepul sinab ko'ring — FreePBX'da o'rnatish 10 daqiqa oladi.
4–5-kun: Har bir navbat uchun SLA chegaralarini sozlang. wrapuptime ni belgilang. Dastlabki ma'lumotlarni ko'rib chiqing.
"Call-markazimiz yaxshi ishlayotganga o'xshaydi" bilan "soat 14:00 da SLA 78%, tashlab ketish 14% ekanini bilamiz" o'rtasidagi farq — bu umid bilan ma'lumot o'rtasidagi farq.
FreePBX qo'ng'iroqlarni qayta ishlaydi. Analitika esa uni qanchalik yaxshi qilayotganini ko'rsatadi.
FreePBX call-markazini optimallashtirish haqida ko'proq ma'lumot: Asterisk monitoringi bo'yicha to'liq qo'llanmamiz, CDR hisobotlarining batafsil tahlili va real vaqtda navbatlar monitoringini sozlash.
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.
