@vicistack/vicidial-34-new-features
v1.0.0
Published
VICIdial SVN 3848-3939: What Broke, What Improved, What to Reconfigure — ViciStack call center engineering guide
Maintainers
Readme
VICIdial SVN 3848-3939: What Broke, What Improved, What to Reconfigure
VICIdial has gone through a significant development cycle over the past eighteen months. Between SVN revisions 3848 and 3939, the codebase picked up ConfBridge support as a production-ready conferencing engine, a full PHP 8 compatibility overhaul, critical security patches, new API endpoints, ViciPhone v3.0 with modern WebRTC capabilities, two-factor authentication, and a MariaDB TIMESTAMP schema fix that touches 40 database tables. If you are running a VICIdial deployment in production today, or planning an upgrade from an older revision, this article walks through every meaningful change: what actually improved, what broke, what you need to reconfigure, and how to upgrade without taking your dialer offline. ## What Changed in VICIdial: The Quick Summary The changes across recent SVN revisions fall into seven categories. Here is the condensed version before we dig into each one. | Category | What Changed | Key Revisions | |---|---|---| | Security | Two CVEs patched (KL-001-2024-011, KL-001-2024-012). Input variable filtering added across admin and agent web interfaces. | SVN 3848+ (July 2024) | | PHP 8 Compatibility | Hundreds of files updated to eliminate deprecated function calls, implicit type conversions, and nullable parameter warnings. | SVN 3863+ (August 2024) | | ConfBridge | Production-ready MeetMe replacement integrated into the codebase. New vicidial_confbridges table, conf_engine and conf_update_interval server fields, and a replacement screen session script. | SVN 3894 (January 2025) | | MariaDB TIMESTAMP Fix | Explicit DEFAULT and ON UPDATE clauses added to TIMESTAMP fields across 40 database tables to comply with MariaDB's deprecated implicit behavior. | SVN 3898 | | API Expansion | Seven new Non-Agent API functions and the send_notification Agent API function with confetti support. | Various, through SVN 3939 | | ViciPhone v3.0 | Complete rewrite on SIP.js v0.20.1 with browser audio processing controls, regional progress tones, and settings container integration. | Concurrent with SVN 3900+ | | Two-Factor Authentication | Email, phone call, and SMS-based 2FA for both admin and agent login screens. | SVN 3800+ | Beyond these headline items, the development team also shipped Call Quota Lead Ranking recycling improvements, cross-cluster communication enhancements, a database query fix in vdc_db_query.php (SVN 3900), and the groundwork for ViciBox 13.0 running on OpenSuSE 16.0. If your system is below SVN revision 3848, stop reading and upgrade immediately. The security vulnerabilities patched in that revision allowed authenticated users to achieve full database enumeration, remote code execution, and administrative takeover. Every revision you remain behind that threshold is an active risk to your operation. > Running a VICIdial system you haven't touched in a while? Request a free audit and we will tell you exactly which revisions and configuration changes your deployment needs. ## AMD Improvements: What's Actually Different Answering machine detection in VICIdial has historically been a source of frustration. The built-in Asterisk AMD module relies on energy thresholds and silence timing to distinguish human pickups from voicemail greetings, and the accuracy varies wildly depending on carrier audio quality, greeting length, and regional telecom behavior. Recent changes to VICIdial give operators more control over how AMD results are routed, and a growing ecosystem of third-party AI-based AMD solutions has emerged that integrates cleanly with the platform. ### AMD Agent Route Options The most operationally significant AMD change in recent revisions is the maturation of the AMD Agent Route Options feature. When enabled in the Campaign Detail screen, this setting gives you granular control over which AMD detection results actually get routed to a live agent. Here is how it works. In your campaign settings, you set the Routing Extension to 8369, set the AMD Type to AMD, and enable AMD Agent Route Options. Then, in the associated Settings Container (type AMD_AGENT_OPT_Campaign), you define exactly which detection results should be sent to agents. Before AMD Agent Route Options: - AMD detected a human: call goes to agent. - AMD detected a machine: call gets dispositioned as AA (Answering Machine) or plays the Answering Machine Message. - AMD returned NOTSURE or TOOLONG: call still goes to agent, wasting agent time on ambiguous detections. After AMD Agent Route Options: - You specify exactly which results route to agents. Setting the container to HUMAN,HUMAN sends only confirmed human answers to agents. - You can remove NOTSURE and TOOLONG from the routing list, keeping only definitive detections. - You can include MAXWORDS in the agent route if you want long-greeting pickups to still reach agents. This matters because the default behavior of routing NOTSURE calls to agents was one of the biggest complaints about VICIdial AMD. Agents would pick up and hear the tail end of a voicemail greeting, waste 10-15 seconds figuring out it was a machine, then disposition and move on. Multiply that across a 200-seat floor and you are hemorrhaging productive talk time. For a detailed walkthrough of AMD configuration including cpd.conf tuning and WaitForSilence optimization, see our VICIdial AMD guide. ### CPD (Sangoma Call Progress Analysis) Settings VICIdial also supports the CPD AMD Action setting in the Campaign Detail screen, which provides an alternative detection path using Sangoma's Call Progress Analysis. When set to DISPO, detected machines are automatically dispositioned as AA (Answering Machine) or AFAX (Fax Machine) and hung up before reaching an agent. When set to MESSAGE, the call is routed to the defined Answering Machine Message instead. The recommended production settings for ViciBox 11 and 12 deployments are: - WaitForSilence: 2000,2,30 - AMD Type: AMD - AMD Agent Route: Enabled ### AI-Based AMD Integration The third-party AMD landscape has improved significantly. Solutions like AMDY.ai and VoiceDetect AMD now offer drop-in VICIdial integration that replaces Asterisk's built-in AMD module with speech-recognition-based detection. These systems transcribe the first few seconds of audio and classify the text as human or machine, achieving accuracy rates above 98% in testing while maintaining latency low enough for live transfers (typically under 3 seconds). The integration path uses WebSocket connections and JSON payloads, which means the AI AMD engine runs as a separate service that your Asterisk dialers communicate with during call setup. This is a cleaner architecture than patching Asterisk's AMD module directly, and it means you can upgrade your AMD detection independently of your VICIdial SVN revision. For operations where AMD accuracy directly impacts revenue, which is most outbound campaigns, the move from rule-based energy detection to language-based classification represents the single largest quality improvement available right now. If you want to explore what AI-based AMD looks like on your specific traffic, check our AMD optimization feature page. > Not sure if your AMD settings are costing you connects? Get a free audit and we will benchmark your current detection rates against optimized configurations. ## WebRTC Updates: Better Browser Phone Performance ViciPhone v3.0 represents a complete rewrite of VICIdial's WebRTC softphone, and the improvements are substantial enough that any deployment still running ViciPhone v2.x should prioritize the upgrade. ### SIP.js v0.20.1 and PJSIP The core change is the migration from an older SIP.js library to SIP.js v0.20.1. This is not a minor version bump. The newer SIP.js library handles WebSocket reconnection more gracefully, improves SRTP key negotiation, and resolves several edge cases around oEarly media that caused one-way audio on specific browser versions. ViciPhone v3.0 requires PJSIP on the Asterisk side, which is the correct direction. PJSIP handles multiple contacts per AOR (Address of Record) better than legacy chan_sip, which means agents can have multiple browser tabs or devices registered without the SIP stack getting confused about where to route audio. Critical configuration requirement: Your PJSIP webphone template must include rtcp_mux=yes. Without this setting, ViciPhone v3.0 will fail to establish media. This was not required in v2.x and is the most common upgrade issue we see. The full PJSIP template requirements for WebRTC are: - encryption=yes - avpf=yes - rtcp_mux=yes - Transport: WSS on port 8089 - DTLS for encryption key negotiation - Media profile: SAVPF (Secure Audio-Video Profile with Feedback, the only profile Chrome and Firefox accept for WebRTC) ### Browser Audio Processing Controls ViciPhone v3.0 adds the ability to enable or disable browser-level audio processing features through a Settings Container: - Echo Cancellation: Toggle on/off per deployment. Useful for environments where agents use headsets (echo cancellation can actually degrade quality with good headsets) versus open speakers. - Automatic Gain Control (AGC): Toggle on/off. AGC normalization can cause problems in noisy call center environments where background noise gets amplified during agent silence. These controls are configured through a ViciPhone Settings Container in VICIdial's admin panel, which means you can adjust them without touching ViciPhone code. The Settings Container approach also means future ViciPhone features can be added without requiring VICIdial code changes. ### Regional Progress Tones A small but meaningful addition: ViciPhone v3.0 can play regional progress audio instead of generic ringing when placing outbound calls. The audio file is configurable through the Settings Container with presets for North America, Europe, and the UK. For operations with agents in multiple countries, this reduces the disorientation of hearing unfamiliar ring tones. ### Auto-Conference on Registration ViciPhone v3.0 automatically joins the agent conference upon successful SIP registration, eliminating the manual step that caused agents to occasionally forget to join their conference channel. This resolves a common support ticket where agents appear logged in but cannot receive calls. ### Common WebRTC Issues and NAT Traversal The most persistent WebRTC issue across all VICIdial deployments remains NAT traversal. SIP signaling succeeds over WSS on port 8089, but RTP audio packets get trapped behind symmetric NATs. If you are experiencing one-way audio after upgrading to ViciPhone v3.0, the problem is almost certainly firewall or NAT configuration rather than a ViciPhone bug. Ensure your STUN/TURN server configuration is correct and that your firewall allows the RTP port range bidirectionally. For a comprehensive setup walkthrough including cluster-specific WebRTC considerations, see our VICIdial cluster guide. ## API Changes: What Breaks and What to Update The VICIdial API received meaningful additions across both the Agent API and Non-Agent API. If you have external integrations, CRM connectors, or automation scripts that talk to VICIdial's API layer, review this section carefully. ### New Non-Agent API Functions Seven new functions were added to the Non-Agent API (/vicidial/non_agent_api.php) between 2023 and 2025: | Function | Added | Purpose | Required User Level | |---|---|---|---| | container_list | June 2023 | Lists Settings Container information in the system | 7+ | | lead_dearchive | November 2023 | Moves leads from the archive table back to the active vicidial_list table | 8+, modify_leads | | delete_fpg_phone | January 2024 | Removes a phone number from a Filter Phone Group | 8+, modify_lists | | delete_dnc_phone | March 2024 | Removes a phone number from a DNC list | 8+, modify_lists + Delete DNC | | update_remote_agent | July 2024 | Updates remote agent settings (status, campaign_id, lines) | 8+, modify_remote_agents | | user_details | August 2024 | Returns detailed information about a single user | 7+, view_reports | | hopper_bulk_insert | July 2025 | Adds a group of lead_ids directly to the vicidial_hopper table | 8+, modify_campaigns | The hopper_bulk_insert function is particularly notable. Previously, the only way to prioritize specific leads was to manipulate rank values or use the hopper's natural ordering. Now you can inject a batch of lead_ids directly into the hopper via API, which opens up use cases like real-time lead scoring integration where an external system identifies high-priority leads and pushes them to the front of the dial queue. The lead_dearchive function addresses a long-standing operational pain point. VICIdial archives old leads to keep the vicidial_list table performant, but recovering archived leads previously required direct database access. Now it is an API call. ### New Agent API Function: send_notification The Agent API gained the send_notification function, which sends customizable messages to agents by User, User Group, or Campaign. What makes this function unusual is the confetti animation support, with configurable parameters: - show_confetti: Y/N to enable particle animation - duration: Length of animation in seconds (default 2, max 10) - maxParticleCount: Number of particles (default 2350, max 9999) - particleSpeed: Animation speed (default
About
Built by ViciStack — enterprise VoIP and call center infrastructure.
- VICIdial Hosting & Optimization
- Call Center Performance Guides
- Full Article: VICIdial SVN 3848-3939: What Broke, What Improved, What to Reconfigure
License
MIT
