ViciJS — TypeScript SDK for ViciDial
The definitive integration library for ViciDial. Type-safe, zero-dependency, battle-tested against the official API documentation.
Install via npm
npm install @thornebridge/vicijs
Why ViciJS
ViciDial's API returns pipe-delimited plaintext over HTTP GET with credentials in query strings. Every integration today is raw fetch calls, manual string splitting, and zero type safety. ViciJS fixes all of that.
Full Type SafetyEvery parameter, response field, and enum value is typed. Your IDE knows what's valid before you hit send.
Structured ErrorsCatch ViciAuthError, ViciPermissionError, ViciNotFoundError, ViciValidationError, ViciTimeoutError individually.
Response SchemasBuilt-in field schemas map pipe-delimited output to named properties. No more counting pipes.
IsomorphicWorks in Node.js 18+ and browsers. Uses native fetch. ESM + CJS dual build with full .d.ts declarations.
Two Clients, Full Coverage
| Client | Endpoint | Functions | Use Case |
ViciAgent | /agc/api.php | 31 | Agent session control — dial, pause, transfer, park, record, hangup |
ViciAdmin | /vicidial/non_agent_api.php | 60 | Administration — leads, users, campaigns, lists, DIDs, DNC, monitoring, reporting |
Verified Against Documentation
Every parameter, enum value, and function name has been cross-referenced against the official ViciDial documentation through 5 automated audit passes.
Quickstart
Installation
npm install @thornebridge/vicijs
Agent API — Control Agent Sessions
import { ViciAgent } from 'vicijs';
const agent = new ViciAgent({
baseUrl: 'https://dialer.example.com',
user: 'apiuser',
pass: 'apipass',
agentUser: '1001',
});
// Dial a number
await agent.dial({ value: '5551234567', search: 'YES' });
// Pause / resume
await agent.pause('PAUSE');
await agent.pause('RESUME');
// Transfer to another group
await agent.transferConference({
value: 'LOCAL_CLOSER',
ingroupChoices: 'SALESLINE',
});
// Hangup and disposition
await agent.hangup();
await agent.setStatus({ value: 'SALE' });
Admin API — Manage Everything Else
import { ViciAdmin } from 'vicijs';
const admin = new ViciAdmin({
baseUrl: 'https://dialer.example.com',
user: 'apiuser',
pass: 'apipass',
});
// Add a lead
await admin.leads.add({
phoneNumber: '5551234567',
listId: 101,
firstName: 'John',
lastName: 'Doe',
});
// Monitor an agent in real-time
const status = await admin.monitoring.agentStatus({
agentUser: '1001',
});
Configuration
| Option | Type | Default | Description |
baseUrl | string | — | ViciDial server URL (required) |
user | string | — | API username (required) |
pass | string | — | API password (required) |
agentUser | string | — | Agent user (ViciAgent only, required) |
source | string | 'vicijs' | API call source identifier (max 20 chars) |
timeout | number | 30000 | Request timeout in milliseconds |
fetch | function | global fetch | Custom fetch for testing/proxying |
Agent API Reference
The ViciAgent class wraps all 31 functions of the ViciDial Agent API at /agc/api.php. Every method requires the agent to be logged into a ViciDial session.
Call Control
| Method | API Function | Description |
agent.hangup() | external_hangup | Hang up the current customer call |
agent.dial(params) | external_dial | Place a manual dial call (14 params: phone, lead_id, search, preview, etc.) |
agent.previewDialAction(action) | preview_dial_action | SKIP, DIALONLY, ALTDIAL, ADR3DIAL, FINISH |
agent.sendDtmf(value) | send_dtmf | Send DTMF tones (P=#, S=*, Q=silence) |
agent.transferConference(params) | transfer_conference | HANGUP_XFER, BLIND_TRANSFER, LOCAL_CLOSER, DIAL_WITH_CUSTOMER, etc. |
agent.parkCall(action) | park_call | PARK_CUSTOMER, GRAB_CUSTOMER, PARK_IVR_CUSTOMER, etc. (9 actions) |
agent.raCallControl(params) | ra_call_control | Remote agent: HANGUP, EXTENSIONTRANSFER, INGROUPTRANSFER |
agent.switchLead(params) | switch_lead | Switch lead_id on a live inbound call |
agent.callsInQueueCount() | calls_in_queue_count | Calls waiting that could route to this agent |
agent.callAgent() | call_agent | Call the agent's registered phone |
Agent State
| Method | API Function | Description |
agent.pause(action) | external_pause | PAUSE or RESUME |
agent.setStatus(params) | external_status | Set disposition (with optional callback scheduling) |
agent.logout() | logout | Log the agent out |
agent.pauseCode(code) | pause_code | Assign a pause code (agent must be paused) |
agent.changeIngroups(params) | change_ingroups | CHANGE, REMOVE, or ADD inbound groups |
agent.setTimerAction(params) | set_timer_action | Trigger action after N seconds (WEBFORM, D1_DIAL, etc.) |
Lead Management
| Method | API Function | Description |
agent.addLead(params) | external_add_lead | Add lead to agent's manual dial queue (26 fields) |
agent.updateFields(params) | update_fields | Update customer fields on agent screen (25+ fields) |
agent.refreshPanel(params) | refresh_panel | Reload form/script/email/chat/callback panels |
Recording
| Method | API Function | Description |
agent.recording(params) | recording | START, STOP, or STATUS |
agent.stereoRecording(params) | stereo_recording | BEGIN, END, or STATUS |
agent.audioPlayback(params) | audio_playback | PLAY, STOP, PAUSE, RESUME, RESTART |
Notifications & Misc
| Method | API Function | Description |
agent.sendNotification(params) | send_notification | Text alerts + confetti effects to agent screens |
agent.vmMessage(params) | vm_message | Custom voicemail message for VM button |
agent.forceFronterLeave3Way(params) | force_fronter_leave_3way | Force fronter to exit 3-way call |
agent.forceFronterAudioStop(params) | force_fronter_audio_stop | Force fronter to stop audio playback |
agent.webphoneUrl(action) | webphone_url | DISPLAY or LAUNCH the webphone URL |
agent.version() | version | API version, build, date |
agent.webserver() | webserver | Server config, timezone, specs |
Admin API Reference
The ViciAdmin class wraps all 61 functions of the ViciDial Non-Agent API at /vicidial/non_agent_api.php, organized into 10 domain sub-clients.
admin.leads — Lead Management (11 functions)
| Method | API Function | Description |
leads.add(params) | add_lead | Add a new lead (45+ params including DNC check, hopper, callbacks) |
leads.update(params) | update_lead | Update a lead (50+ params with search, callbacks, hopper) |
leads.batchUpdate(params) | batch_update_lead | Update multiple leads at once (max 100) |
leads.fieldInfo(params) | lead_field_info | Get a single field value |
leads.allInfo(params) | lead_all_info | Get all lead data with optional custom fields |
leads.callbackInfo(params) | lead_callback_info | Scheduled callback data |
leads.search(params) | lead_search | Search by phone number |
leads.statusSearch(params) | lead_status_search | Search by status and date |
leads.cccInfo(params) | ccc_lead_info | Cross-cluster call lead data |
leads.callidInfo(params) | callid_info | Call info by call ID |
leads.dearchive(leadId) | lead_dearchive | Move from archive to active |
admin.users — User Management (6 functions)
| Method | API Function | Description |
users.add(params) | add_user | Add user account (20 params) |
users.update(params) | update_user | Update user settings (28 params) |
users.copy(params) | copy_user | Duplicate an existing user |
users.updateRemoteAgent(params) | update_remote_agent | Configure remote agent |
users.details(params) | user_details | Get user account info |
users.agentCampaigns(params) | agent_campaigns | Allowed campaigns/ingroups |
admin.monitoring — Real-Time (6 functions)
| Method | API Function | Description |
monitoring.blindMonitor(params) | blind_monitor | MONITOR, BARGE, BARGESWAP, HIJACK, WHISPER |
monitoring.agentIngroupInfo(params) | agent_ingroup_info | In-group and outbound info for agent |
monitoring.agentStatus(params) | agent_status | Real-time status for one agent |
monitoring.userGroupStatus(params) | user_group_status | Status for user groups |
monitoring.inGroupStatus(params) | in_group_status | Status for inbound groups |
monitoring.loggedInAgents(params) | logged_in_agents | All logged-in agents |
admin.reporting — Data Export (6 functions)
| Method | API Function | Description |
reporting.recordingLookup(params) | recording_lookup | Search call recordings |
reporting.didLogExport(params) | did_log_export | Inbound calls to a DID |
reporting.agentStatsExport(params) | agent_stats_export | Agent activity statistics |
reporting.callStatusStats(params) | call_status_stats | Call counts by campaign/ingroup |
reporting.callDispoReport(params) | call_dispo_report | Disposition breakdown |
reporting.phoneNumberLog(params) | phone_number_log | Call history for phone numbers |
Other Domains
| Domain | Functions | Methods |
admin.campaigns | 4 | update, list, hopperList, hopperBulkInsert |
admin.lists | 4 | add, update, info, customFields |
admin.phones | 4 | add, update, addAlias, updateAlias |
admin.dids | 3 | add, copy, update |
admin.dnc | 4 | addPhone, deletePhone, addFpgPhone, deleteFpgPhone |
admin.system | 12 | version, soundsList, mohList, vmList, serverRefresh, checkPhoneNumber, addGroupAlias, updateCidGroupEntry, updateAltUrl, updatePresets, updateLogEntry, containerList |
Error Handling
ViciJS throws typed errors for every failure mode. All errors extend ViciError and include the raw ViciDial response.
Error Hierarchy
| Class | When Thrown | Properties |
ViciError | Base class — catches all API errors | function, details, raw |
ViciAuthError | Invalid user/pass, "no user found" | function, details, raw |
ViciPermissionError | Insufficient user_level or feature flag | function, details, raw |
ViciNotFoundError | Lead, user, campaign doesn't exist | function, details, raw |
ViciValidationError | Duplicates, invalid params, disabled features | function, details, raw |
ViciHttpError | Non-2xx HTTP response | statusCode |
ViciTimeoutError | Request exceeded configured timeout | timeoutMs |
Usage
import {
ViciValidationError,
ViciAuthError,
ViciTimeoutError,
} from 'vicijs';
try {
await admin.leads.add({ phoneNumber: '5551234567', listId: 101 });
} catch (err) {
if (err instanceof ViciTimeoutError) {
console.log(`Timed out after ${err.timeoutMs}ms`);
} else if (err instanceof ViciValidationError) {
console.log('Validation:', err.details);
console.log('Raw:', err.raw);
} else if (err instanceof ViciAuthError) {
console.log('Check credentials');
}
}
Error Classification
ViciDial errors are automatically classified by message pattern:
| Pattern in Message | Error Class |
| "no user found", "auth " | ViciAuthError |
| "PERMISSION", "NOT ALLOWED", "ACCESS" | ViciPermissionError |
| "NOT FOUND", "DOES NOT EXIST", "NOT LOGGED IN", "NO MATCHES" | ViciNotFoundError |
| "DUPLICATE", "ALREADY EXISTS", "INVALID", "NOT VALID", "DISABLED" | ViciValidationError |
Webhooks & Callbacks
ViciDial can send HTTP requests to your server when events occur — calls answered, dispositions set, agents paused, leads created. ViciJS provides typed parsers, URL builders, and an event router for all 7 webhook types.
Webhook Types (7)
| Type | Trigger | Req | Configured In |
agent_event | Agent screen AJAX push (49 event types) | | Campaign → Agent Events Push URL |
dispo_callback | Agent submits a disposition | | Campaign → Dispo Call URL |
start_call | Call routes to agent | | Campaign → Start Call URL |
no_agent | Drop, timeout, busy — no agent available | | Campaign → No Agent Call URL |
add_lead | Inbound lead created (In-Groups only) | | In-Group → Add Lead URL |
dead_call | Customer hangs up mid-call | | Campaign → Dead Call Trigger URL |
pause_max | Agent exceeds max pause time | | Campaign → Pause Max URL |
Building Callback URLs
Use buildCallbackUrl() to construct URLs with ViciDial's --A--variable--B-- template syntax. Paste the output into your ViciDial campaign settings.
import { buildCallbackUrl, CallbackVariable } from '@thornebridge/vicijs';
const url = buildCallbackUrl({
baseUrl: 'https://hooks.example.com/vici/dispo',
variables: [
CallbackVariable.LEAD_ID,
CallbackVariable.DISPO,
CallbackVariable.PHONE_NUMBER,
CallbackVariable.TALK_TIME,
CallbackVariable.RECORDING_FILENAME,
],
staticParams: { type: 'dispo_callback' },
});
// → "https://hooks.example.com/vici/dispo?type=dispo_callback&lead_id=--A--lead_id--B--&..."
For Agent Events Push, use the convenience function:
import { buildEventPushUrl } from '@thornebridge/vicijs';
const eventUrl = buildEventPushUrl(
'https://hooks.example.com/vici/events',
{ type: 'agent_event' },
);
// Includes: user, event, message, lead_id, counter, epoch, agent_log_id
For cross-origin requests from the agent screen, wrap with wrapWithGet2Post():
import { wrapWithGet2Post } from '@thornebridge/vicijs';
const proxied = wrapWithGet2Post({
externalUrl: eventUrl,
type: 'event',
});
// → "get2post.php?uniqueid=--A--epoch--B--.--A--agent_log_id--B--&type=event&HTTPURLTOPOST=..."
Webhook Router
The ViciWebhookRouter parses incoming requests and dispatches to typed handlers.
import { ViciWebhookRouter, AgentEvent } from '@thornebridge/vicijs';
const router = new ViciWebhookRouter();
// Handle by webhook type
router.on('dispo_callback', (payload) => {
console.log(`Lead ${payload.lead_id} dispo: ${payload.dispo}`);
console.log(`Talk time: ${payload.talk_time}s`);
});
router.on('start_call', (payload) => {
console.log(`Call started: ${payload.phone_number}`);
});
router.on('dead_call', (payload) => {
console.log(`Customer hung up: ${payload.lead_id}`);
});
// Handle specific agent events
router.onEvent(AgentEvent.CALL_ANSWERED, (payload) => {
console.log(`Agent ${payload.user} answered a call`);
});
router.onEvent(AgentEvent.DISPO_SET, (payload) => {
console.log(`Agent ${payload.user} set disposition`);
});
// Express integration
app.get('/vici/webhook', (req, res) => {
router.handle(req.url); // auto-detects type from ?type= param
res.send('OK');
});
// Or use separate routes with explicit types
app.get('/vici/dispo', (req, res) => {
router.handleAs('dispo_callback', req.url);
res.send('OK');
});
Direct Parsing
Parse webhooks without a router using the individual parsers:
import {
parseDispoCallback,
parseAgentEvent,
parseStartCallback,
parseNoAgentCallback,
parseAddLeadCallback,
parseDeadCallCallback,
parsePauseMaxCallback,
} from '@thornebridge/vicijs';
// Parse from URL, query string, or URLSearchParams
const payload = parseDispoCallback(req.url);
console.log(payload.dispo); // 'SALE'
console.log(payload.phone_number); // '5551234567'
console.log(payload.recording_filename); // '20250115-103000_1001'
Callback Variables (103)
All 103 ViciDial callback URL template variables are available via the CallbackVariable enum, organized by category:
| Category | Variables | Req | Count |
| Lead Data | lead_id, vendor_lead_code, phone_number, first_name, last_name, email, + 21 more | | 27 |
| Call/Session | campaign, uniqueid, call_id, epoch, session_id, server_ip, + 14 more | | 20 |
| User | user, fullname, user_group, agent_email, user_custom_one–five | | 9 |
| Disposition | dispo, talk_time, call_notes, callback_lead_status, callback_datetime, term_reason, status | | 7 |
| Recording | recording_filename, recording_id | | 2 |
| Scripts/Presets | camp_script, in_script, script_width/height, preset_number_a–f, preset_dtmf_a–b | | 12 |
| DID Fields | did_id, did_pattern, did_description, did_custom_one–five, did_carrier_description | | 10 |
| In-Group Custom | ig_custom_one–five | | 5 |
| Campaign Custom | camp_custom_one–five | | 5 |
| List Metadata | list_description, list_name | | 2 |
| Agent Event Push | event, message, counter | | 3 |
Full API Reference
Every interface, every parameter, every type. 80 response schemas, 103 callback variables. Generated from source.
Response Parsing
ViciDial returns pipe-delimited text. Use built-in schemas to map fields:
import { mapFields, ADMIN_SCHEMAS } from 'vicijs';
const result = await admin.leads.allInfo({ leadId: 12345 });
const lead = mapFields(result.rawData, ADMIN_SCHEMAS.lead_all_info);
lead.first_name; // 'John'
lead.phone_number; // '5551234567'
lead.status; // 'SALE'
Agent API — ViciAgent
Endpoint: /agc/api.php — All methods require agentUser in config.
VersionResponse VersionResponse
| Parameter | Type | Req | Description |
version | string | | |
build | string | | |
date | string | | |
epoch | string | | |
WebserverResponse WebserverResponse
| Parameter | Type | Req | Description |
timezone | string | | |
now | string | | |
activeExt | string | | |
agentSession | string | | |
webProtocol | string | | |
phpVersion | string | | |
serverGmt | string | | |
DialParams external_dial
| Parameter | Type | Req | Description |
value | string | | Phone number to dial, or "MANUALNEXT" |
leadId | number | | Lead ID to dial (overrides value) |
phoneCode | string | | |
search | "YES", "NO" | | |
preview | "YES", "NO" | | |
focus | "YES", "NO" | | |
vendorId | string | | |
dialPrefix | string | | |
groupAlias | string | | |
vtigerCallback | "YES", "NO" | | |
altUser | string | | |
altDial | AltDialValue | | |
dialIngroup | string | | |
outboundCid | string | | |
ExternalStatusParams external_status
| Parameter | Type | Req | Description |
value | string | Yes | Disposition status code |
callbackDatetime | string | | |
callbackType | CallbackType | | |
callbackComments | string | | |
qmDispoCode | string | | |
ChangeIngroupsParams change_ingroups
| Parameter | Type | Req | Description |
value | InGroupChangeMode | Yes | |
blended | BlendedMode | Yes | |
ingroupChoices | string | | |
setAsDefault | "YES", "NO" | | |
UpdateFieldsParams update_fields
| Parameter | Type | Req | Description |
firstName | string | | |
lastName | string | | |
middleInitial | string | | |
title | string | | |
phoneNumber | string | | |
phoneCode | string | | |
address1 | string | | |
address2 | string | | |
address3 | string | | |
altPhone | string | | |
city | string | | |
state | string | | |
province | string | | |
postalCode | string | | |
countryCode | string | | |
email | string | | |
gender | string | | |
dateOfBirth | string | | |
comments | string | | |
securityPhrase | string | | |
sourceId | string | | |
vendorLeadCode | string | | |
gmtOffsetNow | string | | |
rank | number | | |
owner | string | | |
formreload | 1 | | |
scriptreload | 1 | | |
script2reload | 1 | | |
emailreload | 1 | | |
chatreload | 1 | | |
SetTimerActionParams set_timer_action
| Parameter | Type | Req | Description |
value | TimerAction | Yes | |
notes | string | | |
rank | number | | Seconds elapsed before action triggers |
RaCallControlParams ra_call_control
| Parameter | Type | Req | Description |
value | string | Yes | Call ID from CallerIDname or SIP header |
stage | RaCallControlStage | Yes | |
ingroupChoices | string | | |
phoneNumber | string | | |
status | string | | |
TransferConferenceParams transfer_conference
| Parameter | Type | Req | Description |
value | TransferConferenceAction | Yes | |
phoneNumber | string | | |
ingroupChoices | string | | |
consultative | "YES", "NO" | | |
dialOverride | "YES", "NO" | | |
groupAlias | string | | |
cidChoice | CidChoice | | |
multiDialPhones | string | | |
mdCheck | "YES", "NO" | | |
twCheck | "YES", "NO" | | |
RecordingParams recording
| Parameter | Type | Req | Description |
value | RecordingAction | Yes | |
stage | string | | Text appended to filename (max 14 chars) |
StereoRecordingParams stereo_recording
| Parameter | Type | Req | Description |
value | StereoRecordingAction | Yes | |
stage | string | | Text appended to filename (max 14 chars) |
AudioPlaybackParams audio_playback
| Parameter | Type | Req | Description |
stage | AudioPlaybackStage | Yes | |
value | string | | Audio filename without extension (required for PLAY) |
dialOverride | "Y", "N" | | |
SwitchLeadParams switch_lead
| Parameter | Type | Req | Description |
leadId | number | | |
vendorLeadCode | string | | |
ForceFronterParams force_fronter_leave_3way
| Parameter | Type | Req | Description |
value | FronterSearchScope | Yes | |
leadId | number | | |
SendNotificationParams send_notification
| Parameter | Type | Req | Description |
recipientType | NotificationRecipientType | Yes | |
recipient | string | Yes | |
notificationDate | string | | |
notificationText | string | | |
textSize | number | | |
textFont | string | | |
textWeight | string | | |
textColor | string | | |
showConfetti | "Y", "N" | | |
duration | number | | |
maxParticleCount | number | | |
particleSpeed | number | | |
VmMessageParams vm_message
| Parameter | Type | Req | Description |
value | string | Yes | Audio file(s) — single filename or pipe-separated list |
leadId | number | | |
RefreshPanelParams refresh_panel
| Parameter | Type | Req | Description |
formreload | 1 | | |
scriptreload | 1 | | |
script2reload | 1 | | |
emailreload | 1 | | |
chatreload | 1 | | |
callbacksreload | 1 | | |
ExternalAddLeadParams external_add_lead
| Parameter | Type | Req | Description |
phoneNumber | string | | |
phoneCode | string | | |
dncCheck | "YES", "NO" | | |
campaignDncCheck | "YES", "NO" | | |
firstName | string | | |
lastName | string | | |
address1 | string | | |
address2 | string | | |
address3 | string | | |
altPhone | string | | |
city | string | | |
comments | string | | |
countryCode | string | | |
dateOfBirth | string | | |
email | string | | |
gender | string | | |
gmtOffsetNow | string | | |
middleInitial | string | | |
postalCode | string | | |
province | string | | |
securityPhrase | string | | |
sourceId | string | | |
state | string | | |
title | string | | |
vendorLeadCode | string | | |
rank | number | | |
owner | string | | |
WebphoneUrlResponse WebphoneUrlResponse
| Parameter | Type | Req | Description |
url | string | Yes | |
StLoginLogParams st_login_log
| Parameter | Type | Req | Description |
value | string | Yes | CRM AgentID to lookup |
vendorId | string | Yes | CRM TeamID to associate |
Admin API — ViciAdmin
Endpoint: /vicidial/non_agent_api.php
Leads (admin.leads)
AddLeadParams add_lead
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | |
phoneCode | string | | |
listId | number | | |
dncCheck | DNCCheck | | |
campaignDncCheck | DNCCheck | | |
campaignId | string | | |
addToHopper | "Y", "N" | | |
hopperPriority | number | | |
hopperLocalCallTimeCheck | "Y", "N" | | |
duplicateCheck | DuplicateCheck | string | | |
usacanPrefixCheck | "Y", "N" | | |
usacanAreacodeCheck | "Y", "N" | | |
nanpaAcPrefixCheck | "Y", "N" | | |
customFields | "Y", "N" | | |
tzMethod | TZMethod | | |
lookupState | "Y", "N" | | |
callback | "Y", "N" | | |
callbackStatus | string | | |
callbackDatetime | string | | |
callbackType | CallbackType | | |
callbackUser | string | | |
callbackComments | string | | |
listExistsCheck | "Y", "N" | | |
vendorLeadCode | string | | |
sourceId | string | | |
gmtOffsetNow | string | | |
title | string | | |
firstName | string | | |
middleInitial | string | | |
lastName | string | | |
address1 | string | | |
address2 | string | | |
address3 | string | | |
city | string | | |
state | string | | |
province | string | | |
postalCode | string | | |
countryCode | string | | |
gender | Gender | | |
dateOfBirth | string | | |
altPhone | string | | |
email | string | | |
securityPhrase | string | | |
comments | string | | |
multiAltPhones | string | | |
rank | number | | |
owner | string | | |
entryListId | number | | |
UpdateLeadParams update_lead
| Parameter | Type | Req | Description |
leadId | number | | |
vendorLeadCode | string | | |
phoneNumber | string | | |
searchMethod | SearchMethod | string | | |
searchLocation | SearchLocation | | |
listId | number | | List to search in when search_location=LIST, or list for insert_if_not_found |
campaignId | string | | Campaign ID, required for callbacks |
insertIfNotFound | "Y", "N" | | |
records | number | | |
noUpdate | "Y", "N" | | |
customFields | "Y", "N" | | |
deleteLead | "Y", "N" | | |
deleteCfData | "Y", "N" | | |
resetLead | "Y", "N" | | |
updatePhoneNumber | "Y", "N" | | |
listExistsCheck | "Y", "N" | | |
archivedLead | "Y", "N" | | |
callback | "Y", "N", "REMOVE" | | |
callbackStatus | string | | |
callbackDatetime | string | | |
callbackType | CallbackType | | |
callbackUser | string | | |
callbackComments | string | | |
addToHopper | "Y", "N" | | |
removeFromHopper | "Y", "N" | | |
hopperPriority | number | | |
hopperLocalCallTimeCheck | "Y", "N" | | |
userField | string | | |
listIdField | number | | |
status | string | | |
sourceId | string | | |
gmtOffsetNow | string | | |
title | string | | |
firstName | string | | |
middleInitial | string | | |
lastName | string | | |
address1 | string | | |
address2 | string | | |
address3 | string | | |
city | string | | |
state | string | | |
province | string | | |
postalCode | string | | |
countryCode | string | | |
gender | Gender | | |
dateOfBirth | string | | |
altPhone | string | | |
email | string | | |
securityPhrase | string | | |
comments | string | | |
rank | number | | |
owner | string | | |
calledCount | number | | |
phoneCode | string | | |
entryListId | number | | |
forceEntryListId | number | | |
multiAltPhones | string | | |
BatchUpdateLeadParams batch_update_lead
| Parameter | Type | Req | Description |
leadIds | string | Yes | Comma-separated lead IDs (max 100) |
records | number | | |
listExistsCheck | "Y", "N" | | |
resetLead | "Y", "N" | | |
archivedLead | "Y", "N" | | |
userField | string | | |
listIdField | number | | |
status | string | | |
vendorLeadCode | string | | |
sourceId | string | | |
gmtOffsetNow | string | | |
title | string | | |
firstName | string | | |
middleInitial | string | | |
lastName | string | | |
address1 | string | | |
address2 | string | | |
address3 | string | | |
city | string | | |
state | string | | |
province | string | | |
postalCode | string | | |
countryCode | string | | |
gender | Gender | | |
dateOfBirth | string | | |
altPhone | string | | |
email | string | | |
securityPhrase | string | | |
comments | string | | |
rank | number | | |
owner | string | | |
calledCount | number | | |
phoneCode | string | | |
LeadFieldInfoParams lead_field_info
| Parameter | Type | Req | Description |
leadId | number | Yes | |
fieldName | string | Yes | |
customFields | "Y", "N" | | |
listId | number | | |
archivedLead | "Y", "N" | | |
LeadAllInfoParams lead_all_info extends OutputParams
| Parameter | Type | Req | Description |
leadId | number | | |
phoneNumber | string | | |
customFields | "Y", "N" | | |
forceEntryListId | number | | |
archivedLead | "Y", "N" | | |
LeadCallbackInfoParams lead_callback_info extends OutputParams
| Parameter | Type | Req | Description |
leadId | number | Yes | |
searchLocation | CallbackSearchLocation | | |
LeadSearchParams lead_search
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | |
records | number | | |
archivedLead | "Y", "N" | | |
header | "YES", "NO" | | |
LeadStatusSearchParams lead_status_search
| Parameter | Type | Req | Description |
status | string | | |
date | string | | |
leadId | number | | |
customFields | "Y", "N" | | |
listId | number | | |
archivedLead | "Y", "N" | | |
CccLeadInfoParams ccc_lead_info extends OutputParams
| Parameter | Type | Req | Description |
callId | string | Yes | |
CallidInfoParams callid_info extends OutputParams
| Parameter | Type | Req | Description |
callId | string | Yes | |
detail | "YES", "NO" | | |
Users (admin.users)
AddUserParams add_user
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
agentPass | string | Yes | |
agentUserLevel | number | Yes | |
agentFullName | string | Yes | |
agentUserGroup | string | Yes | |
phoneLogin | string | | |
phonePass | string | | |
hotkeysActive | 0 | 1 | | |
voicemailId | string | | |
email | string | | |
customOne | string | | |
customTwo | string | | |
customThree | string | | |
customFour | string | | |
customFive | string | | |
wrapupSecondsOverride | number | | |
agentChooseIngroups | 0 | 1 | | |
agentChooseBlended | 0 | 1 | | |
closerDefaultBlended | 0 | 1 | | |
inGroups | string | | Pipe-delimited ingroup list |
UpdateUserParams update_user
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
agentPass | string | | |
agentUserLevel | number | | |
agentFullName | string | | |
agentUserGroup | string | | |
phoneLogin | string | | |
phonePass | string | | |
hotkeysActive | 0 | 1 | | |
voicemailId | string | | |
email | string | | |
customOne | string | | |
customTwo | string | | |
customThree | string | | |
customFour | string | | |
customFive | string | | |
active | "Y", "N" | | |
wrapupSecondsOverride | number | | |
campaignRank | number | | |
campaignGrade | number | | |
ingroupRank | number | | |
ingroupGrade | number | | |
campRgOnly | 0 | 1 | | |
campaignId | string | | |
ingrpRgOnly | 0 | 1 | | |
groupId | string | | |
resetPassword | number | | |
inGroups | string | | |
deleteUser | "Y" | | Undocumented in official API but functional — triggers user deletion |
CopyUserParams copy_user
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
agentPass | string | Yes | |
agentFullName | string | Yes | |
sourceUser | string | Yes | |
UpdateRemoteAgentParams update_remote_agent
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
status | RemoteAgentStatus | | |
campaignId | string | | |
numberOfLines | number | | |
UserDetailsParams user_details extends OutputParams
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
AgentCampaignsParams agent_campaigns extends OutputParams
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
campaignId | string | | |
ignoreAgentdirect | "Y", "N" | | |
Monitoring (admin.monitoring)
BlindMonitorParams blind_monitor
| Parameter | Type | Req | Description |
phoneLogin | string | Yes | |
sessionId | string | Yes | |
serverIp | string | Yes | |
stage | BlindMonitorStage | | |
AgentIngroupInfoParams agent_ingroup_info
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
stage | "info", "change", "text" | | |
AgentStatusParams agent_status extends OutputParams
| Parameter | Type | Req | Description |
agentUser | string | Yes | |
includeIp | "YES", "NO" | | |
UserGroupStatusParams user_group_status extends OutputParams
| Parameter | Type | Req | Description |
userGroups | string | Yes | Pipe-delimited group list (e.g., "ADMIN|AGENTS") |
InGroupStatusParams in_group_status extends OutputParams
| Parameter | Type | Req | Description |
inGroups | string | Yes | Pipe-delimited group list |
LoggedInAgentsParams logged_in_agents extends OutputParams
| Parameter | Type | Req | Description |
campaigns | string | | Pipe-delimited campaign list (e.g. "TESTCAMP|INBOUND"), default is all |
userGroups | string | | Pipe-delimited user group list (e.g. "ADMIN|AGENTS"), default is all |
showSubStatus | "YES", "NO" | | Show agent sub-status and pause_code |
Reporting (admin.reporting)
RecordingLookupParams recording_lookup extends OutputParams
| Parameter | Type | Req | Description |
agentUser | string | | |
leadId | number | | |
date | string | | |
uniqueid | string | | |
extension | string | | |
duration | "Y", "N" | | |
DidLogExportParams did_log_export extends OutputParams
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | |
date | string | Yes | |
AgentStatsExportParams agent_stats_export extends OutputParams
| Parameter | Type | Req | Description |
datetimeStart | string | Yes | |
datetimeEnd | string | Yes | |
agentUser | string | | |
campaignId | string | | |
timeFormat | TimeFormat | | |
groupByCampaign | "YES", "NO" | | |
CallStatusStatsParams call_status_stats extends OutputParams
| Parameter | Type | Req | Description |
campaigns | string | Yes | Dash-delimited campaign IDs, or "---ALL---" / "ALLCAMPAIGNS" |
queryDate | string | | YYYY-MM-DD format, defaults to today |
ingroups | string | | Dash-delimited in-group IDs |
statuses | string | | Dash-delimited status codes |
CallDispoReportParams call_dispo_report extends OutputParams
| Parameter | Type | Req | Description |
campaigns | string | | Dash-delimited campaign IDs (at least one of campaigns/ingroups/didPatterns required) |
ingroups | string | | Dash-delimited in-group IDs |
dids | string | | Dash-delimited DID numbers. Note: ViciDial docs also reference this as "did_patterns" in examples. |
queryDate | string | | YYYY-MM-DD format, defaults to today |
endDate | string | | YYYY-MM-DD format, defaults to today |
statuses | string | | Dash-delimited status codes |
categories | string | | Dash-delimited status categories |
users | string | | Dash-delimited user list |
statusBreakdown | "0", "1" | | Show breakdown of all statuses |
showPercentages | "0", "1" | | Show percentages (requires statusBreakdown=1) |
fileDownload | "0", "1" | | Download as CSV file |
PhoneNumberLogParams phone_number_log extends OutputParams
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | Comma-separated phone numbers |
detail | PhoneNumberLogDetail | | |
type | PhoneNumberLogType | | |
archivedLead | "Y", "N" | | |
Campaigns (admin.campaigns)
UpdateCampaignParams update_campaign
| Parameter | Type | Req | Description |
campaignId | string | Yes | |
campaignName | string | | 6-40 characters |
active | "Y", "N" | | |
autoDialLevel | string | | 2-5 characters, e.g. "3.0" |
adaptiveMaximumLevel | string | | 3-20 digits |
campaignVdadExten | string | | 3-20 characters |
hopperLevel | number | | 1-2000 |
resetHopper | "Y", "N" | | Reset the campaign hopper |
dialMethod | "MANUAL", "RATIO", "INBOUND_MAN", "ADAPT_AVERAGE", "ADAPT_HARD_LIMIT", "ADAPT_TAPERED" | | |
dialTimeout | number | | 1-120 seconds |
listOrder | string | | Lead ordering — e.g. "UP", "DOWN", "RANDOM 2nd NEW", "DOWN COUNT" |
listOrderRandomize | "Y", "N" | | Randomize hopper loading within list order |
listOrderSecondary | string | | e.g. "LEAD_ASCEND", "CALLTIME_DESCEND", "VENDOR_ASCEND" |
outboundCid | string | | 1-20 digits |
dialStatusAdd | string | | 1-6 character status code to add to dial statuses |
dialStatusRemove | string | | 1-6 character status code to remove from dial statuses |
leadFilterId | string | | Valid filter ID or "---NONE---" |
xferconfOne | string | | Transfer - Conf Number 1 (1-50 characters) |
xferconfTwo | string | | Transfer - Conf Number 2 (1-50 characters) |
xferconfThree | string | | Transfer - Conf Number 3 (1-50 characters) |
xferconfFour | string | | Transfer - Conf Number 4 (1-50 characters) |
xferconfFive | string | | Transfer - Conf Number 5 (1-50 characters) |
dispoCallUrl | string | | Disposition URL — must be URL-encoded. Set to "ALT" to use alt URLs |
webformOne | string | | Agent Screen Webform 1 URL — must be URL-encoded |
webformTwo | string | | Agent Screen Webform 2 URL — must be URL-encoded |
webformThree | string | | Agent Screen Webform 3 URL — must be URL-encoded |
CampaignsListParams campaigns_list extends OutputParams
| Parameter | Type | Req | Description |
campaignId | string | | |
HopperListParams hopper_list extends OutputParams
| Parameter | Type | Req | Description |
campaignId | string | Yes | |
searchMethod | "BLOCK" | | |
HopperBulkInsertParams hopper_bulk_insert
| Parameter | Type | Req | Description |
leadIds | string | Yes | Comma-separated lead IDs (max 1000) |
hopperPriority | number | | |
hopperLocalCallTimeCheck | "Y", "N" | | |
Lists (admin.lists)
AddListParams add_list
| Parameter | Type | Req | Description |
listId | number | Yes | 2-14 digits |
listName | string | Yes | 2-30 characters |
campaignId | string | Yes | 2-8 characters, must be valid |
active | "Y", "N" | | |
listDescription | string | | Up to 255 chars. Use "--BLANK--" to empty. |
outboundCid | string | | 6-20 digits |
script | string | | 1-10 chars, must be valid script |
amMessage | string | | 2-100 characters |
dropInboundGroup | string | | 1-10 chars, must be valid in-group |
webFormAddress | string | | 6-100 chars, URL-encodable |
webFormAddressTwo | string | | 6-100 chars, URL-encodable |
webFormAddressThree | string | | 6-100 chars, URL-encodable |
resetTime | string | | 4-100 chars, valid 4-digit groups of 24-hour time (e.g. "0900-1700-2359") |
tzMethod | TZMethod | | |
localCallTime | string | | Valid call time ID or "campaign" (default) |
expirationDate | string | | YYYY-MM-DD format |
xferconfOne | string | | Transfer - Conf Number 1 (1-50 characters) |
xferconfTwo | string | | Transfer - Conf Number 2 (1-50 characters) |
xferconfThree | string | | Transfer - Conf Number 3 (1-50 characters) |
xferconfFour | string | | Transfer - Conf Number 4 (1-50 characters) |
xferconfFive | string | | Transfer - Conf Number 5 (1-50 characters) |
customFieldsCopy | number | | 2-14 digits, valid list ID with custom fields. Requires "Custom Fields Modify" permission. |
customCopyMethod | "APPEND", "UPDATE", "REPLACE" | | |
UpdateListParams update_list
| Parameter | Type | Req | Description |
listId | number | Yes | 2-14 digits |
insertIfNotFound | "Y", "N" | | Attempt insert as new list if no match |
resetList | "Y", "N" | | Reset Called-Since-Last-Reset flag for all leads |
deleteList | "Y", "N" | | Delete the list |
deleteLeads | "Y", "N" | | Delete all leads with this list_id |
archivedLead | "Y", "N" | | Affect only vicidial_list_archive leads |
listName | string | | |
campaignId | string | | |
active | "Y", "N" | | |
listDescription | string | | |
outboundCid | string | | |
script | string | | |
amMessage | string | | |
dropInboundGroup | string | | |
webFormAddress | string | | |
webFormAddressTwo | string | | |
webFormAddressThree | string | | |
resetTime | string | | |
tzMethod | TZMethod | | |
localCallTime | string | | |
expirationDate | string | | |
xferconfOne | string | | |
xferconfTwo | string | | |
xferconfThree | string | | |
xferconfFour | string | | |
xferconfFive | string | | |
customFieldsCopy | number | | |
customCopyMethod | "APPEND", "UPDATE", "REPLACE" | | |
customFieldsAdd | "Y" | | |
customFieldsUpdate | "Y" | | |
customFieldsDelete | "Y" | | |
fieldLabel | string | | Required for custom field add/update/delete |
fieldName | string | | |
fieldSize | number | | |
fieldType | "TEXT", "SELECT", "AREA", "MULTI", "RADIO", "CHECKBOX", "DATE", "TIME" | | |
fieldRank | number | | |
fieldOrder | number | | |
fieldRerank | "YES", "NO" | | |
fieldMax | number | | |
fieldDefault | string | | |
fieldOptions | string | | Use %0A for newline, %7C for pipe |
fieldDuplicate | "Y", "N" | | |
fieldDescription | string | | |
fieldHelp | string | | |
fieldRequired | "Y", "N" | | |
multiPosition | "HORIZONTAL", "VERTICAL" | | |
namePosition | "TOP", "LEFT" | | |
fieldEncrypt | "Y", "N" | | |
fieldShowHide | "DISABLED", "X_OUT_ALL", "LAST_1", "LAST_2", "LAST_3", "LAST_4", "FIRST_1_LAST_4" | | |
ListInfoParams list_info extends OutputParams
| Parameter | Type | Req | Description |
listId | number | Yes | |
dialableCount | "Y", "N" | | |
leadsCounts | "Y", "N" | | Include counts of all leads and NEW status leads |
archivedLead | "Y", "N" | | Query only vicidial_list_archive leads |
ListCustomFieldsParams list_custom_fields extends OutputParams
| Parameter | Type | Req | Description |
listId | number | string | | List ID, or "---ALL---" for all lists |
customOrder | "table_order", "alpha_up", "alpha_down" | | Field ordering: table_order (default), alpha_up, alpha_down |
Phones (admin.phones)
AddPhoneParams add_phone
| Parameter | Type | Req | Description |
extension | string | Yes | |
dialplanNumber | string | Yes | |
voicemailId | string | Yes | |
phoneLogin | string | Yes | |
phonePass | string | Yes | |
serverIp | string | Yes | |
protocol | PhoneProtocol | Yes | |
registrationPassword | string | Yes | |
phoneFullName | string | Yes | |
localGmt | string | | |
outboundCid | string | Yes | |
phoneContext | string | | |
email | string | | |
adminUserGroup | string | | |
isWebphone | WebphoneType | | |
webphoneAutoAnswer | "Y", "N" | | |
useExternalServerIp | "Y", "N" | | |
templateId | string | | |
onHookAgent | "Y", "N" | | |
UpdatePhoneParams update_phone
| Parameter | Type | Req | Description |
extension | string | Yes | |
serverIp | string | Yes | |
deletePhone | "Y" | | |
dialplanNumber | string | | |
voicemailId | string | | |
phoneLogin | string | | |
phonePass | string | | |
protocol | PhoneProtocol | | |
registrationPassword | string | | |
phoneFullName | string | | |
localGmt | string | | |
outboundCid | string | | |
outboundAltCid | string | | |
phoneContext | string | | |
email | string | | |
adminUserGroup | string | | |
phoneRingTimeout | number | | |
deleteVmAfterEmail | "Y", "N" | | |
isWebphone | WebphoneType | | |
webphoneAutoAnswer | "Y", "N" | | |
useExternalServerIp | "Y", "N" | | |
templateId | string | | |
onHookAgent | "Y", "N" | | |
AddPhoneAliasParams add_phone_alias
| Parameter | Type | Req | Description |
aliasId | string | Yes | 2-20 characters |
phoneLogins | string | Yes | Comma-separated phone logins (2-255 characters) |
aliasName | string | Yes | 1-50 characters |
UpdatePhoneAliasParams update_phone_alias
| Parameter | Type | Req | Description |
aliasId | string | Yes | 2-20 characters |
phoneLogins | string | Yes | Comma-separated phone logins (2-255 characters) |
aliasName | string | Yes | 1-50 characters |
deleteAlias | "Y", "N" | | Delete the phone alias |
DIDs (admin.dids)
AddDidParams add_did
| Parameter | Type | Req | Description |
didPattern | string | Yes | 2-50 characters. URL-encode special chars (e.g. + as %2B) |
didDescription | string | | |
active | "Y", "N" | | |
didRoute | "EXTEN", "VOICEMAIL", "AGENT", "PHONE", "IN_GROUP", "CALLMENU", "VMAIL_NO_INST" | | |
recordCall | "Y", "N", "Y_QUEUESTOP" | | |
extension | string | | |
extenContext | string | | |
voicemailExt | string | | |
phoneExtension | string | | |
serverIp | string | | |
group | string | | Valid in-group group_id |
menuId | string | | Valid call menu menu_id |
filterCleanCidNumber | string | | |
callHandleMethod | string | | |
agentSearchMethod | "LO", "LB", "SO" | | |
listId | number | | |
entryListId | number | | |
campaignId | string | | |
phoneCode | string | | |
CopyDidParams copy_did
| Parameter | Type | Req | Description |
sourceDidPattern | string | Yes | 2-50 characters, must be an existing DID |
newDids | string | Yes | 2-2000 characters, comma-separated for multiple DIDs |
didDescription | string | | |
UpdateDidParams update_did
| Parameter | Type | Req | Description |
didPattern | string | Yes | 2-50 characters, must be an existing DID |
didDescription | string | | |
active | "Y", "N" | | |
didRoute | "EXTEN", "VOICEMAIL", "AGENT", "PHONE", "IN_GROUP", "CALLMENU", "VMAIL_NO_INST" | | |
recordCall | "Y", "N", "Y_QUEUESTOP" | | |
extension | string | | |
extenContext | string | | |
voicemailExt | string | | |
phoneExtension | string | | |
serverIp | string | | |
group | string | | |
menuId | string | | |
filterCleanCidNumber | string | | |
callHandleMethod | string | | |
agentSearchMethod | "LO", "LB", "SO" | | |
listId | number | | |
entryListId | number | | |
campaignId | string | | |
phoneCode | string | | |
deleteDid | "Y" | | |
DNC (admin.dnc)
DncPhoneParams add_dnc_phone
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | |
campaignId | string | Yes | |
FpgPhoneParams add_fpg_phone
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | |
group | string | Yes | |
System (admin.system)
CheckPhoneNumberParams check_phone_number
| Parameter | Type | Req | Description |
phoneNumber | string | Yes | 6-16 digits |
phoneCode | string | | 1-4 digits, defaults to 1 |
localCallTime | string | Yes | Must be a valid call time ID in the system |
dncCheck | DNCCheck | | |
campaignDncCheck | DNCCheck | | |
campaignId | string | | |
usacanPrefixCheck | "Y", "N" | | |
usacanAreacodeCheck | "Y", "N" | | |
nanpaAcPrefixCheck | "Y", "N" | | |
tzMethod | TZMethod | | |
postalCode | string | | 5 digits, USA zipcodes only. Needed for POSTAL_CODE tz_method |
state | string | | 2 letters. Needed if state call time rules enabled |
owner | string | | 2-5 letters. Needed for TZCODE tz_method |
AddGroupAliasParams add_group_alias
| Parameter | Type | Req | Description |
callerIdNumber | string | Yes | |
groupAliasId | string | | |
groupAliasName | string | | |
callerIdName | string | | |
active | "Y", "N" | | |
adminUserGroup | string | | |
UpdateCidGroupEntryParams update_cid_group_entry
| Parameter | Type | Req | Description |
cidGroupId | string | Yes | 2-20 characters, must be a valid CID Group ID or Campaign ID |
areacode | string | Yes | Areacode (e.g. "312"), state (e.g. "FL"), or "---ALL---" |
stage | "UPDATE", "ADD", "DELETE", "INFO" | Yes | Action to perform |
outboundCid | string | | 1-20 digits, or "---ALL---" |
cidDescription | string | | 6-50 characters |
active | "Y", "N" | | |
UpdateAltUrlParams update_alt_url
| Parameter | Type | Req | Description |
campaignId | string | Yes | |
entryType | "campaign" | Yes | |
urlType | "dispo", "start", "addlead", "noagent" | Yes | |
altUrlId | "NEW", "LIST" | | Existing alt URL ID, "NEW" to create, or "LIST" to list all |
active | "Y", "N" | | |
urlRank | number | | |
urlStatuses | string | | Space-separated status codes, or "---ALL---" |
urlDescription | string | | |
urlLists | string | | Space-separated list IDs, or blank for all |
urlCallLength | number | | Minimum call length in seconds (default: 0) |
urlAddress | string | | Must be URL-encoded |
UpdatePresetsParams update_presets
| Parameter | Type | Req | Description |
campaignId | string | Yes | |
presetName | string | | Preset name — can be omitted if only one preset exists for this campaign |
action | "UPDATE", "NEW", "DELETE", "LIST" | | "UPDATE" (default), "NEW", "DELETE", or "LIST" |
presetNumber | string | | 1-50 digits |
presetHideNumber | "Y", "N" | | |
presetDtmf | string | | DTMF digits (0-9, P=#, S=*, Q=half-second quiet) |
stage | OutputFormat | | Output format for LIST action |
header | "YES", "NO" | | Include header for LIST action |
UpdateLogEntryParams update_log_entry
| Parameter | Type | Req | Description |
callId | string | Yes | |
group | string | Yes | |
status | string | Yes | |
Status Code Enums (86 codes)
| Enum | Codes | Req | Description |
AgentStatus | A, B, DC, DEC, DNC, N, NI, NP, SALE, ALTNUM | | Agent-selectable dispositions |
SystemStatus | NEW, QUEUE, INCALL, DROP, XDROP, NA, CALLBK, CBHOLD, INBND | | Core call flow |
AMDStatus | AA, AM, AL, AMDXFR, ADAIR | | Answering machine detection |
AutoDetectStatus | AFAX, AB, ADC, ADCT, ADCCAR | | Carrier auto-detection |
DNCStatus | DNCL, DNCC, DNCCAR | | Do Not Call system |
TransferStatus | PU, PM, XFER, HXFER, RQXFER, RAXFER, IVRXFR, UNKXFR | | Transfer/routing |
CPDStatus | CPDATB, CPDB, CPDNA + 10 more | | Sangoma call progress (13 codes) |
ErrorStatus | ERI, DONEM, DISPO, LRERR | | System error states |
SurveyStatus | SVYEXT, SVYVM, SVYHU, SVYREC, SVYCLM | | Survey campaign |
InboundStatus | HOLDTO, QVMAIL, TIMEOT + 9 more | | Inbound-specific (12 codes) |
QCStatus | QCFAIL, QCCANC, QCPASS | | Quality control |
MiscStatus | MLINAT, LSMERG, DISMX + 6 more | | Miscellaneous (9 codes) |
Agent Events (49 events)
| Category | Events | Req | Count |
| Session | logged_in, logged_out, logged_out_complete, login_invalid, session_disabled, session_empty, session_channels | | 7 |
| Agent State | state_ready, state_paused | | 2 |
| Call | call_dialed, call_answered, call_dead, call_script, agent_hangup | | 5 |
| Dead Trigger | dead_trigger_audio, dead_trigger_url, dead_trigger_url_sent | | 3 |
| Disposition | dispo_screen_open, dispo_set, dispo_set_twice | | 3 |
| 3-Way | 3way_start, 3way_answered, 3way_agent_hangup, 3way_agent_leave | | 4 |
| Transfer | transfer_local_closer, transfer_blind, transfer_vmail, transfer_panel_open, transfer_panel_closed | | 5 |
| Park | park_started, park_retrieved, park_ivr_started, park_ivr_retrieved | | 4 |
| Screen/UI | manual_dial_open, callback_select_open, ingroup_screen_open/closed, territory_screen_open/closed, contact_search_open, lead_search_open, pause_code_open, customer_gone, blind_monitor_alert | | 11 |
| System | agent_alert, time_sync, none_in_session, update_fields, other_answered | | 5 |
Browser / CORS
Configure CORS on your ViciDial server via agc/options.php and vicidial/options.php. See official CORS docs. Never set to '*'.
Links