BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates generally to an improved data processing system, and, in particular, to a method and apparatus for managing received calls. Still more particularly, the present invention is related to a computer implemented method, an apparatus, and a computer usable program product for automatic prioritization of received calls.
2. Description of the Related Art
Automated telephone systems present a convenient means to direct a caller to an operator who is most capable of assisting the caller. These automated telephone systems are implemented to maximize an operator's efficiency by directing only relevant calls to the operator and by minimizing the amount of idle time between callers.
Idle time refers to the period of time when an operator is waiting to assist a caller. Idle time between callers is minimized by requiring the callers to wait in a call queue so that once the operator has spoken with one caller, the operator can proceed immediately to the next caller in the queue. However, use of automated telephone systems often requires a caller to spend substantial amounts of time navigating a pre-recorded audio menu utilizing telephone buttons to select menu options and waiting in the call queue to speak with an operator.
In some instances, the caller may be prematurely disconnected from the automated telephone system after having spent a substantial amount of time navigating the different menu options and waiting in the call queue to speak with an operator. Once disconnected, the caller is often required to call back and to repeat the entire process of navigating menu options and waiting again at the back of the call queue in order to speak with an operator. The caller is required to invest even more time than usual to complete the desired transaction which causes understandable frustration and caller dissatisfaction.
A call may be prematurely disconnected because the caller or operator purposefully or inadvertently hangs up before the call is complete. Additionally, a call can be prematurely disconnected because a caller using a cellular telephone, for example, travels outside a service area, drives a car through a tunnel, if the network simply drops the call, interference results in a distorted reception, a battery operated phone runs out of power, a glitch in the automated telephone system disconnects the caller, or any other occurrence that may cause premature termination of the call.
One currently used method for addressing this problem involves the use of a call center that stores an identifier of a caller in a database. The call center uses the identifier, which may be a phone number or other unique number, in order to maintain the caller's position in a queue without actually requiring the caller to remain on the phone. Thereafter, if the first call is prematurely disconnected, then the caller can call back and reassume the position in the call queue so long as the caller calls back within a certain time frame.
In another currently used method, a caller who is prematurely disconnected from an automated telephone system can be directed back to a specific agent after an original call is purposefully or inadvertently disconnected. In this method, the caller and agent can be reconnected by referencing a call record containing a unique caller identifier, such as a telephone number, and a unique operator identifier, such as an employee identification number.
However, current solutions do not facilitate the detection of errors in the automated telephone system or identify potentially problematic operators that may be the cause of the prematurely disconnected calls.
SUMMARY OF THE INVENTIONThe illustrative embodiments described herein provide a computer implemented method, apparatus, and computer usable program product for managing received calls. In response to receiving a first call from a user, the process stores a record of the first call in a table of received calls. Thereafter, in response to receiving a second call from the user within a predefined period of time after the first call was prematurely disconnected, the process identifies a second call as a prematurely terminated call. The process then places the prematurely terminated call in a queue of calls according to a set of configurable criteria and updates the record of the first call with a progress of the prematurely terminated call.
BRIEF DESCRIPTION OF THE DRAWINGSThe novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
FIG. 1 is a pictorial representation of a network data processing system in which illustrative embodiments may be implemented;
FIG. 2 is a block diagram of a data processing system in which illustrative embodiments may be implemented;
FIG. 3 is a block diagram of a flow of data through components of a data processing system for prioritizing a call in accordance with an illustrative embodiment;
FIG. 4 is a table of received calls for use in prioritizing a call in accordance with an illustrative embodiment; and
FIG. 5 is a flowchart of a process for prioritizing a call in accordance with an illustrative embodiment.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTWith reference now to the figures and in particular with reference toFIGS. 1-2, exemplary diagrams of data processing environments are provided in which illustrative embodiments may be implemented. It should be appreciated thatFIGS. 1-2 are only exemplary and are not intended to assert or imply any limitation with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made.
With reference now to the figures,FIG. 1 depicts a pictorial representation of a network of data processing systems in which illustrative embodiments may be implemented. Networkdata processing system100 is a network of computing devices in which embodiments may be implemented. Networkdata processing system100 containsnetwork102, which is the medium used to provide communication links between various devices and computers connected together within networkdata processing system100. Network102 may include connections, such as wire, wireless communication links, or fiber optic cables. The depicted example inFIG. 1 is not meant to imply architectural limitations. For example,data processing system100 also may be a network of telephone subscribers and users.
In the depicted example,server104 andserver106 connect tonetwork102 along withstorage unit108. In addition,clients110,112, and114 are coupled tonetwork102.Clients110,112, and114 are examples of devices that may be utilized for transmitting or receiving audio-based communication in a network, such asnetwork102.Clients110,112, and114 may be, for example, a personal computer, a laptop, a tablet PC, a network computer, a hardwired telephone, a cellular phone, a voice over internet communication device, or any other communication device or computing device capable of transmitting data. In the depicted example,server104 provides data, such as boot files, operating system images, and applications toclients110,112, and114.Clients110,112, and114 are coupled toserver104 in this example. Networkdata processing system100 may include additional servers, clients, computing devices, and other devices for transmitting or receiving audio-based communication.
In the depicted example, networkdata processing system100 is the Internet withnetwork102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, governmental, educational and other computer systems that route data and messages. Of course, networkdata processing system100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), a wide area network (WAN), a telephone network, or a satellite network.FIG. 1 is intended as an example, and not as an architectural limitation for different embodiments.
With reference now toFIG. 2, a block diagram of a data processing system is shown in which illustrative embodiments may be implemented.Data processing system200 is an example of a computing device, such asserver104 andclients110,112, and114 inFIG. 1, in which computer usable code or instructions implementing the processes may be located for the illustrative embodiments.
In the depicted example,data processing system200 employs a hub architecture including a north bridge and memory controller hub (MCH)202 and a south bridge and input/output (I/O) controller hub (ICH)204.Processing unit206,main memory208, andgraphics processor210 are coupled to north bridge andmemory controller hub202.Graphics processor210 may be coupled to the MCH through an accelerated graphics port (AGP), for example.
In the depicted example, local area network (LAN)adapter212 is coupled to south bridge and I/O controller hub204 andaudio adapter216, keyboard andmouse adapter220,modem222, read only memory (ROM)224, universal serial bus (USB) andother communications ports232, and PCI/PCIe devices234 are coupled to south bridge and I/O controller hub204 throughbus238, and hard disk drive (HDD)226 and CD-ROM drive230 are coupled to south bridge and I/O controller hub204 throughbus240. PCI/PCIe devices may include, for example, Ethernet adapters, add-in cards, and PC cards for notebook computers. PCI uses a card bus controller, while PCIe does not.ROM224 may be, for example, a flash binary input/output system (BIOS).Hard disk drive226 and CD-ROM drive230 may use, for example, an integrated drive electronics (IDE) or serial advanced technology attachment (SATA) interface. A super I/O (SIO)device236 may be coupled to south bridge and I/O controller hub204.
An operating system runs onprocessing unit206 and coordinates and provides control of various components withindata processing system200 inFIG. 2. The operating system may be a commercially available operating system such as Microsoft® Windows® XP. Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. An object-oriented programming system, such as the Java™ programming system, may run in conjunction with the operating system and provides calls to the operating system from Java programs or applications executing ondata processing system200. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such ashard disk drive226, and may be loaded intomain memory208 for execution by processingunit206. The processes of the illustrative embodiments may be performed by processingunit206 using computer implemented instructions, which may be located in a memory such as, for example,main memory208, read onlymemory224, or in one or more peripheral devices.
In some illustrative examples,data processing system200 may be a personal digital assistant (PDA), which is generally configured with flash memory to provide non-volatile memory for storing operating system files and/or user-generated data. A bus system may be comprised of one or more buses, such as a system bus, an I/O bus and a PCI bus. Of course, the bus system may be implemented using any type of communications fabric or architecture that provides for a transfer of data between different components or devices attached to the fabric or architecture. A communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter. A memory may be, for example,main memory208 or a cache such as found in north bridge andmemory controller hub202. A processing unit may include one or more processors or CPUs. The depicted examples inFIGS. 1-2 and above-described examples are not meant to imply architectural limitations. For example,data processing system200 also may be a tablet computer, a laptop computer, or a telephone device in addition to taking the form of a PDA.
The hardware inFIGS. 1-2 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash memory, equivalent non-volatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted inFIGS. 1-2. Also, the processes of the illustrative embodiments may be applied to a multiprocessor data processing system.
The illustrative embodiments described herein provide a computer implemented method, apparatus, and computer usable program product for managing calls. In response to receiving a first call from a user, the process stores a record of the first call in a table of received calls. Thereafter, in response to receiving a second call from the user within a predefined period of time after the first call was prematurely disconnected, the process identifies a second call as a prematurely terminated call. The process then places the prematurely terminated call in a queue of calls according to a set of configurable criteria and updates the record of the first call with a progress of the prematurely terminated call.
A set of configurable criteria is one or more rules or instructions that direct the manner in which a prematurely terminated call is placed back into a call queue. In addition, a first call is call received prior to the receipt of the second call. Thus, for example, in the event that a caller has called an automated telephone system in excess of two times, the second call may be the last call in a series of calls, whereas the first call may be any call received prior to the last call.
The record of the call contains one or more identifiers to allow the process to identify and monitor the progress of a prematurely terminated call. The progress of a prematurely terminated call can be thought of as a history of the user's progression through an automated telephone system. Thus, monitoring the progress of the prematurely terminated call may include, for example, keeping a record of the various operators or stages through which a user has proceeded through. A stage can be, for example, one part of a multi-part transaction that occurs via communication by a caller over a telephone. Upon completing one part of the transaction, the caller can proceed to the subsequent stage of the transaction. In addition, a stage can be a department or division within an organization, such as a “new accounts department” or a “billing department” to which a caller has been directed in response to selecting a pre-recorded menu option from an automated telephone system.
Additionally, the process can be configured to assign a priority ranking value to the call record of the first, prematurely disconnected call. Subsequently, the process is able to reference the priority ranking value, along with a record of the progress of the first call in order to place a second call from the user in a selected position within the call queue in which the user was located at the time the first call was prematurely disconnected.
Turning now toFIG. 3, a block diagram of the flow of data through components of a data processing system for prioritizing a call is depicted in accordance with an illustrative embodiment. In this illustrative embodiment ofFIG. 3,computing device300 can be, for example, a component of an automated telephone system. The automated telephone system may be a network data processing system, such as networkdata processing system100 ofFIG. 1. In particular,computing device300 may be a computing device, such asclients110,112, or114 ofFIG. 1.
Computing device300 is any device or system capable of being used in the automated telephone system and usable to manage received calls from one or more callers, such ascaller302.Caller302 may be, for example, a customer seeking the services of a company utilizing an automated telephone system.Computing device300 manages calls by implementingprioritization logic304 andmemory306 in order to directcaller302 to speak withoperator308, who may be, for example, a customer service representative.
Prioritization logic304 is a software component programmable to manage received calls.Prioritization logic304 can be implemented in any programming language known or available, including but not limited to C++, Cobol, Java, and Fortran. In alternative embodiments,prioritization logic304 may be a hardware component, or a combination of software and hardware.Prioritization logic304 manages received calls by creating a call record for each call that is received by the automated telephone system.
Call records are stored inmemory306.Prioritization logic304 compares each newly received call with the stored call records to identify a prematurely terminated call. A prematurely terminated call is a second call received from a caller who had placed a first call that was prematurely disconnected. Ifprioritization logic304 matches the newly received call with a call record in table of received calls310, then the newly received call is deemed a prematurely terminated call. In one embodiment,prioritization logic304 may match the phone number of the newly received call with the phone number stored in the record of the first call. In alternate embodiments,prioritization logic304 may be configured to match a newly received call with a pre-existing call record based upon any unique identifier, such as, for example, the caller's social security number or an alphanumeric customer identification number selected by the caller or assigned to the caller by the automated telephone system. In this manner, a prematurely terminated call can be identified even if a caller places the second call from a different phone than the first call, as in the instance where the first call is placed from a cellular telephone and the second call is placed from a wired telephone because the battery on the cellular phone ran out.
Upon identifying a prematurely terminated call,prioritization logic304 can direct a second call received from a caller to a proper destination after the caller's first call was prematurely disconnected. The call records contain information such as, for example, information establishing the identity of the caller and the phone number of the phone from which the caller placed the call. The call record may also contain any other information that may indicate, for example, which call queue a caller was waiting in, or which operator the caller was speaking with when the first call was prematurely disconnected.
Memory306 includes table of received calls310,call queue312, andconfigurable criteria314.Memory306 may be implemented in any type of known or available memory, including, but not limited to, main memory, random access memory (RAM), read only memory (ROM), non-volatile random access memory (NV-RAM), a hard disk, a secondary storage device, or any other type of memory.
In one embodiment, table of receivedcalls310 stores one call record for each phone call received from a unique caller. Table of receivedcalls310 can be a database, a spreadsheet, a table, or a list of call records, each of which is created from the receipt of a call from a caller, such ascaller302. Thus, ifcaller302 is the only caller to the automated telephone system implementingcomputing device300, then table of receivedcalls310 contains only one call record for the call fromcaller302.
Callqueue312 is a queue of callers waiting to speak withoperator308. In one embodiment,operator308 speaks with each caller incall queue312 according to the order in which the callers are listed incall queue312. However, the order in which the callers are placed intocall queue312 may depend upon a number of different factors. In the simplest example, the callers are placed incall queue312 based upon the order in which a call from each caller was received by the automated telephone system. Thus, the first caller to call would be the first person to speak withoperator308, whereas the last caller to call would be the last person to speak withoperator308. In alternative embodiments, the order in which callers are placed intocall queue312 may also be determined by other factors, such as whether the caller is a preferred customer, the stage of a particular transaction the caller was completing, or the fact that a subsequent caller had been previously prematurely disconnected from the automated telephone system after having already waited incall queue312. These factors may be predefined by an automated telephone system administrator (not shown) and set forth inconfigurable criteria314 for reference byprioritization logic304 in order to place the callers incall queue312.
Prioritization logic304 may place a caller at the end ofcall queue312, or in some advanced position withincall queue312 if a call record exists for the caller in which the call record directsprioritization logic304 to assign a received call a higher priority ranking value than the other calls currently incall queue312.Prioritization logic304 may assign the higher priority based uponconfigurable criteria314.Configurable criteria314 is a set of one or more rules or instructions that directs the manner in whichprioritization logic304 places a prematurely terminated call back intocall queue312.
Once a prematurely terminated call is identified,prioritization logic304 may place the prematurely terminated call into an advanced position withincall queue312, rather than at the end ofcall queue312. The position withincall queue312 in which the prematurely terminated call is placed may depend upon different factors. One is example is a priority ranking value. In one embodiment, the priority ranking value may be a numerical value assigned to each call record where higher values indicate a greater priority and thus result in a more advanced position in a call queue. In another embodiment, the priority ranking value may be a designation such as “high”, “medium”, or “low”. With this example, a designation of “high” results in the placement of the call in a more advanced position in a call queue, and a designation of “low” may result in the call not being given any special consideration.
The priority ranking value may be generated based upon the rules defined byconfigurable criteria314. For example, in one illustrative embodiment,configurable criteria314 may include a rule for assigning a priority ranking value to a call in a call record based upon the length of a previous call. For instance, a caller who has been waiting for an operator incall queue312 for an hour may be given the highest priority ranking value if, for example, the current wait time foroperator308 incall queue312 is less than an hour. Thus, whencaller302 calls back,caller302 may be moved to the front of the line incall queue312. Consequently,caller302 would be the next caller to speak tooperator308.
Configurable criteria314 may also include a rule for assigning a priority ranking value based upon the customer's information. For instance,caller302 may be considered a preferred customer, and thus, eachtime caller302 calls the automated telephone system,caller302 is automatically assigned a higher priority ranking value and thus not required to wait to speak tooperator308 for the same amount of time as the other, non-preferred callers.Caller302's preferential status may be determined by referencing a customer database containing customer information which is automatically included in every call record created.
A call may be given a higher priority ranking value than previously received calls based upon any criteria distinguishing one caller from another. For example, in one embodiment, a caller may be given a higher priority ranking value if the caller calls from a number that has been identified as a higher priority phone number. The phone number may be higher priority because the number is associated with a preferred customer, or because it contains an area code that has been determined to be an area code with the greatest number of potential customers or preferred customers.
Additionally,configurable criteria314 may provide instructions to assign higher priorities to callers who have reached a certain stage of the automated telephone system. For example, an automated telephone system may be implemented in order to browse merchandise, receive orders for merchandise, and to pay for the ordered merchandise.Configurable criteria314 may specify that any calls that were disconnected in the billing stage should be given the highest priority ranking value to ensure that the transfer of money was completed.
In another embodiment,configurable criteria314 may include a rule for assigning priority ranking value to a caller whose call was prematurely terminated because of the occurrence of an error, regardless of the stage at which the error occurred. For example,prioritization logic304 may automatically update a call record with an error notice in the event that prioritizationlogic304 determines that the automated telephone system encountered an unrecoverable error that required the system to restart. The error notice may correlate to a higher priority ranking value to allow any caller with the error notice in a corresponding call record to be placed in a more advanced position incall queue312 after the caller calls back. In another example, an operator can manually update a call record to display an error notice in the event that operator error may have resulted in a premature disconnection of a call, such as in the event where an operator inadvertently hangs up on a caller or transfers the caller to the wrong department. Furthermore, an operator can update a call record to display an error notice if a caller has indicated to the operator that one or more of the caller's previous calls was prematurely disconnected.
In the illustrative embodiment depicted inFIG. 3,caller302 can represent one or more callers. Similarly,operator308 can represent one or more operators. In addition,call queue312 may also represent one or more call queues, each of which may correspond to one or more stages within an automated telephone system.
Turning now toFIG. 4, a block diagram of a table of received calls is depicted in accordance with an illustrative embodiment. In this illustrative embodiment ofFIG. 4, table of received calls400 is a table of received calls, such as table of receivedcalls310 ofFIG. 3.
A logic component, such asprioritization logic304 inFIG. 3, populates table of receivedcalls400 with one or more call records, such ascall record402. Callrecord402 includes information to enable a software component, such asprioritization logic304, to locate a record of a prematurely disconnected call, such ascall record402, in table of received calls400. In one embodiment, prioritization logic may createcall record402 when a caller first places a call to an automated telephone system. Thus, if the caller is later prematurely disconnected, prioritization logic can referencecall record402 to identify a prematurely terminated call and to prioritize a second call from the caller.
The information contained within table of receivedcalls400 may include, for example,customer information404.Customer information404 may contain such information as the caller's name, address, account number, social security number, or any other similar information in order to identify each unique caller.Customer information404 may also include information identifying the status of the customer for later use in prioritizing a prematurely terminated call. For example, if the caller is also a preferred customer, thencustomer information404 may indicate that the caller's status is “preferred”. Thus, a preferred customer would be allowed to move to the front of a call queue if customer status is a criterion by which calls are prioritized. The preferred customer could be moved to the front of any call queue when the preferred customer's call is first received or after the caller has called back after having been prematurely disconnected from the first call.
In addition,call record402 may also contain callingnumber406, which is the phone number of the phone from which the caller placed the call to the automated telephone system. Callingnumber406 may be used in conjunction withcustomer information404 to identify each unique caller as in the instance where members of the same household may be calling from the same phone number.
Callrecord402 may also contain droppedcall identifier408.Dropped call identifier408 is any identifier that may indicate that the call to whichcall record402 relates has been prematurely disconnected in the past.Dropped call identifier408 can be, for example, a symbol, number, letter, character, string of text, or any combination thereof whose presence indicates that the call from which callrecord402 was generated was a prematurely disconnected call. For example, droppedcall identifier408 may be a symbol of a flag where the flag indicates that the call was prematurely disconnected. In another illustrative embodiment, dropped call identifier may be, for example, the phrase, “prematurely terminated”, or the letter “X”, where “X” indicates that the call was prematurely terminated. In addition, droppedcall identifier408 may contain the priority ranking value for use in prioritizing a prematurely terminated call.
Stage identifier410 is any identifier that may indicate the stage at which the prematurely disconnected call was at when the call was terminated. Stage identifier410 may be any symbol, number, letter, character, string of text, or combination thereof. For example, if a caller to an automated telephone system navigated through the call menu options and ended up in a queue of calls to wait to speak to an operator in the billing department, then stage identifier410 may be the phrase “Billing Department”. As used herein, the term “stage” refers to one of the various departments or divisions accessible to a caller of an automated telephone system.
Each stage may have one or more separate call queues. For instance, in another example, a caller placing a call to an automated telephone system for booking a flight may be directed to a first stage where the caller is required to provide personal information to create an account. In this account creation stage, the caller may create an account by providing an operator with information used to createcustomer information404. During this process, the caller may be required to wait in a call queue in order to speak with an airlines representative. Subsequently, the caller may be directed to a separate stage in order to make the airline reservation by selecting a destination and travel dates. Similarly, the caller may be required to wait in a call queue in order to speak with a different airlines representative. Finally, the caller may be directed to a third stage in order to provide billing information, such as a credit card number, billing address, and other billing-related information. In this example, the three different stages through which the caller was required to proceed may be assigned identifiers, such as “account creation”, “reservations”, and “billing” in stage identifier410. Thus, if a caller is prematurely disconnected after having created an account, but before making the actual airline reservation, stage identifier410 may consist of the word “reservation.”
Callrecord402 may also include operator identifier412 that indicates which operator was responsible for assisting the caller. Operator identifier412 may be, for example, a symbol, number, letter, character, string of text, or any combination thereof. For example, operator identifier412 may be the name of the operator or the operator's employee identification number. In one embodiment, operator identifier412 is used to route a prematurely terminated call back to the operator who was originally assisting the caller.
With the information contained incall record402, a component of an automated telephone system, such asprioritization logic304 ofFIG. 3, is capable of identifying a prematurely disconnected call and placing the prematurely disconnected call in the proper stage and in the same or similar position in a call queue that the caller was in before the caller's first call was prematurely disconnected. The prioritization logic identifies a prematurely terminated call by searching table of receivedcalls400 for a call record containing information that corresponds to a second call from the same user.
Callrecord402 may also be used to generate statistics about how often calls are being dropped, at what stage the calls are being dropped, and which operator, if any, was responsible for assisting the caller when the initial call was prematurely disconnected. In this manner, an administrator of the automated telephone system can identify problems with the automated telephone system or with certain operators.
Although table of receivedcalls400 contains only a single call record,call record402, table of receivedcalls400 may be populated with more than one call record. In order to limit the number of call records, call records may be periodically purged from table of received calls400. For example, if after the initial call was prematurely disconnected, the caller fails to call back within a predefined period of time, then the call record is purged from table of received calls400. Additionally,call record402 may contain more or fewer categories of information than the entries depicted inFIG. 4.
Turning now toFIG. 5, a flowchart of a process for prioritizing a call is depicted in accordance with an illustrative embodiment. In this illustrative embodiment ofFIG. 5, the process may be performed by a software component, such asprioritization logic304 ofFIG. 3.
The process begins by receiving a call (step500). The process then consults a received calls table (step502). By referencing the received calls table, the process is able to make the determination as to whether the call was prematurely terminated (step504). If the process makes the determination that the call was prematurely terminated by locating a call record corresponding to the newly received call (yes output to step504), then the process queues the call in a call queue according to configurable criteria (step506).
The process then makes a determination as to whether the caller has proceeded to the next call stage (step508). If the process makes the determination that the caller has proceeded to the next stage (yes output to step508), then the process updates the call record (step510) and queues the call in the call queue of the next stage (step512).
The process then makes the determination as to whether the call is complete (step514). If the call is complete (yes output to step514), then the process terminates thereafter.
Returning now to step504, if the process makes the determination that the call was not prematurely terminated (no output to step504), then the process creates a call record for the call (step515). Thereafter, the process places the call at the end of the call queue (step516), and the process continues to step508.
Returning now to step508, if the process makes the determination that the call has not proceeded to the next call stage (no output to step508), then the process advances the call in the call queue of the present stage (step518) and the process returns to step508.
Returning now to step514, if the process makes the determination that the call is not complete (no output to step514), then the process continues to step518.
The illustrative embodiments described herein provide a method, an apparatus, and a computer usable program product for managing received calls. In response to receiving a first call from a user, the process stores a record of the first call in a table of received calls. Thereafter, in response to receiving a second call from the user within a predefined period of time after the first call was prematurely disconnected, the process identifies a second call as a prematurely terminated call. The process then places the prematurely terminated call in a queue of calls according to a set of configurable criteria and updates the record of the first call with a progress of the prematurely terminated call. Using the different embodiments described above, a user who called an automated telephone system, and who was prematurely disconnected before completing the desired transaction, can call back a second time, within a predefined period of time, and be automatically directed back to the same stage and/or place in a call queue. Consequently, the caller is not required to duplicate the navigation of the menu options or assume a place at the end of the call queue. Additionally, the call record created upon receipt of the first call can be used in order to diagnose potential problems within an automated telephone system, such as the stages or operators from which an unacceptable number of dropped calls originated.
The flowcharts and block diagrams in the different depicted embodiments illustrate the architecture, functionality, and operation of some possible implementations of apparatus, methods and computer program products. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified function or functions. In some alternative implementations, the function or functions noted in the block may occur out of the order noted in the figures. For example, in some cases, two blocks shown in succession may be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer-readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems and Ethernet cards are just a few of the currently available types of network adapters.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.