Skip to content

Blog

An agent's phone on VICIdial

· Sipral

A call centre’s dialer asks something of a phone that a PBX never does. The agent logs in on a web page with a phone and a campaign, and the dialer then calls that phone, which answers on its own, and keeps it in a conference for the whole shift. Every customer call is joined to that conference. So the phone has to take a call nobody chose to answer, stay in it for hours, and carry whatever the dialer puts through it.

On 11 October Sipral met VICIdial for the first time: a ViciBox 12 (Asterisk 18.26, its MeetMe conferences, u-law only), installed by its own express installer on a machine of its own on the lab’s network.

What ran

scripts/lab.sh vicidial-live first runs the same short calls a live VitalPBX gets: two extensions, a call each way with a tone measured in both directions, a digit, a hold and a resume. Then it plays the agent, with extension 101 as the agent’s phone:

  • the agent logs in through the agent page’s form, and the dialer’s call to 101 arrives and is answered;
  • 102 dials the agent’s conference, the number VICIdial’s own API reports for the session, and each end listens for the other’s tone through it;
  • 102 sends a digit, which the conference passes on to the agent;
  • 102 hangs up, and the agent’s session stays up;
  • the agent is logged out from the administration page, and the dialer ends 101’s call itself.

What it found

Every scenario passed. The caller was in the conference 3.3 seconds after it answered, and from then on each end heard the other in 150 frames of 150. The digit reached the agent as an RFC 4733 event, and the logout ended the call with a BYE from the dialer.

The one surprise was in the test, not the stack. The conference answers at once but plays its announcements first. For about three seconds the agent hears prompts and the caller hears silence. A window opened a second after the answer caught that, and the first runs counted the tone in about 40 frames of 150. Recorded frame by frame, the audio was clean as soon as both ends were joined. The window now opens once each end has heard the other.

The run, its account file and what each scenario checks are in the testing document.