Basic call flow and different call events
For each incoming request (call/chat/email etc.) to Puzzel, the Puzzel platform generates one or more events wrapped in one session (internal_iq_session_ id). One event is represented by a record in the db.
In the call_events table there are different types of Call events, e.g. Initiation event, Menu event, Queue event and Conversation event. For most of the contact centre routing modules the incoming call goes through, an event(record) is created. One call may go through none or several audio/caller input/menu modules (resulting in menu events), none or several queues (resulting in queue events) and there may be generated none or several calls to agents or other destination numbers (results in conversation events).
When the incoming call ends (caller hangs up) the session ends, and the different events for this session are processed and inserted into the database.
A caller calls in at 12:00:00 and spends 1 minute in menus, 4 minutes in queue a, 3 minutes speaking with agent x and then 1 minute in queue b, and finally 4 minutes speaking with agent y, so the call ends at 12:13:00. All events for this incoming call are inserted in the database a few minutes after 12:13:00.
All events for one session will have the same call_id.
The initiation event contains the request_id, (from db version 1.7) which might be useful if you try to link information retried from the API (e.g. request_add) with Raw data.
For incoming phone calls, the Initiation event represents the time the incoming call is connected to the Puzzel platform, but this event is also used for other requests like emails/chats and for outgoing calls initiated by the agent or the Dialler.
Example events for a call_id, with some of the columns in call_events:
Since some calls last very long (e.g. long time in queue and a long conversation with an agent, who may transfer the caller to a new queue or agent…), it may take a long time from a call starts until the events for the call are available in the database.
All events have a call_id, a start, a duration, a result (and other details), and there may be events that are overlapping in time, e.g. a queue event and conversation event(s) or 2 conversation events (consultation call).
In very special cases, menu events for audio files played to the caller while in queue are created, and such menu event’s duration will be ‘within’ the queue event’s duration.
About the caller’s number and the Initiation event’s source
For an incoming call, the caller’s number is usually put in the Initiation event’s source. Please note the number may be stored with or without +/00 and country code.
If the caller (A) calls to number B, which is forwarded to a Puzzel access number (C), the caller’s number might end up in the Initiation event’s additional_source or redirect_source, and the called number (B) might end up in source. (Puzzel reports what is received as calling party number, additional number and redirecting number from the network.)
For calls from callers that have a secret number or that have used CLIR (Calling Line Identity Restricted), the caller’s number is not presented (source is empty).
For outbound calls from agents, the called number is usually reported as source.
For agent-to-agent calls, the reported source is “xxxxxxxx”.
About Menu events
One call_id can have 0 or more menu events, and for one call_id there might even be more than 1 menu events for the same menue_key. In each menu, one can configure what should happen if the caller dials an illegal digit or dials nothing within a time limit.
- The caller can stay in the menu module and hear the message again. If a caller first enters 4, then 7 and finally 1 in a menu module asking for digits 1, 2 or 3, this will result in only one menu event with menue_key =1.
- The caller can be routed directly to an exit if he presses an illegal digit. The next module can be a queue, but if the next module is a menu saying ‘wrong digit’ and the call then is routed back to the first menu, there will be 2 menu events from the first menu.
And, there can be menus with option ‘press x to return to the previous/main menu’. If this exists, then one call_id can have 2 (or more) menu events from the same menu. The descriptions/names for the different menus can be found in table menues.
To compare number of menu events per menue_choice with the corresponding queue events (queue arrivals) is tricky due to the above, and since there might be several ways to enter a queue (from different menus, from different access numbers, from other queues and call transfer from agent to queue).