·21 daq·1 ko'rish

Asterisk asosidagi call-markaz uchun KPI dashboard

Asterisk call-markazi uchun to'liq KPI dashboard qanday quriladi: qaysi ko'rsatkichlarni kuzatish, ma'lumot qayerda saqlanadi va uni ekranga qanday chiqarish.

A
Astervis
Muhandislar va product jamoasi

Sizning Asterisk PBX'ingiz har soatda minglab ma'lumot nuqtasini hosil qiladi — qo'ng'iroqlar yozuvlari, navbat hodisalari, operator holatining o'zgarishlari, SIP-kanal metrikalari va trunk bandligi statistikasi. Shunga qaramay, Asterisk'da ishlaydigan aksariyat call-markazlar bu ma'lumotni real vaqtda ko'ra olmaydi. Rahbarlar kun oxiridagi eksportlarga yoki, bundan ham yomoni, o'z sezgisiga tayanadi.

Bu qo'llanmada Asterisk asosidagi call-markaz uchun to'liq KPI dashboard'ni qanday qurishni ko'rib chiqamiz: qaysi ko'rsatkichlarni kuzatish kerak, ma'lumot qayerda saqlanadi, uni qanday so'rov bilan olish mumkin va noldan to'liq operatsion ko'rinishga o'tishning eng tez yo'llari qanday.

Asterisk call-markazingizga KPI dashboard nega kerak

Amaliyotga o'tishdan oldin, normal ko'rinish bo'lmaganda nima bo'lishini ochiq aytaylik:

Dashboard bo'lmasa:

  • Supervayzerlar navbat toshib ketganini bir necha soatdan keyin biladi
  • Rahbar CDR eksportini olmasdan "bugun ishlarimiz qanday?" degan savolga javob bera olmaydi
  • Operator ishini baholash ma'lumotga emas, subyektiv taassurotga asoslanadi
  • SLA buzilishi mijoz shikoyat qilgunga qadar sezilmaydi
  • Smena tarkibi bo'yicha qarorlar pik soatlarga emas, o'rtacha qiymatlarga qarab qabul qilinadi

Yaxshi qurilgan dashboard bilan:

  • Navbatlarning real vaqtli wallboard'i supervayzerga soatlab emas, soniyalarda javob berish imkonini beradi
  • Kun natijalari barcha manfaatdorlarga bir qarashda ko'rinadi
  • Operatorlar bilan ishlash ma'lumotga asoslangan va adolatli bo'ladi
  • SLA bajarilishi avtomatik ogohlantirishlar bilan real vaqtda kuzatiladi
  • Heatmap'lar qachon operator yetishmasligini (va qachon ortiqcha ekanini) aniq ko'rsatadi

Soha benchmark'lariga ko'ra, real vaqtli analitika dashboard'lariga ega call-markazlar joriy etilgandan keyingi birinchi chorakda o'rtacha kutish vaqtini 15-25% ga qisqartiradi va birinchi murojaatda hal qilishni 10-15% ga oshiradi.

Har bir Asterisk call-markazi kuzatishi kerak bo'lgan 20 ta KPI

Hamma metrika ham bir xil foydali emas. Quyida — kimga kerakligi va qanchalik tez-tez kuzatilishi bo'yicha guruhlangan to'liq KPI tizimi.

1-daraja: real vaqt (wallboard) — har 5-10 soniyada yangilanadi

Bular supervayzer ekranida kun bo'yi turishi kerak bo'lgan metrikalar:

KPIFormulaMaqsadMa'lumot manbai
Navbatdagi qo'ng'iroqlarKutayotgan abonentlar soni< 5AMI QueueStatus
Eng uzun kutish vaqtiJoriy abonentlar orasidagi maksimal kutish< 60sAMI QueueStatus
Bo'sh operatorlar"Not In Use" holatidagi operatorlar> umumiy sonning 20%AMI QueueMember
Xizmat darajasi (siljuvchi)(Chegara ichida javob berilgan / Jami kelgan) × 100≥ 80/20queue_log
Faol suhbatlarUlangan kanallar soniAMI CoreShowChannels
Yo'qotilgan (bugun)Abonent navbatda go'shakni qo'ygan qo'ng'iroqlar< 5%queue_log'dagi ABANDON hodisalari

2-daraja: operatorlar samaradorligi — har 30-60 soniyada yangilanadi

Alohida operator va jamoa mahsuldorligini deyarli real vaqtda kuzatish:

KPIFormulaMaqsadMa'lumot manbai
O'rtacha ishlov berish vaqti (AHT)(Suhbat vaqti + Hold vaqti + ACW) / Ishlov berilgan qo'ng'iroqlarSoha bo'yicha: 4-6 daqiqaCDR + queue_log
Operator bandligi(Umumiy ishlov berish vaqti / Tizimdagi vaqt) × 10075-85%queue_log PAUSE/UNPAUSE
Birinchi qo'ng'iroqda hal qilish (FCR)(Qayta murojaatsiz hal qilingan qo'ng'iroqlar / Jami qo'ng'iroqlar) × 100> 70%CDR + CRM ma'lumotlari
Soatiga qo'ng'iroqlarJami ishlov berilgan qo'ng'iroqlar / Ishlangan soatlar8-15 (vazifaga qarab)queue_log'dagi CONNECT hodisalari
Hold ulushiUmumiy hold vaqti / Umumiy suhbat vaqti< 10%CDR'dagi holdtime maydoni
Perevod ulushiPerevodlar / Jami qo'ng'iroqlar × 100< 15%queue_log'dagi TRANSFER hodisalari
Qo'ng'iroqdan keyingi ish (ACW)Qo'ng'iroq tugagach rasmiylashtirishga ketgan vaqt< 60squeue_log PAUSE(ACW)

3-daraja: operatsion — har 5-15 daqiqada yangilanadi

Bu metrikalar kun davomidagi taktik qarorlarni belgilaydi:

KPIFormulaMaqsadMa'lumot manbai
O'rtacha javob tezligi (ASA)Umumiy kutish vaqti / Javob berilgan qo'ng'iroqlar< 30squeue_log CONNECT
Yo'qotilgan qo'ng'iroqlar ulushiYo'qotilgan / (Javob berilgan + Yo'qotilgan) × 100< 5%queue_log
Kutish vaqti taqsimotiKutish vaqtlari gistogrammasi (0-15s, 15-30s va h.k.)80% 30s gachaqueue_log
Trunk bandligiFaol trunk kanallari / Umumiy sig'im × 100< 70% (zaxira uchun)AMI
Qayta qo'ng'iroq muvaffaqiyatiMuvaffaqiyatli qayta qo'ng'iroqlar / Qayta qo'ng'iroq so'rovlari × 100> 85%CDR + callback loglari

4-daraja: strategik — kunlik va haftalik hisobotlar

Bular xodimlar, o'qitish va biznes bo'yicha qarorlarni belgilaydi:

KPIFormulaMaqsadMa'lumot manbai
Bir qo'ng'iroq tannarxiUmumiy operatsion xarajat / Jami ishlov berilgan qo'ng'iroqlarSohaga qarab farq qiladiCDR + moliyaviy ma'lumotlar
Mijozlar mamnunligi (CSAT)So'rovnoma javoblarining o'rtachasi> 4.2/5qo'ng'iroqdan keyingi so'rovnoma
Operatorlar oqimiIshdan ketgan operatorlar / O'rtacha xodimlar soni × 100< 3%/oyHR ma'lumotlari

Asterisk'dagi ma'lumot manbalarini tushunish

Nimadir qurishdan oldin ma'lumot qayerda yotganini bilish kerak. Asterisk call-markaz ma'lumotlarini bir nechta quyi tizimda saqlaydi:

1. CDR (Call Detail Records)

CDR jadvali — tarixiy ma'lumotning asosiy manbai. Har bir tugagan qo'ng'iroq yozuv qoldiradi:

asterisk*CLI> cdr show status

Dashboard uchun muhim CDR maydonlari:

-- PostgreSQL CDR table structure (typical) CREATE TABLE cdr ( calldate TIMESTAMPTZ NOT NULL, clid VARCHAR(80), src VARCHAR(80), -- Caller number dst VARCHAR(80), -- Dialed number/queue dcontext VARCHAR(80), -- Dial context channel VARCHAR(80), -- Originating channel dstchannel VARCHAR(80), -- Destination channel lastapp VARCHAR(80), -- Last application (Queue, Dial, etc.) lastdata VARCHAR(80), -- App arguments duration INTEGER, -- Total duration (ring + talk) billsec INTEGER, -- Billable seconds (talk only) disposition VARCHAR(45), -- ANSWERED, NO ANSWER, BUSY, FAILED uniqueid VARCHAR(150), -- Unique call ID linkedid VARCHAR(150) -- Linked ID (bridges related legs) ); CREATE INDEX idx_cdr_calldate ON cdr (calldate); CREATE INDEX idx_cdr_dst ON cdr (dst); CREATE INDEX idx_cdr_disposition ON cdr (disposition);

2. queue_log

Bu — navbatlar bo'yicha real vaqtli ma'lumotning eng boy manbai. Har bir navbat hodisasi logga yoziladi:

-- queue_log format: time|callid|queuename|agent|event|data1|data2|data3|data4|data5 1711000000|1711000000.42|support|SIP/agent101|CONNECT|12|1711000000.42|5 1711000000|1711000000.43|sales|NONE|ABANDON|1|1|45

Kuzatish kerak bo'lgan asosiy hodisalar:

HodisaMa'nosiDashboard'da qo'llanishi
ENTERQUEUEAbonent navbatga kirdiNavbat chuqurligi, kelish jadalligi
CONNECTOperator javob berdiKutish vaqti, ASA, xizmat darajasi
ABANDONAbonent kutayotib go'shakni qo'ydiYo'qotilgan qo'ng'iroqlar ulushi
COMPLETECALLERSuhbatni abonent yakunladiAHT, qo'ng'iroq davomiyligi
COMPLETEAGENTSuhbatni operator yakunladiAHT, qo'ng'iroq davomiyligi
RINGNOANSWEROperator go'shakni ko'tarmadiOperator bo'yicha o'tkazib yuborilgan qo'ng'iroqlar
TRANSFERQo'ng'iroq perevod qilindiPerevod ulushi
PAUSEOperator pauzada (tanaffus, ACW)Bandlik, mavjudlik
UNPAUSEOperator pauzadan chiqdiBandlik, mavjudlik
REMOVEMEMBEROperator navbatdan chiqdiLiniyadagi xodimlar soni
ADDMEMBEROperator navbatga kirdiLiniyadagi xodimlar soni

So'rovlar tez ishlashi uchun queue_log'ni ma'lumotlar bazasida saqlang:

CREATE TABLE queue_log ( id BIGSERIAL PRIMARY KEY, time TIMESTAMPTZ NOT NULL, callid VARCHAR(80), queuename VARCHAR(80), agent VARCHAR(80), event VARCHAR(32) NOT NULL, data1 VARCHAR(100), data2 VARCHAR(100), data3 VARCHAR(100), data4 VARCHAR(100), data5 VARCHAR(100) ); CREATE INDEX idx_qlog_time ON queue_log (time); CREATE INDEX idx_qlog_queue_event ON queue_log (queuename, event); CREATE INDEX idx_qlog_agent ON queue_log (agent);

3. AMI (Asterisk Manager Interface)

AMI tizimning joriy holatini TCP-soket orqali uzatadi:

Action: QueueStatus Queue: support Response: Success ... Event: QueueParams Queue: support Calls: 3 Holdtime: 15 TalkTime: 245 Completed: 87 Abandoned: 4 ServiceLevel: 80.2 ServicelevelPerf: 85.1 ... Event: QueueMember Queue: support Name: Agent 101 StateInterface: SIP/agent101 Status: 1 -- 1=Not In Use, 2=In Use, 6=Ringing Paused: 0 CallsTaken: 12 LastCall: 1711000000

4. CEL (Channel Event Logging)

Qo'ng'iroq yo'lini batafsil kuzatish uchun (hold hodisalari, perevodlar, konferensiyalar):

CREATE TABLE cel ( id BIGSERIAL PRIMARY KEY, eventtype VARCHAR(30), -- CHAN_START, ANSWER, HOLD, UNHOLD, BRIDGE_ENTER, etc. eventtime TIMESTAMPTZ, cid_name VARCHAR(80), cid_num VARCHAR(80), exten VARCHAR(80), context VARCHAR(80), channame VARCHAR(80), linkedid VARCHAR(80), uniqueid VARCHAR(80), extra TEXT -- JSON with additional data );

Dashboard qurish: uchta yondashuv taqqoslanadi

1-yondashuv: Grafana + PostgreSQL bilan o'zingiz qurish

Qurish vaqti: 60-120 soat | Narxi: bepul (OSS) | Xizmat ko'rsatish: oyiga 5-10 soat

Eng keng tarqalgan variant. Asterisk'ni CDR va queue_log'ni PostgreSQL'ga yozishga sozlaysiz, so'ng SQL so'rovlar asosida Grafana dashboard'larini yig'asiz.

1-qadam: CDR'ni PostgreSQL'ga yozishni sozlash

/etc/asterisk/cdr_pgsql.conf faylini tahrirlaymiz:

[global] hostname=localhost port=5432 dbname=asterisk user=asterisk password=your_secure_password table=cdr

2-qadam: queue_log'ni bazaga yozishni sozlash

/etc/asterisk/extconfig.conf faylida:

[settings] queue_log => pgsql,asterisk,queue_log

3-qadam: Har bir KPI uchun SQL so'rov yozish

Grafana uchun real vaqtli xizmat darajasi so'rovi:

-- Service Level (80/20) for the last hour, by queue WITH events AS ( SELECT queuename, event, CAST(data1 AS INTEGER) AS wait_time FROM queue_log WHERE time >= NOW() - INTERVAL '1 hour' AND event IN ('CONNECT', 'ABANDON') ) SELECT queuename AS "Queue", COUNT(*) FILTER (WHERE event = 'CONNECT') AS answered, COUNT(*) FILTER (WHERE event = 'ABANDON') AS abandoned, ROUND( 100.0 * COUNT(*) FILTER (WHERE event = 'CONNECT' AND wait_time <= 20) / NULLIF(COUNT(*), 0), 1 ) AS "Service Level %" FROM events GROUP BY queuename ORDER BY queuename;

Soatlar kesimidagi yuklama heatmap'i:

-- Heatmap: calls by hour and day of week (last 4 weeks) SELECT EXTRACT(DOW FROM calldate) AS day_of_week, EXTRACT(HOUR FROM calldate) AS hour, COUNT(*) AS call_count FROM cdr WHERE calldate >= NOW() - INTERVAL '28 days' AND dst IN ('support', 'sales', 'billing') GROUP BY 1, 2 ORDER BY 1, 2;

Operator samaradorligi kartochkasi:

-- Agent performance: today WITH agent_calls AS ( SELECT agent, COUNT(*) FILTER (WHERE event = 'CONNECT') AS calls_taken, AVG(CAST(data2 AS INTEGER)) FILTER (WHERE event IN ('COMPLETECALLER','COMPLETEAGENT')) AS avg_talk_time, AVG(CAST(data1 AS INTEGER)) FILTER (WHERE event = 'CONNECT') AS avg_wait_given, COUNT(*) FILTER (WHERE event = 'RINGNOANSWER') AS missed_rings, COUNT(*) FILTER (WHERE event = 'TRANSFER') AS transfers FROM queue_log WHERE time >= CURRENT_DATE AND agent != 'NONE' GROUP BY agent ), agent_pauses AS ( SELECT agent, SUM( EXTRACT(EPOCH FROM LEAD(time) OVER (PARTITION BY agent ORDER BY time) - time ) ) FILTER (WHERE event = 'PAUSE') AS total_pause_seconds FROM queue_log WHERE time >= CURRENT_DATE AND event IN ('PAUSE', 'UNPAUSE') GROUP BY agent ) SELECT ac.agent AS "Agent", ac.calls_taken AS "Calls", ROUND(ac.avg_talk_time) || 's' AS "Avg Talk", ROUND(ac.avg_wait_given) || 's' AS "Avg Wait Given", ac.missed_rings AS "Missed", ac.transfers AS "Transfers", COALESCE(ROUND(ap.total_pause_seconds / 60), 0) || ' min' AS "Break Time" FROM agent_calls ac LEFT JOIN agent_pauses ap ON ac.agent = ap.agent ORDER BY ac.calls_taken DESC;

Afzalliklari: bepul, juda moslashuvchan, hamma narsa sizning nazoratingizda Kamchiliklari: qurishga 60-120 soat ketadi, SQL bo'yicha chuqur bilim talab qiladi, Grafana'da real vaqtli AMI ma'lumoti yo'q (o'z middleware'ingiz kerak), Asterisk versiyasi o'zgarganda dashboard'lar buziladi, doimiy xizmat ko'rsatish yuki

2-yondashuv: QueueMetrics

Joriy etish vaqti: 2-4 soat | Narxi: oyiga har bir operator uchun CHF 8 | Xizmat ko'rsatish: oyiga 2-3 soat

QueueMetrics — Asterisk navbatlari bo'yicha hisobotning klassik yechimi. queue_log'ni o'qiydi va tayyor hisobotlarni beradi.

Nima olasiz:

  • Tayyor tarixiy hisobotlar (30 dan ortiq)
  • Oddiy real vaqtli wallboard
  • Ish ko'rsatkichlari bilan operator sahifasi
  • SLA nazorati

Cheklovlari:

  • Java'da yozilgan (JVM kerak, resurs sarfi katta)
  • Interfeys eskirgan (zamonaviy vizualizatsiya yo'q)
  • Kanal holatini ko'rish uchun real vaqtli AMI integratsiyasi yo'q
  • Heatmap va murakkab vizualizatsiyalar yo'q
  • Trunk monitoringi yo'q
  • CRM integratsiyasi yo'q
  • Narx operator soniga qarab o'sadi (ko'lam kattalashganda qimmat: 50 operator = oyiga $400)
  • Faqat self-hosted, yangilanishlar qo'lda

3-yondashuv: Astervis (vazifaga moslangan zamonaviy yechim)

Joriy etish vaqti: 15 daqiqa | Narxi: oyiga $119 dan | Xizmat ko'rsatish: yo'q (avtomatik yangilanadi)

Astervis sizning Asterisk PBX'ingizga AMI va CDR orqali to'g'ridan-to'g'ri ulanadi va real vaqtli ma'lumotli 30 dan ortiq tayyor dashboard beradi:

Nima olasiz:

  • 30 dan ortiq grafik, jumladan heatmap'lar, trend chiziqlari va taqsimot diagrammalari
  • Real vaqtli wallboard (AMI orqali har 5 soniyada yangilanadi)
  • KPI ballari bilan operator dashboard'lari
  • SLA nazorati bilan navbat analitikasi
  • Trunk bandligi monitoringi
  • Qo'ng'iroq yozuvlarini tinglash integratsiyasi
  • CRM integratsiyasi (Bitrix24, AmoCRM)
  • Operator smenalari va jadvallarini rejalashtirish
  • Bitta buyruq bilan o'rnatish: curl -fsSL https://api.astervis.io/api/releases/install.sh | bash
  • Self-hosted: ma'lumotlaringiz o'z serveringizda qoladi

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.

Bepul sinab ko'rish

Imkoniyatlar taqqoslovi: uchala yondashuv

ImkoniyatO'zingiz qurgan GrafanaQueueMetricsAstervis
Joriy etish vaqti60-120 soat2-4 soat15 daqiqa
Real vaqtli ma'lumotCheklangan (AMI yo'q)OddiyTo'liq AMI + CDR
Yangilanish chastotasiQo'lda yangilash30-60 soniya5 soniya
Tayyor dashboard'larYo'q (hammasini o'zingiz)~30 hisobot30+ grafik
Heatmap'larO'z SQL'ingiz kerak✅ Ichida bor
Operator kartochkalariO'z SQL'ingiz kerakOddiy✅ Kengaytirilgan
Trunk monitoringiO'zingiz yozasiz
CRM integratsiyasiO'zingiz yozasiz✅ Bitrix24, AmoCRM
Qo'ng'iroq yozuvlariAlohida vositaOddiy✅ Ichki pleyer
Telefonda ishlashSozlashga bog'liq✅ Moslashuvchan interfeys
OgohlantirishlarGrafana alertlariFaqat e-mail✅ Bir nechta kanal
Xizmat ko'rsatishOyiga 5-10 soatOyiga 2-3 soatYo'q
Narxi (50 operator)Bepul (+ sizning vaqtingiz)~$400/oy$119/oy
Zamonaviy interfeysMalakaga bog'liq

Ishlaydigan dashboard tuzilishini loyihalash

Qaysi yondashuvni tanlashingizdan qat'i nazar, bu tamoyillar dashboard'ni haqiqatan foydali qiladi:

"Uch ekran" modeli

Eng samarali call-markazlar uchta dashboard ko'rinishidan foydalanadi, har biri o'z auditoriyasi uchun:

1-ekran: operatsion wallboard (supervayzerlar va operatorlar uchun)

Butun zalga ko'rinadigan katta televizorga chiqariladi:

┌─────────────────────────────────────────────────────┐ │ SERVICE LEVEL: 87% │ CALLS IN QUEUE: 2 │ │ ████████████░░ 80/20 │ LONGEST WAIT: 0:23 │ ├─────────────────────────────────────────────────────┤ │ AVAILABLE AGENTS │ TODAY'S STATS │ │ ● Agent 101 (idle) │ Answered: 234 │ │ ● Agent 102 (talking) │ Abandoned: 8 (3.3%) │ │ ● Agent 103 (ringing) │ Avg Wait: 18s │ │ ○ Agent 104 (break) │ Avg Talk: 4:22 │ │ ● Agent 105 (talking) │ ASA: 14s │ ├─────────────────────────────────────────────────────┤ │ HOURLY VOLUME call volume by hour graph │ │ 8am ████████████ 45 │ │ 9am ██████████████████ 67 │ │ 10am ████████████████████████ 89 ← peak │ │ 11am ██████████████████ 65 │ └─────────────────────────────────────────────────────┘

Wallboard uchun loyihalash qoidalari:

  • Ko'pi bilan 6-8 ta metrika (ma'lumot ortiqchaligi foydani yo'qqa chiqaradi)
  • Rang kodlash: yashil (me'yorda), sariq (ogohlantirish), qizil (buzilish)
  • Shrift o'lchami 5 metrdan o'qiladigan bo'lsin
  • Har 5-10 soniyada avtomatik yangilanish
  • Hech qanday skroll kerak emas — hammasi bir vaqtda ko'rinadi

2-ekran: rahbar dashboard'i (jamoa liderlari va menejerlar uchun)

Taktik qarorlar shu yerda qabul qilinadi:

┌────────────────────────────────────────────────────────────┐ │ QUEUE PERFORMANCE (Today) │ │ ┌──────────┬─────────┬──────────┬──────┬──────┬─────────┐ │ │ │ Queue │ Offered │ Answered │ Abn% │ SL% │ ASA │ │ │ ├──────────┼─────────┼──────────┼──────┼──────┼─────────┤ │ │ │ Support │ 156 │ 148 │ 5.1% │ 82% │ 22s │ │ │ │ Sales │ 89 │ 87 │ 2.2% │ 91% │ 12s │ │ │ │ Billing │ 67 │ 61 │ 9.0% │ 71% │ 38s ⚠ │ │ │ └──────────┴─────────┴──────────┴──────┴──────┴─────────┘ │ ├────────────────────────────────────────────────────────────┤ │ AGENT LEADERBOARD │ WAIT TIME DISTRIBUTION │ │ 1. Agent 103 — 34 calls, 92% │ 0-15s: ████████████ 45% │ │ 2. Agent 101 — 31 calls, 88% │ 15-30s: ████████ 28% │ │ 3. Agent 105 — 28 calls, 85% │ 30-60s: ████ 15% │ │ 4. Agent 102 — 26 calls, 79% │ 60-90s: ██ 8% │ │ 5. Agent 104 — 22 calls, 75% │ 90s+: █ 4% │ ├────────────────────────────────────────────────────────────┤ │ HOURLY HEATMAP (Mon-Fri) │ │ 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm │ │ Mon ░░ ██ ████ ████ ██ ░░ ██ ████ ████ ██ │ │ Tue ░░ ██ ████ ██ ██ ██ ██ ████ ██ ░░ │ │ Wed ██ ████ ████ ████ ██ ██ ████ ████ ████ ██ │ │ Thu ░░ ██ ████ ██ ██ ░░ ██ ██ ████ ██ │ │ Fri ░░ ██ ██ ██ ░░ ░░ ██ ██ ██ ░░ │ └────────────────────────────────────────────────────────────┘

Nimalarni kiritish kerak:

  • Navbatlar kesimidagi taqqoslash jadvali
  • Asosiy ko'rsatkichlar bilan operatorlar reytingi
  • Kutish vaqti taqsimoti gistogrammasi
  • Smenalarni rejalashtirish uchun soatlik heatmap
  • SLA trend chizig'i (7 kunlik va 30 kunlik)

3-ekran: rahbariyat uchun hisobot (direktorlar va top-menejment uchun)

Trendlar va biznesga ta'sirga qaratilgan haftalik yoki oylik kesim:

  • Prognoz bilan oydan oyga qo'ng'iroqlar hajmi dinamikasi
  • Bir qo'ng'iroq tannarxi dinamikasi
  • Vaqt bo'yicha mijozlar mamnunligi ballari
  • SLA bajarilishi trendi (yaxshilanib borishi kerak)
  • Xodimlardan foydalanish samaradorligi ko'rsatkichlari
  • Murojaatlarning asosiy sabablari (IVR ma'lumotlari yoki yakunlash kodlaridan)

Dashboard loyihalashning eng yaxshi amaliyotlari

  1. Metrikadan emas, savoldan boshlang. Har bir foydalanuvchi qanday qaror qabul qilishi kerak? Faqat shu qarorlarga yordam beradigan ma'lumotni ko'rsating.

  2. Tafsilotlarni bosqichma-bosqich oching. Asosiy ko'rinishda umumiy raqamlar, tafsilotlar — bosish orqali. Hammasini bitta ekranga tiqishtirmang.

  3. Rang ma'no anglatsin. Yashil/sariq/qizil izchil ravishda me'yor/ogohlantirish/buzilishni bildirishi kerak. Rangni bezak sifatida ishlatmang.

  4. Real vaqt ≠ tarix. Ularni ajrating. Real vaqtli dashboard'lar "hozir nima bo'lyapti?" degan savolga, tarixiylari esa "nima bo'ldi va nega?" degan savolga javob beradi.

  5. Hamma narsaga mo'ljal qo'ying. Maqsadsiz raqamlar ma'nosiz. "ASA 34 soniya" hech nima demaydi. "ASA 34 soniya (maqsad: 20s) — ⚠ maqsaddan 70% yuqori" harakatga undaydi.

  6. Faqat suratni emas, dinamikani ko'rsating. Xizmat darajasi 75% — bu yomon. Ammo o'tgan hafta 60% bo'lgan bo'lsa, siz o'sayapsiz. Kontekst muhim.

  7. O'qilishini tekshiring. Agar supervayzer o'z ish joyidan wallboard'ni o'qiy olmasa, undan foyda yo'q.

Asterisk dashboard'ingiz uchun kerakli SQL so'rovlar

Quyida istalgan vizualizatsiya vositasiga to'g'ri keladigan, ishlab chiqarishga tayyor so'rovlar:

WITH hourly_events AS ( SELECT queuename, event, CAST(NULLIF(data1, '') AS INTEGER) AS wait_seconds FROM queue_log WHERE time >= NOW() - INTERVAL '1 hour' AND event IN ('CONNECT', 'ABANDON') ) SELECT queuename, COUNT(*) AS total_offered, COUNT(*) FILTER (WHERE event = 'CONNECT') AS answered, COUNT(*) FILTER (WHERE event = 'ABANDON') AS abandoned, ROUND( 100.0 * COUNT(*) FILTER ( WHERE event = 'CONNECT' AND wait_seconds <= 20 ) / NULLIF(COUNT(*), 0), 1 ) AS service_level_pct, ROUND(AVG(wait_seconds) FILTER (WHERE event = 'CONNECT'), 0) AS avg_speed_answer FROM hourly_events GROUP BY queuename;

Operatorlar bandligi (bugun)

WITH agent_sessions AS ( SELECT agent, event, time, LEAD(time) OVER (PARTITION BY agent ORDER BY time) AS next_time, LEAD(event) OVER (PARTITION BY agent ORDER BY time) AS next_event FROM queue_log WHERE time >= CURRENT_DATE AND agent != 'NONE' AND event IN ('ADDMEMBER', 'REMOVEMEMBER', 'CONNECT', 'COMPLETECALLER', 'COMPLETEAGENT', 'PAUSE', 'UNPAUSE') ), talk_time AS ( SELECT agent, SUM(EXTRACT(EPOCH FROM next_time - time)) AS total_talk_seconds FROM agent_sessions WHERE event = 'CONNECT' GROUP BY agent ), login_time AS ( SELECT agent, SUM(EXTRACT(EPOCH FROM COALESCE(next_time, NOW()) - time )) AS total_login_seconds FROM agent_sessions WHERE event = 'ADDMEMBER' GROUP BY agent ) SELECT t.agent, ROUND(t.total_talk_seconds / 3600, 1) AS talk_hours, ROUND(l.total_login_seconds / 3600, 1) AS login_hours, ROUND(100.0 * t.total_talk_seconds / NULLIF(l.total_login_seconds, 0), 1) AS utilization_pct FROM talk_time t JOIN login_time l ON t.agent = l.agent ORDER BY utilization_pct DESC;

Yo'qotilgan qo'ng'iroqlar tahlili (muammoli soatlarni aniqlash)

SELECT DATE_TRUNC('hour', time) AS hour, COUNT(*) FILTER (WHERE event IN ('CONNECT', 'ABANDON')) AS total_offered, COUNT(*) FILTER (WHERE event = 'ABANDON') AS abandoned, ROUND( 100.0 * COUNT(*) FILTER (WHERE event = 'ABANDON') / NULLIF(COUNT(*) FILTER (WHERE event IN ('CONNECT', 'ABANDON')), 0), 1 ) AS abandon_rate_pct, ROUND(AVG(CAST(NULLIF(data1, '') AS INTEGER)) FILTER (WHERE event = 'ABANDON'), 0) AS avg_wait_before_abandon FROM queue_log WHERE time >= CURRENT_DATE AND event IN ('CONNECT', 'ABANDON') GROUP BY DATE_TRUNC('hour', time) HAVING COUNT(*) FILTER (WHERE event = 'ABANDON') > 0 ORDER BY hour;

Haftalik ko'rsatkichlar trendi

SELECT DATE_TRUNC('week', time) AS week, COUNT(*) FILTER (WHERE event = 'CONNECT') AS answered, COUNT(*) FILTER (WHERE event = 'ABANDON') AS abandoned, ROUND( 100.0 * COUNT(*) FILTER (WHERE event = 'CONNECT' AND CAST(NULLIF(data1,'') AS INTEGER) <= 20) / NULLIF(COUNT(*) FILTER (WHERE event IN ('CONNECT','ABANDON')), 0), 1 ) AS service_level_pct, ROUND(AVG(CAST(NULLIF(data1,'') AS INTEGER)) FILTER (WHERE event = 'CONNECT'), 0) AS avg_wait_seconds, ROUND(AVG(CAST(NULLIF(data2,'') AS INTEGER)) FILTER (WHERE event IN ('COMPLETECALLER','COMPLETEAGENT')), 0) AS avg_talk_seconds FROM queue_log WHERE time >= NOW() - INTERVAL '12 weeks' AND event IN ('CONNECT', 'ABANDON', 'COMPLETECALLER', 'COMPLETEAGENT') GROUP BY DATE_TRUNC('week', time) ORDER BY week;

Haqiqatan ishlaydigan ogohlantirishlarni sozlash

Ogohlantirishsiz dashboard — shunchaki chiroyli rasm. Mazmunli bildirishnomalarni qanday sozlashni ko'rib chiqamiz:

Ogohlantirishlar ierarxiyasi

Ogohlantirish darajasiTriggerJavob choralariKanal
Ma'lumotNavbat chuqurligi 2+ daqiqa davomida > 3Supervayzer e'tiborga oladiWallboard'da rang o'zgaradi
OgohlantirishXizmat darajasi < 80% (siljuvchi 30 daqiqa)Zaxira operatorlarni ulashSlack/Teams'ga bildirishnoma
KritikYo'qotilganlar ulushi > 10% (siljuvchi 15 daqiqa)Smenani shoshilinch kuchaytirishSMS + Slack + e-mail
AvariyaBironta ham operator bo'sh emasRahbariyatga eskalatsiyaNavbatchi rahbarga qo'ng'iroq

Misol: PostgreSQL'dagi ogohlantirish so'rovi

Uni cron orqali har 60 soniyada ishga tushiring:

-- Check for SLA breach in the last 15 minutes WITH recent AS ( SELECT queuename, COUNT(*) AS total, COUNT(*) FILTER ( WHERE event = 'CONNECT' AND CAST(data1 AS INTEGER) <= 20 ) AS within_sla FROM queue_log WHERE time >= NOW() - INTERVAL '15 minutes' AND event IN ('CONNECT', 'ABANDON') GROUP BY queuename ) SELECT queuename, total, ROUND(100.0 * within_sla / NULLIF(total, 0), 1) AS sla_pct, CASE WHEN 100.0 * within_sla / NULLIF(total, 0) < 60 THEN 'CRITICAL' WHEN 100.0 * within_sla / NULLIF(total, 0) < 80 THEN 'WARNING' ELSE 'OK' END AS status FROM recent WHERE 100.0 * within_sla / NULLIF(total, 0) < 80;

Dashboard qurishda uchraydigan tipik xatolar

1. Metrikalar ortiqchaligi Bitta ekranda 50 ta ko'rsatkich hech kimga yordam bermaydi. Har bir dashboard ko'rinishi uchun 6-8 ta kritik KPI'dan boshlang. Tafsilotni har doim bosib ochish mumkin.

2. Mo'ljal yo'qligi Maqsadli qiymatsiz metrika — shunchaki raqam. Dashboard'ni yig'ishdan oldin har bir KPI uchun "yaxshi" nima ekanini aniqlab oling. Bu qo'llanmadagi soha benchmark'larini boshlang'ich nuqta sifatida oling, so'ng o'z ishingizga moslab kalibrlang.

3. "Xo'sh, nima bo'libdi?" sinovini e'tiborsiz qoldirish Dashboard'dagi har bir metrika bo'yicha o'zingizdan so'rang: "Bu raqam o'zgarsa, men nimani boshqacha qilaman?" Javob "hech nima" bo'lsa — metrikani olib tashlang.

4. Faqat tarixga qaraydigan dashboard'lar Kun oxiridagi hisobotlar trendlar uchun foydali, lekin bugungi muammolarning oldini ololmaydi. Avval real vaqtli ko'rinishga sarmoya kiriting, tarixiy tahlilni keyin qo'shing.

5. Navbatlar kesimida ajratmaslik Barcha navbatlar bo'yicha aralashtirilgan metrikalar muammolarni yashiradi. SLA'si 95% bo'lgan savdo navbati 60% da cho'kayotgan qo'llab-quvvatlashni bemalol niqoblaydi. Har doim navbatlar kesimidagi ko'rsatkichlarni ko'rsating.

6. Operator maxfiyligini unutish Samaradorlik dashboard'lari kuzatuv emas, rivojlantirish vositasi bo'lishi kerak. Shaxsiy ko'rsatkichlarni operator bilan yakkama-yakka muhokama qiling, wallboard'da esa jamoa o'rtachasini chiqaring. Qo'rquv emas, o'sish madaniyatini quring.

7. Sozlab qo'yib unutish Dashboard'larni takomillashtirib borish kerak. Haftada bir marta ko'rib chiqing: metrikalar hali ham dolzarbmi? Chegaraviy qiymatlar to'g'rimi? Ishda nimadir o'zgardimi? Olti oy davomida tegilmagan dashboard, ehtimol, sizni chalg'itayotgandir.

Nimadan boshlash kerak: noldan dashboard'gacha 15 daqiqada

Agar haftalab davom etadigan mustaqil sozlashni chetlab o'tib, to'liq KPI dashboard'ni bugunoq olmoqchi bo'lsangiz:

1. Astervis'ni PBX serveringizga o'rnating:

curl -fsSL https://api.astervis.io/api/releases/install.sh | bash

2. Asterisk nusxangizga ulaning:

O'rnatuvchi Asterisk konfiguratsiyasini o'zi aniqlaydi va AMI hamda CDR orqali ulanadi.

3. Brauzerni oching:

Server IP manziliga 3000-port orqali o'ting. 30 dan ortiq dashboard darhol tayyor — real vaqtli wallboard, operator kartochkalari, navbat analitikasi, trunk monitoringi, heatmap'lar va boshqalar.

4. Jamoa uchun kirishni sozlang:

Operator hisoblarini yarating va navbatlarni taqsimlang. Operator o'z ko'rsatkichlarini ko'radi. Supervayzer — o'z jamoasini. Rahbar — hammasini.

Hech qanday SQL so'rov yozish shart emas. Grafana panellarini sozlash kerak emas. Middleware'ni qo'llab-quvvatlash kerak emas. 14 kunlik bepul sinov muddatini boshlang — bank kartasi talab qilinmaydi — va call-markazingizni 15 daqiqadan kamroq vaqtda to'liq ko'rib turing.

Bepul sinovni boshlash →

Asosiy xulosalar

  1. Kerakli 20 ta KPI'ni kuzating, ularni darajalarga ajrating: real vaqtli wallboard metrikalari, operatorlar samaradorligi, operatsion samaradorlik va strategik biznes ko'rsatkichlari.

  2. Ma'lumot qayerda yotishini biling: Asterisk'da CDR — tarixiy yozuvlar, queue_log — navbat hodisalari, AMI — real vaqtli holat, CEL — qo'ng'iroq yo'lini batafsil kuzatish.

  3. Dashboard'larni aniq auditoriyaga moslab loyihalang: zal uchun wallboard, rahbarlar uchun taktik dashboard'lar, rahbariyat uchun hisobotlar. Har birining o'z vazifasi bor.

  4. Uchta yondashuv mavjud: o'zingiz qurgan Grafana (bepul, ammo qurishga 60-120 soat), QueueMetrics (eskirgan, har bir operator uchun to'lov) yoki Astervis (zamonaviy, 15 daqiqada joriy etiladi, oyiga $119 dan).

  5. Faqat dashboard emas, ogohlantirishlarni ham sozlang. Buzilganini hech kim ko'rmagan metrika foydasiz. Avtomatik eskalatsiyali ko'p bosqichli ogohlantirish tizimini joriy eting.

  6. Tipik xatolardan qoching: metrikalar ortiqchaligi, mo'ljal yo'qligi, navbatlar bo'yicha aralashtirilgan metrikalar va "sozlab qo'yib unutish" — bularning hammasi sarmoyangiz qiymatini kamaytiradi.

  7. Oddiy boshlang, tez takomillashtiring. Asosiy ko'rinishni bugun ishga tushiring, keyin haftalar davomida sayqallang. Siz haqiqatan foydalanadigan oddiy dashboard, abadiy "ishlanmoqda" holatidagi murakkabidan yaxshiroq.

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.

Ulashish