Outgoing calls

Outgoing calls from Puzzel (aka “Callout”)

If a Puzzel agent wants to make an outgoing call through Puzzel, the agent can enter a phone number or select a catalog entry in the Puzzel agent application and click “Call” (or agent can click-to-call from another system that uses Puzzel web-services). This usually results in one answered call from the Puzzel platform to the agent (a conversation event with ciq=a and destination = agent’s phone number) and then one call to the destination number (a conversation event with ciq=c and destination = the called number), answered or not. 

In addition to the conversation events for the calls to the agent and the destination, an outbound call results in:

  • an Initiation event, with the called number as source
  • a Queue event (in the outgoing calls queue, which usually has queue_key prefix ‘__Callout_’) with result=q.

This is similar to the events for Callback in queue ordered on web. The conversation events (with another internal_iq_session_id but the same call_id) may appear in the database a bit later than the Initiation event and the Queue event.

If the agent initiates the callout from the Puzzel agent application and is logged on with Puzzel Softphone, the call to the agent is auto-answered. In other cases the agent needs to click 'Answer' before Puzzel calls the destination. If the agent after having initiated a callout (when auto-answer is not happening) clicks Cancel to stop the call to the agent's phone, we will generate the Initiation event, the Queue event with result=q, the Conversation event with result=h and a extra Queue event with result=d (deleted).    

An answered outbound call:

The call_events for an answered outgoing call (some columns are hidden here):

If the call to the destination number is not answered, the conversation event to the destination will usually have result h (=agent clicks Hang up while it’s ringing) or t (ringing timeout for call to destination), and the speaktime in the Conversation event for the agent will usually be 15-30 seconds.


If the connected Puzzel agent, while we're calling the destination number, clicks “Cancel” in the Callout Request tab instead of "Hang-up" in the top bar before the destination has answered, this results in an extra Queue event with result=d (deleted) in addition to the first queue event with result q, and conversation events for the agent and destination legs.
An unanswered outbound call:

If the call to the destination number gives result=b (busy/reject) or result=e (error), the Conversation event for the agent will usually have a very short speaktime.

If the callout is answered by the destination number, the agent can transfer the call to another agent, to a phone number or to a queue. If the agent transfers to another agent, this new agent’s conversation event will also get ciq='a' since this is in the same 'ciq' session. If the agent transfers to a number, this number’s conversation event will have ciq=’null’. 

About Display number

The initiation event’s source is the Puzzel “access number” used for callout. If the agent selected a display number or if it is configured a display number unlike the access number, the used display number is shown as 'originating' in the Conversation event.

Callout while in Pause

If the agent Calls out while in status Pause, the pause will be aborted (a Return from pause event is created) and the call is set up. If the agent does not want to receive an incoming call after the outgoing call is finished, the agent should click Pause when in status wrap-up. If Pause is clicked while connected, the agent will be in status [Connected and Pause] at the same time.

If the agent does not want to receive incoming calls but only do outgoing calls, the agent can log on to queue with a profile not containing incoming queues.

Error when calling agent that ordered callout

The call to the agent (that ordered callout) may result in busy, or in error/timeout if the agent logged on with wrong number or in cases with network congestion/error. If this happens, you might find a call_id with several conversation events to the agent (ciq=a) all with result b, c and/or e. If a call to the agent finally got answered (result=k), there will also be a conversation event to the called number (ciq=c).

When the agent clicks Call to make an outgoing call to a destination, Puzzel first calls the agent, and then the destination. If the call to the agent results in busy or error, there might be several conversation events for this agent (and possibly no conversation event for the destination) for this call_id.

Scheduled calls

The agent can (if given access in the Puzzel agent application) order a scheduled call (a future outbound call). The agent enters the destination phone number and the date+time the call should happen, selects “to me” or “to any agent” and a queue. At the scheduled time, the relevant queue calls the agent (when ready) and then the destination number. If “to any agent” was chosen, the first ready agent on the relevant queue is selected. A scheduled call generates these raw data.

  • At T0, the agent orders a Scheduled call with a scheduled time (T1) in queue X. An initiation event (duration from T0 to T1) and a queue event (duration = 0) is created and these records appear in the Raw data db shortly after T0.
    • The request is put in the queue’s «waiting room» until the scheduled time, and then it’s moved into the queue with high priority
    • If the agent is logged on at T1, the request is sent to the agent when he becomes Ready. If the agent is logged off at T1 or logs off before getting the call, the request is sent to another agent
    • The queue will (at T2) call the reserved agent when he’s ready (or another agent if the reserved agent is not logged on or if the scheduled call was «to any agent»).
  • After the calls to the agent and the customer has ended (T3, might be hours or days later than T0) these conversation events arrive in the Raw data db.

If an agent or an administrator deletes an ordered scheduled call before the scheduled time, a new queue event with result=d (deleted) with the same call_id is created.

Agent-to-agent calls

If agent 1 calls to agent 2, this will result in one initiation event, and one conversation event for each of the agents.

There will not be a queue event for an agent-to-agent call (only for ordinary outgoing calls), the conversation events will not contain any queue key, nor any value for ciq, and the initiation event’s source will be “xxxxxxxx”.


Example call (some columns are hidden): 

The conversation event for the agent that made the call will (from db version 1-9) get leg_type = 'Agent', and the conversation event for the called agent (the destination) will get leg_type = 'ConsultAgent'.   


For all agent-to-agent calls, there will (from db version 1.6) be records in the call_event_extras table with 'agent2agent' = '1' and a “link” back to the agent-to-agent call’s events (call_events_rec_id), so that you easily can identify these calls. 

The agent-to-agent call in the example above will result in these 3 records in table call_event_extras:


Last updated