
How to Build a Real-Time VICIdial Wallboard with Node.js and Grafana
VICIdial logs everything into MySQL. Every dial attempt, every agent state change, every second of talk time, every disposition. The data is there. The problem is getting it onto a screen in a format that tells you something useful before the shift is over. The built-in realtime_report.php works, but it has scaling issues. Every browser tab running it fires its own MySQL queries on each refresh. Ten managers watching = ten times the database load. No alerting, no historical context, no way to spot a creeping drop rate until you're already past 3%. This walkthrough covers a two-layer approach: a Node.js WebSocket server that polls MySQL once and pushes snapshots to every connected viewer, paired with Grafana for visual dashboards with time-series charts, threshold gauges, and alerting. The Architecture VICIdial MySQL --> Node.js (poll every 2-3s) --> HTML Wallboard (big TV) | +-- Grafana (poll every 5-10s) --> Manager laptops, kiosk TVs The Node.js server hits three table types: vicidia
Continue reading on Dev.to DevOps
Opens in a new tab



