Agc Vicidial.php -
agc/vicidial.php is the core script for the Agent Control Graphical User Interface (GUI) in the VICIdial open-source contact center system. It serves as the primary interface where agents manage their daily calling activities, including logging in, receiving calls, and handling dispositions. Core Functionality
Agent Interaction: This is the live operational layer where agents spend their shifts. It provides tools for manual dialing, receiving auto-dialed or inbound calls, and recording management.
Login Flow: Accessing the script requires a two-step authentication process:
Phone Login/Password: Authenticates the physical or softphone associated with the session.
Agent User/Password: Authenticates the specific agent account and assigns them to a campaign.
Real-Time Data: The interface utilizes AJAX to communicate with the server, ensuring that lead information, call statuses, and scripts are updated without reloading the full page. Configuration and Customization AGC VICIdial PHP Setup & Agent Login Guide - KingAsterisk
Since agc_vicidial.php is not a core Vicidial file (it is likely a custom or proprietary add-on), this content is structured as a Technical Documentation & Implementation Guide based on common Vicidial architecture and API hooks.
Understanding agc/vicidial.php: The Core of the Agent Experience
In the world of open-source contact centers, agc/vicidial.php is the essential gateway for agents. It serves as the primary web-based interface where call center agents log in, manage live calls, and interact with customer data in real-time. What is agc/vicidial.php?
Located within the agc (Asterisk GUI Client) directory of a standard VICIdial installation, this PHP script renders the complex, interactive dashboard that agents use throughout their shift. Unlike a simple static page, it is a dynamic application that uses heavy JavaScript and XMLHTTPRequests to communicate with the database and the Asterisk phone system. Key Functions
Agent Authentication: Manages the two-step login process involving phone credentials and user credentials.
Call Control: Provides buttons for "Resume," "Pause," "Hangup," and "Manual Dial".
Data Display: Shows lead information like names, addresses, and custom script fields during a live call.
Session Management: Assigns agents to a specific MeetMe conference session (session_id) to bridge their audio with the caller. The Standard Login Workflow
For most stock installations, the login process at http://[your-server-ip]/agc/vicidial.php follows these steps: Can the Vicidial API be used to login to Vicidial?
The agc/vicidial.php file is the heart of the VICIdial agent interface. If you are running an outbound call center or a blended contact center using this open-source software, this specific PHP script is where your agents spend 99% of their workday.
Understanding how agc/vicidial.php functions, how to optimize it, and how to troubleshoot common issues is essential for maintaining high productivity and a seamless user experience. What is agc/vicidial.php?
In the VICIdial directory structure, the agc folder stands for "Agent Graphical Console." The vicidial.php file within this folder is the primary application script that generates the agent's web-based dashboard. When an agent logs in, this script handles:
User Authentication: Validating agent credentials and campaign permissions.
Interface Rendering: Displaying the dialer controls, customer information forms, and script windows.
Real-Time Communication: Facilitating the connection between the web browser and the Asterisk telephony engine.
Data Logging: Recording call dispositions, talk time, and pause durations. Key Features of the Agent Interface
The agc/vicidial.php interface is designed for speed and high-volume calling. Key components include:
Customer Information: Automatically populates fields from the database when a call is delivered.
Scripting: Displays dynamic scripts to guide the agent through the conversation.
Manual Dialing: Allows agents to manually input numbers if permitted by the campaign settings.
Dispositions: A customizable list of outcomes (e.g., Sale, Not Interested, Answering Machine) that the agent must select to complete the call.
Callbacks: A dedicated area for agents to schedule and manage future follow-ups. Optimization Tips for Call Center Managers
Because agc/vicidial.php relies heavily on JavaScript and AJAX to communicate with the server without reloading the page, performance bottlenecks can occur. Use these tips to ensure a smooth experience: 1. Hardware and Network
Low Latency: Ensure agents have a ping under 50ms to the server to avoid "lag" when clicking buttons.
RAM Matters: Modern browsers like Chrome can be memory-intensive; ensure agent workstations have at least 8GB of RAM. 2. Server-Side Configuration
Keep it Local: If possible, host the web server on the same local network as the agents to reduce network hops.
Database Tuning: VICIdial is database-heavy. Regularly optimize your MariaDB/MySQL tables to prevent slow queries from hanging the vicidial.php interface. Troubleshooting Common agc/vicidial.php Issues
If your agents report that the screen is "white" or "stuck," look into these common culprits:
Invalid Login Credentials: Ensure the User ID and Password match the User entry in the Admin portal.
Campaign Availability: An agent cannot log into vicidial.php if there are no active campaigns assigned to their User Group.
Browser Cache: Sometimes, a browser update or a server-side change requires clearing the cache. Have agents try an "Incognito" or "Private" window first.
SSL Certificate Errors: If you are using HTTPS, an expired or self-signed certificate can block the AJAX requests necessary for the dialer to function. Security Best Practices
Exposing your agc/vicidial.php to the open internet is a major security risk. Hackers frequently scan for this specific URL to attempt "brute force" attacks on agent accounts.
IP Whitelisting: Only allow access to the /agc/ directory from known office IP addresses.
Change Default Paths: Some administrators choose to rename the folder or use an alias in Apache to hide the interface from generic bots.
Two-Factor Authentication (2FA): While not native to the basic script, implementing a 2FA layer via your web server configuration adds a vital shield of protection.
If you're looking to dive deeper into customizing the agent experience, I can help you with: Customizing the CSS to match your company branding.
Setting up Web Form integration to pass data to an external CRM.
Troubleshooting specific error codes like "No active campaign."
In the context of the VICIdial open-source contact center vicidial.php (located in the
directory) is the primary web-based interface that agents use to handle calls and manage lead data. Core Functionality Agent Login Interface
: It serves as the portal where agents input their phone credentials (phone login/password) and user credentials (username/password) to access specific campaigns. Call Control
: Agents use this page to perform actions such as manual dialing, hanging up, transferring calls, and setting "Pause" or "Ready" statuses. Lead Information Display
: It dynamically displays lead data (name, address, etc.) for the current call and allows agents to update this information in real-time. Technical Details File Location : Typically found at
In the world of open-source call centers, agc/vicidial.php is the heartbeat of the operation. It is the primary script that renders the agent interface, acting as the bridge between a human agent and the complex Asterisk engine humming in the background. The Story of a Typical Agent Session
The life of a call begins when an agent navigates to the login screen. Behind the scenes, the script expects two layers of credentials: a Phone Login (to register the SIP or IAX2 device) and a User Login (to access the campaign and lead data). The Handshake
: Once the agent clicks login, the script initiates a series of AJAX communications
. If the browser loses communication with the server for more than 30 seconds, the system marks the agent as "LAGGED," essentially a safety mechanism to prevent calls from being routed to a "ghost" agent who isn't actually connected. Ready for Action : When the agent is "Active," vicidial.php
enters a listening state. It waits for the database to signal that a lead has been dialed and bridged. When that happens, the screen transforms, instantly populating with the customer's data—name, address, and history—fetched from the vicidial_users and lead tables The Three-Way Dance
: If a call requires a specialist, the script manages the "Leave 3-way" function. The agent can park the customer, dial a third party, and then either stay on the line or use the "Leave 3way conference" button to exit the call while keeping the customer and specialist connected. Customization and Chaos : Because the interface is a complex mix of hard-coded coordinates and PHP logic, administrators often tinker with options.php
to customize how the screen behaves without breaking the core engine. When everything works, agc/vicidial.php
is invisible—a seamless portal to the customer. But when a single variable like $conf_check_attempts
is misconfigured, it can lead to "Lagged Pauses" and frustrated agents, proving that even in high-tech call centers, the smallest line of code carries the weight of the entire operation. of this script or see a troubleshooting guide for common login errors? VICIdial for
1.3 How It Appears in the Wild
Common sightings of agc vicidial.php include:
ps aux | grep agc
Output example:
asterisk 12345 0.5 1.2 250000 50000 ? S 10:15 0:03 agc vicidial.php
Or in the Asterisk CLI:
-- Executing [9991234567@default:1] AGI("SIP/trunk-00000001", "agc://vicidial.php") in new stack
5. Sample Code Skeleton
<?php
// agc_vicidial.php
// Version: 1.0
// Description: AGC integration script for Vicidial
include_once('/etc/astguiclient.conf');
include_once('/usr/share/php/DB.php');
// Connect to Vicidial DB
$db = DB::connect("mysql://$conf['db_user']:$conf['db_pass']@$conf['db_host']/$conf['db_name']");
// Retrieve incoming variables (from GET/POST or STDIN)
$phone_number = $_GET['phone_number'] ?? '';
$lead_id = $_GET['lead_id'] ?? 0;
$campaign_id = $_GET['campaign_id'] ?? '';
// Function to query AGC server
function get_agc_content($lead_id, $campaign_id)
$agc_api_url = "http://agc-server.local/api/v1/content";
$payload = json_encode([
'lead_id' => $lead_id,
'campaign' => $campaign_id
]);
$ch = curl_init($agc_api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
// Main logic
if ($phone_number && $lead_id)
$agc_data = get_agc_content($lead_id, $campaign_id);
// Example: Override CallerID with AGC provided value
if (!empty($agc_data['dynamic_callerid']))
echo "callerid_number=" . $agc_data['dynamic_callerid'] . "\n";
// Example: Inject pre-call audio file
if (!empty($agc_data['audio_file']))
echo "custom_audio=" . $agc_data['audio_file'] . "\n";
// Log to AGC database
$insert = "INSERT INTO agc_call_log (lead_id, phone_number, campaign_id, response_data, call_time)
VALUES (?, ?, ?, ?, NOW())";
$db->query($insert, [$lead_id, $phone_number, $campaign_id, json_encode($agc_data)]);
else
// Fallback to standard Vicidial dialing
echo "status=continue\n";
?>
3.3. Information Disclosure
The endpoint often returns verbose error messages, including SQL syntax errors, file paths, or internal Asterisk channel IDs. This aids attackers in reconnaissance.
Example dangerous response:
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SALES' at line 1
6.2 Validate All AGI Inputs
Vicidial’s vicidial.php accepts many parameters (e.g., phone, exten, callerid). An attacker could potentially inject Asterisk commands if input is not sanitized. Verify your version is up-to-date (release 2.14+ includes strong sanitization).
8. Performance Tuning
| Setting | Recommended Value |
|---------|------------------|
| Max execution time | 2 seconds |
| DB connection timeout | 1 second |
| Cache AGC responses | 60 seconds (using memcached) |
| AGI concurrency | Use fastagi instead of standard AGI |
agc/vicidial.php is the core script for the Agent Control Graphical User Interface (GUI) in the VICIdial open-source contact center system. It serves as the primary interface where agents manage their daily calling activities, including logging in, receiving calls, and handling dispositions. Core Functionality
Agent Interaction: This is the live operational layer where agents spend their shifts. It provides tools for manual dialing, receiving auto-dialed or inbound calls, and recording management.
Login Flow: Accessing the script requires a two-step authentication process:
Phone Login/Password: Authenticates the physical or softphone associated with the session.
Agent User/Password: Authenticates the specific agent account and assigns them to a campaign.
Real-Time Data: The interface utilizes AJAX to communicate with the server, ensuring that lead information, call statuses, and scripts are updated without reloading the full page. Configuration and Customization AGC VICIdial PHP Setup & Agent Login Guide - KingAsterisk
Since agc_vicidial.php is not a core Vicidial file (it is likely a custom or proprietary add-on), this content is structured as a Technical Documentation & Implementation Guide based on common Vicidial architecture and API hooks.
Understanding agc/vicidial.php: The Core of the Agent Experience
In the world of open-source contact centers, agc/vicidial.php is the essential gateway for agents. It serves as the primary web-based interface where call center agents log in, manage live calls, and interact with customer data in real-time. What is agc/vicidial.php?
Located within the agc (Asterisk GUI Client) directory of a standard VICIdial installation, this PHP script renders the complex, interactive dashboard that agents use throughout their shift. Unlike a simple static page, it is a dynamic application that uses heavy JavaScript and XMLHTTPRequests to communicate with the database and the Asterisk phone system. Key Functions
Agent Authentication: Manages the two-step login process involving phone credentials and user credentials.
Call Control: Provides buttons for "Resume," "Pause," "Hangup," and "Manual Dial".
Data Display: Shows lead information like names, addresses, and custom script fields during a live call.
Session Management: Assigns agents to a specific MeetMe conference session (session_id) to bridge their audio with the caller. The Standard Login Workflow
For most stock installations, the login process at http://[your-server-ip]/agc/vicidial.php follows these steps: Can the Vicidial API be used to login to Vicidial?
The agc/vicidial.php file is the heart of the VICIdial agent interface. If you are running an outbound call center or a blended contact center using this open-source software, this specific PHP script is where your agents spend 99% of their workday.
Understanding how agc/vicidial.php functions, how to optimize it, and how to troubleshoot common issues is essential for maintaining high productivity and a seamless user experience. What is agc/vicidial.php?
In the VICIdial directory structure, the agc folder stands for "Agent Graphical Console." The vicidial.php file within this folder is the primary application script that generates the agent's web-based dashboard. When an agent logs in, this script handles:
User Authentication: Validating agent credentials and campaign permissions.
Interface Rendering: Displaying the dialer controls, customer information forms, and script windows.
Real-Time Communication: Facilitating the connection between the web browser and the Asterisk telephony engine.
Data Logging: Recording call dispositions, talk time, and pause durations. Key Features of the Agent Interface
The agc/vicidial.php interface is designed for speed and high-volume calling. Key components include:
Customer Information: Automatically populates fields from the database when a call is delivered.
Scripting: Displays dynamic scripts to guide the agent through the conversation.
Manual Dialing: Allows agents to manually input numbers if permitted by the campaign settings.
Dispositions: A customizable list of outcomes (e.g., Sale, Not Interested, Answering Machine) that the agent must select to complete the call.
Callbacks: A dedicated area for agents to schedule and manage future follow-ups. Optimization Tips for Call Center Managers
Because agc/vicidial.php relies heavily on JavaScript and AJAX to communicate with the server without reloading the page, performance bottlenecks can occur. Use these tips to ensure a smooth experience: 1. Hardware and Network
Low Latency: Ensure agents have a ping under 50ms to the server to avoid "lag" when clicking buttons.
RAM Matters: Modern browsers like Chrome can be memory-intensive; ensure agent workstations have at least 8GB of RAM. 2. Server-Side Configuration
Keep it Local: If possible, host the web server on the same local network as the agents to reduce network hops.
Database Tuning: VICIdial is database-heavy. Regularly optimize your MariaDB/MySQL tables to prevent slow queries from hanging the vicidial.php interface. Troubleshooting Common agc/vicidial.php Issues
If your agents report that the screen is "white" or "stuck," look into these common culprits:
Invalid Login Credentials: Ensure the User ID and Password match the User entry in the Admin portal.
Campaign Availability: An agent cannot log into vicidial.php if there are no active campaigns assigned to their User Group.
Browser Cache: Sometimes, a browser update or a server-side change requires clearing the cache. Have agents try an "Incognito" or "Private" window first.
SSL Certificate Errors: If you are using HTTPS, an expired or self-signed certificate can block the AJAX requests necessary for the dialer to function. Security Best Practices
Exposing your agc/vicidial.php to the open internet is a major security risk. Hackers frequently scan for this specific URL to attempt "brute force" attacks on agent accounts.
IP Whitelisting: Only allow access to the /agc/ directory from known office IP addresses.
Change Default Paths: Some administrators choose to rename the folder or use an alias in Apache to hide the interface from generic bots.
Two-Factor Authentication (2FA): While not native to the basic script, implementing a 2FA layer via your web server configuration adds a vital shield of protection.
If you're looking to dive deeper into customizing the agent experience, I can help you with: Customizing the CSS to match your company branding.
Setting up Web Form integration to pass data to an external CRM.
Troubleshooting specific error codes like "No active campaign."
In the context of the VICIdial open-source contact center vicidial.php (located in the
directory) is the primary web-based interface that agents use to handle calls and manage lead data. Core Functionality Agent Login Interface
: It serves as the portal where agents input their phone credentials (phone login/password) and user credentials (username/password) to access specific campaigns. Call Control
: Agents use this page to perform actions such as manual dialing, hanging up, transferring calls, and setting "Pause" or "Ready" statuses. Lead Information Display
: It dynamically displays lead data (name, address, etc.) for the current call and allows agents to update this information in real-time. Technical Details File Location : Typically found at
In the world of open-source call centers, agc/vicidial.php is the heartbeat of the operation. It is the primary script that renders the agent interface, acting as the bridge between a human agent and the complex Asterisk engine humming in the background. The Story of a Typical Agent Session
The life of a call begins when an agent navigates to the login screen. Behind the scenes, the script expects two layers of credentials: a Phone Login (to register the SIP or IAX2 device) and a User Login (to access the campaign and lead data). The Handshake
: Once the agent clicks login, the script initiates a series of AJAX communications
. If the browser loses communication with the server for more than 30 seconds, the system marks the agent as "LAGGED," essentially a safety mechanism to prevent calls from being routed to a "ghost" agent who isn't actually connected. Ready for Action : When the agent is "Active," vicidial.php
enters a listening state. It waits for the database to signal that a lead has been dialed and bridged. When that happens, the screen transforms, instantly populating with the customer's data—name, address, and history—fetched from the vicidial_users and lead tables The Three-Way Dance
: If a call requires a specialist, the script manages the "Leave 3-way" function. The agent can park the customer, dial a third party, and then either stay on the line or use the "Leave 3way conference" button to exit the call while keeping the customer and specialist connected. Customization and Chaos : Because the interface is a complex mix of hard-coded coordinates and PHP logic, administrators often tinker with options.php
to customize how the screen behaves without breaking the core engine. When everything works, agc/vicidial.php
is invisible—a seamless portal to the customer. But when a single variable like $conf_check_attempts
is misconfigured, it can lead to "Lagged Pauses" and frustrated agents, proving that even in high-tech call centers, the smallest line of code carries the weight of the entire operation. of this script or see a troubleshooting guide for common login errors? VICIdial for
1.3 How It Appears in the Wild
Common sightings of agc vicidial.php include:
ps aux | grep agc
Output example:
asterisk 12345 0.5 1.2 250000 50000 ? S 10:15 0:03 agc vicidial.php
Or in the Asterisk CLI:
-- Executing [9991234567@default:1] AGI("SIP/trunk-00000001", "agc://vicidial.php") in new stack
5. Sample Code Skeleton
<?php
// agc_vicidial.php
// Version: 1.0
// Description: AGC integration script for Vicidial
include_once('/etc/astguiclient.conf');
include_once('/usr/share/php/DB.php');
// Connect to Vicidial DB
$db = DB::connect("mysql://$conf['db_user']:$conf['db_pass']@$conf['db_host']/$conf['db_name']");
// Retrieve incoming variables (from GET/POST or STDIN)
$phone_number = $_GET['phone_number'] ?? '';
$lead_id = $_GET['lead_id'] ?? 0;
$campaign_id = $_GET['campaign_id'] ?? '';
// Function to query AGC server
function get_agc_content($lead_id, $campaign_id)
$agc_api_url = "http://agc-server.local/api/v1/content";
$payload = json_encode([
'lead_id' => $lead_id,
'campaign' => $campaign_id
]);
$ch = curl_init($agc_api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
// Main logic
if ($phone_number && $lead_id)
$agc_data = get_agc_content($lead_id, $campaign_id);
// Example: Override CallerID with AGC provided value
if (!empty($agc_data['dynamic_callerid']))
echo "callerid_number=" . $agc_data['dynamic_callerid'] . "\n";
// Example: Inject pre-call audio file
if (!empty($agc_data['audio_file']))
echo "custom_audio=" . $agc_data['audio_file'] . "\n";
// Log to AGC database
$insert = "INSERT INTO agc_call_log (lead_id, phone_number, campaign_id, response_data, call_time)
VALUES (?, ?, ?, ?, NOW())";
$db->query($insert, [$lead_id, $phone_number, $campaign_id, json_encode($agc_data)]);
else
// Fallback to standard Vicidial dialing
echo "status=continue\n";
?>
3.3. Information Disclosure
The endpoint often returns verbose error messages, including SQL syntax errors, file paths, or internal Asterisk channel IDs. This aids attackers in reconnaissance.
Example dangerous response:
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SALES' at line 1
6.2 Validate All AGI Inputs
Vicidial’s vicidial.php accepts many parameters (e.g., phone, exten, callerid). An attacker could potentially inject Asterisk commands if input is not sanitized. Verify your version is up-to-date (release 2.14+ includes strong sanitization).
8. Performance Tuning
| Setting | Recommended Value |
|---------|------------------|
| Max execution time | 2 seconds |
| DB connection timeout | 1 second |
| Cache AGC responses | 60 seconds (using memcached) |
| AGI concurrency | Use fastagi instead of standard AGI |