non_agent_api.php) for read-side and administrative checks, and the agent API (agc/api.php) for live agent actions such as dial, hangup, and transfer. Authentication uses API user and password sent as query parameters on every request.
This integration is for the in-house Call Center suite (agents, orders, commissions). Configure it per brand under Call Center → your center → Brand Settings → Phone Switch → ViciDial.
Prerequisites
Before you configure ElasticFunnels, obtain the following from your ViciDial administrator:- Non-agent API URL — Full HTTPS URL to
non_agent_api.php(path varies by install; often under/vicidial/non_agent_api.php). - Agent API URL — Full URL to
agc/api.php, or confirmation that it follows the standard layout relative to the non-agent URL (see API reference). - API-enabled user — A
vicidial_usersaccount (or equivalent) allowed to use the non-agent and agent APIs, with user and pass values you can place in ElasticFunnels. - Agent extensions — Each agent must use a ViciDial agent user / extension that matches what you enter in ElasticFunnels for CTI (click-to-dial and status).
- Network access — ElasticFunnels application servers must reach your dialer host over HTTPS (firewall / allowlist as required).
- Screen pop webhook — If you use incoming call context, your CTI or dialer must POST to the ElasticFunnels screen-pop webhook with enough fields to identify the caller’s phone number (see Screen pop).
Configuration fields
Setup
1
Create or verify the API user in ViciDial
Ensure a dedicated API user exists with permissions for non-agent functions (e.g.
version, agent_ingroup_info, recording_lookup) and agent API functions (external_dial, external_hangup, transfer_conference, ra_call_control as needed).2
Copy the non-agent API URL
Use the exact HTTPS URL your installation exposes for
non_agent_api.php, including path and no trailing slash issues in your load balancer or reverse proxy.3
Open ElasticFunnels brand phone switch settings
Go to Call Center → Setup → Call Centers tab → open your center → Brand Settings → Phone Switch → select ViciDial.
4
Enter credentials and URLs
Paste
api_url, api_user, and api_pass. Optionally set agent_api_url, source, and phone_code per the table above.5
Save and test connectivity
Use the connection test in the UI. Internally, this calls the non-agent API
version function and expects a successful response containing VERSION:.6
Validate with a live agent
Log in as an agent with a known extension, run click-to-dial to a test number, then verify hangup, transfer (if used), and recording link behavior.
How features work
Click-to-dial
Outbound dialing uses the agent API withfunction=external_dial. ElasticFunnels passes the agent’s extension as agent_user, normalizes the destination number to digits, and sends phone_code from metadata or from the configured default (phone_code field).
Successful responses are parsed so ElasticFunnels can track a composite call identifier when ViciDial returns a bridge-style ID in the body; otherwise the integration may fall back to extension-only tracking for hangup operations.
Screen pop
Screen pop does not pull customer data from ViciDial’s APIs directly for the lookup. When your telephony stack sends a webhook to ElasticFunnels with call metadata, the integration uses the caller phone number (from fields such ascaller_phone, caller_id, or phone) and the brand context to run an internal customer lookup (customer profile, recent orders, subscription where applicable). The merged payload is returned to the agent UI.
Configure your ViciDial / CTI integration to POST the webhook ElasticFunnels provides for screen pop, including a reliable caller ID or ANI field.
Recording URLs
Recording retrieval uses the non-agent API withfunction=recording_lookup. Parameters include the agent user, date, and optional uniqueid when available from configuration or call context. The integration parses the pipe-delimited response and extracts the recording URL from the expected column position in the last data line.
Transfer
- Blind transfer (external / simple path): agent API
transfer_conferencewithvalue=BLIND_TRANSFERand the target asphone_number. - Bridge transfer: when the active call has a non-external bridge identifier, the integration uses
ra_call_controlwithstage=EXTENSIONTRANSFERand the appropriate bridgevalue.
Hangup
- If only the agent extension is known (
EXTONLY:style id), the integration usesexternal_hangup. - When a bridge ID is present and is not the external placeholder, the integration uses
ra_call_controlwithstage=HANGUPand the bridge asvalue. - Otherwise it attempts
external_hangupfor the resolved agent user.
Troubleshooting
API reference: non-agent vs agent
Non-agent API (non_agent_api.php)
Called with GET (query string). Base authentication on every request:
Agent API (agc/api.php)
Also GET with the same user / pass pattern plus function and action-specific parameters. Used for real-time agent control:
Related
- Phone Switches — Overview of ViciDial, Five9, and Ytel in Call Center.
- Call Center overview — Suite features and navigation.