In telephony, an automatic call distributor (ACD) or automated call distribution system, is a device or system that distributes incoming calls to a specific group of terminals or agents based on the customer's selection, customer's telephone number, selected incoming line to the system, or time of day the call was processed. It is often part of a computer telephony integration (CTI) system.
Routing incoming calls is the task of the ACD system. ACD systems are often found in offices that handle large volumes of incoming phone calls from callers who have no need to talk to a specific person but who require assistance from any of multiple persons (e.g., customer service representatives) at the earliest opportunity.
The routing strategy is a rule-based set of instructions that tells the ACD how calls are handled inside the system. Typically this is an algorithm that determines the best available employee or employees to respond to a given incoming call. To help make this match, additional data are solicited and reviewed to find out why the customer is calling. Sometimes the caller's caller ID or ANI is used; more often a simple IVR is used to ascertain the reason for the call.
Originally, the ACD function was internal to the Private Branch Exchange of the company. However, the closed nature of these systems limited their flexibility. A system was then designed to enable common computing devices, such as server PCs, to make routing decisions. For this, generally the PBX would issue information about incoming calls to this external system and receive a direction of the call in response.
An additional function for these external routing applications is to enable CTI. This allows improved efficiency for call center agents by matching incoming phone calls with relevant data on their PC via screen pop.
A common protocol to achieve this is CSTA; however, almost every PBX vendor has its own flavor of CSTA, and CSTA is quite hard to program because of its complex nature. Various vendors have developed intermediate software that hides these complexities and expedites the work of programmers.