Universal state-aware communications
09774638 · 2017-09-26
Assignee
Inventors
Cpc classification
H04M3/42365
ELECTRICITY
H04L67/54
ELECTRICITY
H04M3/42093
ELECTRICITY
International classification
G06F15/16
PHYSICS
Abstract
A communications system for general business environments that exploits knowledge of user state to provide advantages of efficiency and control for individual users and for the business. The communications system also provides particular advantages in environments where users have multiple communication devices and for communications of a business with external parties. In other aspects, the communication system provides features of application flexibility and system fault-tolerance with broad applicability to communication systems. The communication system includes a controller that receives requests for establishing communications when a user is in an appropriate state to receive communications and communicates state of the user to other users. The controller receives a user request for establishing a communication when the user is not in the appropriate state for communication, receives a user request for a state change to the appropriate state to receive the communication, and initiates the communication without changing state of the user.
Claims
1. A computer-implemented method for establishing communications among users, the method comprising: maintaining in a database by a controller of a server, a user state for each user device, wherein each user is associated with one or more user devices, and the database is stored in a persistent storage device associated with the server; receiving, from a first user device of a first user, a request for establishing a communication session with a second user of a plurality of users, wherein the plurality of users are agents of a call center; determining one or more second user devices associated with the second user based on a first user identifier (ID) identifying the first user; accessing the database to determine a user state for each of the second user devices; placing the request for establishing a communication session in a queue as a pending request if none of the second devices has a user state satisfying a predetermined user state; subsequently receiving a request from an administrative entity of the call center for changing a user state on a target user device of the second user, the request being made according to an administrative condition involving configuring a call evaluation object to determine a corporate priority that overrides an order of the queue based on characteristics of the requested communication session, characteristics comprising at least a media and a data context of the requested communication session, the request for changing a user state including a second user identifier (ID) identifying the second user, a device ID identifying a user device to be changed, and a requested state specifying a target user state; accessing the database to identify a device entry corresponding to the target user device based on the user ID and device ID; updating a user state of the device entry of the database based on the requested state extracted from the request for changing a user state; in response to a signal indicating that the device entry has been updated, examining the user state for each of the second user devices of the second user to identifying one or more of the second devices that have a user state satisfying the predetermined user state; and establishing a communication session with the first device of the first user and one of the identified second user devices of the second user that have the predetermined user state.
2. The method of claim 1, wherein establishing a communication session with the first device of the first user and one of the identified second user devices of the second user comprises: sending an invite message to each of the identified second user devices that have the predetermined user state; receiving an accept message from a third user device of the identified second user devices; and establishing the communication session between the first device of the first user and the third device of the second user.
3. The method of claim 2, further comprising, in response to the accept message received from the third user device, transmitting a disconnect message to a remainder of the identified second user devices of the second user that have the predetermined user state to withdraw an invitation specified in the invite message.
4. The method of claim 2, further comprising: accessing the database to identify a third device entry corresponding to the third user device of the second user based on a third device ID of the third user device; and updating a user state of the second user of the third device entry of the database corresponding to the third user device to reflect a current status of the second user and the third user device with respect to the communication session that has been established between the first user and the second user.
5. The method of claim 1, further comprising: in response to the signal indicating that the device entry has been updated, identifying all pending requests in the queue that are associated with the second user based on the second user ID of the second user; and for each of the identified pending requests for the second user, examining the user state of each of a plurality of user devices associated with the second user to determine whether there is any of the user devices of the second user that can be used to handle any of the identified pending requests.
6. The method of claim 1, further comprising: in response to the signal indicating that the device entry has been updated, accessing user configuration data of the first user to determine a notification subscription of the first user; and transmitting a notification message to the first user device of the first user indicating that the user state of the second user has been updated, in response to determining that the first user has subscribed notification associated with the second user.
7. The method of claim 1, further comprising accessing user configuration data of the second user to determine the second user devices that have been configured by the second user to specifically handle communications with the first user.
8. The method of claim 1, wherein the communication session is established via a communication media including at least one of voice, video, email, instant messaging (IM), text, and a public switched telephone network (PSTN).
9. A non-transitory machine-readable medium having instructions stored therein, which when executed by a processor, cause the processor to perform operations for establishing communications among users, the operations comprising: maintaining in a database by a controller of a server, a user state for each user device, wherein each user is associated with one or more user devices, and the database is stored in a persistent storage device associated with the server; receiving, from a first user device of a first user, a request for establishing a communication session with a second user of a plurality of users, wherein the plurality of users are agents of a call center; determining one or more second user devices associated with the second user based on a first user identifier (ID) identifying the first user; accessing the database to determine a user state for each of the second user devices; placing the request for establishing a communication session in a queue as a pending request if none of the second devices has a user state satisfying a predetermined user state; subsequently receiving a request from an administrative entity of the call center for changing a user state on a target user device of the second user, the request being made according to an administrative condition involving configuring a call evaluation object to determine a corporate priority that overrides an order of the queue based on characteristics of the requested communication session, characteristics comprising at least a media and a data context of the requested communication session, the request for changing a user state including a second user identifier (ID) identifying the second user, a device ID identifying a user device to be changed, and a requested state specifying a target user state; accessing the database to identify a device entry corresponding to the target user device based on the user ID and device ID; updating a user state of the device entry of the database based on the requested state extracted from the request for changing a user state; in response to a signal indicating that the device entry has been updated, examining the user state for each of the second user devices of the second user to identifying one or more of the second devices that have a user state satisfying the predetermined user state; and establishing a communication session with the first device of the first user and one of the identified second user devices of the second user that have the predetermined user state.
10. The non-transitory machine-readable medium of claim 9, wherein establishing a communication session with the first device of the first user and one of the identified second user devices of the second user comprises: sending an invite message to each of the identified second user devices that have the predetermined user state; receiving an accept message from a third user device of the identified second user devices; and establishing the communication session between the first device of the first user and the third device of the second user.
11. The non-transitory machine-readable medium of claim 10, wherein the operations further comprise, in response to the accept message received from the third user device, transmitting a disconnect message to a remainder of the identified second user devices of the second user that have the predetermined user state to withdraw an invitation specified in the invite message.
12. The non-transitory machine-readable medium of claim 10, wherein the operations further comprise: accessing the database to identify a third device entry corresponding to the third user device of the second user based on a third device ID of the third user device; and updating a user state of the second user of the third device entry of the database corresponding to the third user device to reflect a current status of the second user and the third user device with respect to the communication session that has been established between the first user and the second user.
13. The non-transitory machine-readable medium of claim 9, wherein the operations further comprise: in response to the signal indicating that the device entry has been updated, identifying all pending requests in the queue that are associated with the second user based on the second user ID of the second user; and for each of the identified pending requests for the second user, examining the user state of each of a plurality of user devices associated with the second user to determine whether there is any of the user devices of the second user that can be used to handle any of the identified pending requests.
14. The non-transitory machine-readable medium of claim 9, wherein the operations further comprise: in response to the signal indicating that the device entry has been updated, accessing user configuration data of the first user to determine a notification subscription of the first user; and transmitting a notification message to the first user device of the first user indicating that the user state of the second user has been updated, in response to determining that the first user has subscribed notification associated with the second user.
15. The non-transitory machine-readable medium of claim 9, wherein the operations further comprise accessing user configuration data of the second user to determine the second user devices that have been configured by the second user to specifically handle communications with the first user.
16. The non-transitory machine-readable medium of claim 9, wherein the communication session is established via a communication media including at least one of voice, video, email, instant messaging (IM), text, and a public switched telephone network (PSTN).
17. A data processing system for establishing communications among users, the system comprising: a processor; a memory; a database maintained in the memory; and a controller executed from the memory by the processor, cause the controller to perform operations for establishing communications among users, the operations including maintaining in the database a user state for each user device, wherein each user is associated with one or more user devices, and the database is stored in a persistent storage device associated with the server, receiving, from a first user device of a first user, a request for establishing a communication session with a second user of a plurality of users, wherein the plurality of users are agents of a call center, determining one or more second user devices associated with the second user based on a first user identifier (ID) identifying the first user, accessing the database to determine a user state for each of the second user devices, placing the request for establishing a communication session in a queue as a pending request if none of the second devices has a user state satisfying a predetermined user state, subsequently receiving a request from an administrative entity of the call center for changing a user state on a target user device of the second user, the request being made according to an administrative condition involving configuring a call evaluation object to determine a corporate priority that overrides an order of the queue based on characteristics of the requested communication session, characteristics comprising at least a media and a data context of the requested communication session, the request for changing a user state including a second user identifier (ID) identifying the second user, a device ID identifying a user device to be changed, and a requested state specifying a target user state, accessing the database to identify a device entry corresponding to the target user device based on the user ID and device ID, updating a user state of the device entry of the database based on the requested state extracted from the request for changing a user state, in response to a signal indicating that the device entry has been updated, examining the user state for each of the second user devices of the second user to identifying one or more of the second devices that have a user state satisfying the predetermined user state, and establishing a communication session with the first device of the first user and one of the identified second user devices of the second user that have the predetermined user state.
18. The system of claim 17, wherein establishing a communication session with the first device of the first user and one of the identified second user devices of the second user comprises: sending an invite message to each of the identified second user devices that have the predetermined user state; receiving an accept message from a third user device of the identified second user devices; and establishing the communication session between the first device of the first user and the third device of the second user.
19. The system of claim 18, wherein the operations further comprise, in response to the accept message received from the third user device, transmitting a disconnect message to a remainder of the identified second user devices of the second user that have the predetermined user state to withdraw an invitation specified in the invite message.
20. The system of claim 18, wherein the operations further comprise: accessing the database to identify a third device entry corresponding to the third user device of the second user based on a third device ID of the third user device; and updating a user state of the second user of the third device entry of the database corresponding to the third user device to reflect a current status of the second user and the third user device with respect to the communication session that has been established between the first user and the second user.
21. The system of claim 17, wherein the operations further comprise: in response to the signal indicating that the device entry has been updated, identifying all pending requests in the queue that are associated with the second user based on the second user ID of the second user; and for each of the identified pending requests for the second user, examining the user state of each of a plurality of user devices associated with the second user to determine whether there is any of the user devices of the second user that can be used to handle any of the identified pending requests.
22. The system of claim 17, wherein the operations further comprise: in response to the signal indicating that the device entry has been updated, accessing user configuration data of the first user to determine a notification subscription of the first user; and transmitting a notification message to the first user device of the first user indicating that the user state of the second user has been updated, in response to determining that the first user has subscribed notification associated with the second user.
23. The system of claim 17, wherein the operations further comprise accessing user configuration data of the second user to determine the second user devices that have been configured by the second user to specifically handle communications with the first user.
24. The system of claim 17, wherein the communication session is established via a communication media including at least one of voice, video, email, instant messaging (IM), text, and a public switched telephone network (PSTN).
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments of the present invention.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(34)
(35)
DETAILED DESCRIPTION OF THE INVENTION
(36) A description of example embodiments of the invention follows.
Structure
(37)
(38) The communication control system described relies on the underlying environment to provide the communications media input and output (audio, video, text), the facilities to establish communications connections, and the data communications linkages between the elements of the system. In the particular embodiment described, these functions are supplied by the Windows environment, including in particular the communications capabilities of Microsoft Real-Time Communications (RTC). In this case the computers are communication devices—using a microphone and speaker for voice or an attached camera for video. Other embodiments are described later, including other types of smart communications devices and more traditional PBX phones. The control system of the invention is common to all of these examples, using the communications media and data networking that are present in the environment.
(39) The Call Processing Server (CP Server) 101 performs three primary functions on behalf of the User Clients 102: 1. It enables User Clients 102 to set their states and receive current values of state for themselves and other users and devices as presented by the logic of the CP Server 101. 2. It enables the User Clients 102 to request and receive communications services. These services may be requested to take place immediately or when a specified a specified combination of user and devices states is present (pending services). 3. It enables the User Clients 102 to manage pending services by prioritizing, activating, deactivating, deleting, inserting, and transferring individual items.
(40) In one embodiment the CP Server 101 runs on Microsoft Windows NT or Windows Server 2003 with a database that is implemented with Microsoft SQL Server 2000. The logical structure of the CP Server application is given in
(41) The User Client 102 enables users to access the above CP Server functions. As such, it includes both user interfacing functions and communications functions with the server 101. In a particular embodiment the User Client 102 operates as a Windows XP application, and the user interfacing functions are based on Windows graphical displays. Audio and video media can be provided by Universal Serial Bus (USB) devices such as an i750 telephone from Clarisys, a DSP-100 headset from Plantronics, Inc., and a QuickCam Pro 3000 video camera from Logitech, Inc.
(42) The User Client 102 includes two distinct types of interfaces to CP Server 101. The first is a message-based interface used to communicate state and service operations between client 102 and server 101. This is the Server Messaging interface. The second, the Call Status Interface, is a data-oriented interface that enables the client 102 to operate on a server-maintained list of pending communications. These are described in detail in the
(43) The structure of the user client 102 is presented in
(44) The Admin Client 103 in the particular embodiment is a Windows XP or Windows Server 2003 application. The interface between the Admin Client 103 and the Call Processing Server 101 is by update of the CP Server's database. Updates to the database are propagated to real-time call processing as described the discussion of CP Server architecture in
(45) The Admin Client 103 supports two primary areas of configuration: 1. Defining the characteristics of the users, devices, and other system objects. 2. Specifying the functional scripts that determine how the system responds to service and state events. These scripts are stored in the database as collections of link, node, and page items with properties defined by database fields.
(46) For reporting purposes, the Admin Client 103 also has read access to historical tables of system events. The structure of the Admin Client is given in
(47) Because the interface used by the Admin Client 103 is exclusively to the database and because all of the configured items, including the scripts, can be understood as database entries, the Admin Client functions can be supported by any database client development tool. This enhances the integration of the communication system with user business applications, as presented in
(48)
(49)
(50) As background for
(51) ACD's have long recognized that agents frequently have work to do after a call is completed and before they are prepared to take a new call. “After call work” has consequently become a standard ACD agent state during which the agent is unavailable to take another call.
(52) In a general business environment, different calls may have different priorities (so that it might be desirable and appropriate for one with a higher priority to interrupt another with a lower priority), and the appropriateness of a communication for an activity depends upon what that activity actually is. It is advantageous for the definition of user state to reflect the dimensions of user activity.
(53)
(54) A non-exhaustive list of possible user states follows:
(55) SIGNEDON
(56) AVAILABLE
(57) TALKING
(58) INAPPLICATION
(59) IDLE
(60) DONOTDISTURB
(61) BUSY
(62) NORMAL
(63) AFTERCALLWORK
(64) MEETING
(65) AWAY
(66) TRAVELING
(67) ATHOME
(68) NOTINOFFICE
(69) HOLIDAY
(70) BREAK
(71) LUNCH
(72)
(73) In addition to user states as shown in
(74) A non-exhaustive list of possible device states follows:
(75) CONNECTED
(76) ACTIVE
(77) IDLEDEVICESTATE
(78) ALERTING
(79) CONFERENCE
(80) HOLD
Initiating
(81)
(82)
(83) The communication request (
(84)
(85)
(86) The data fields in
(87) Typically a user will have access only to his own communications and his own ordering. Users with system privileges can have additional permissions, such as the ability to access and set the corporate priority order. An ordinary user can set his order field to change his user priority order for the call, set appropriate values of the delete field to activate, deactivate, and delete the call, and, if he is the called user, change the called user field to transfer the pended request. The pending order values determine which call associated with a given user will execute when a user changes state (e.g. which call will attempt to complete when a user becomes Available with multiple calls pending and other users in appropriate states). The details of this logic are given in
(88) In the particular embodiment described, the Call Status data is contained in the Call Status table in the CP Server database as described in the discussion of
(89) The next figures describe the detailed structure of the CP Server.
(90) The figure also shows the client interfaces to the CP Server. For the User Clients 102 the Server Message interface is indicated by arrow 808 connecting the User Clients with the CP process, the Call Status interface is shown by arrow 809 connecting the User Clients with the Call Status table 805, and the User Client reporting interface is show by arrow 810 connecting the User Clients with the Historical Data tables 806. For the Admin Clients 103 the configuration interface is shown by arrow 811 connecting the Admin Clients with the Config tables 807, and the Admin Client reporting interface is shown by arrow 812 connecting the Admin Clients with the Historical Data tables 806.
(91) The relationship among the three CP Server components 802, 803, 804 is as follows. Updates to the database can take place either to the Call Status table (for call management purposes) or to the configuration tables managed by the Admin Clients 103. To process these updates the DBM process regularly scans specific tables to identify inputs. In doing this the DBM process can consolidate multiple physical tables acting as input for the same logical table. It is also possible to have multiple DBM processes functioning simultaneously. The CP process also interacts with the DBM process (or processes) to record information in the database. This includes, for example, inserting or updating records in the Call Status table or inserting historical records in the Call Detail table. Write operations are performed in parallel on all active DBM processes.
(92) For each client-updateable table, specific fields serve as flags to indicate changes. For the Call Status table the sign of the deleted field in the Call Status data of
(93)
(94) In
(95) Starting at the bottom, we see how these CP process resources get applied to system events. Events come in at the bottom of the figure from the system clients 102 or 103. For event processing, all client actions appear as messages 911. The messages are generated by the clients themselves for the message interfaces or by the database scanning processes for database updates. For example, communication requests as in
(96) Two types of results are generated by the CP object processing: Timer events 907 and Output commands 910. Timer events are themselves inputs to the call processing structure and are introduced through the Input Queue 908 back into the Event Dispatcher 906. Output commands are actions to be taken as a result of event processing (e.g. send a state message or a call notification). These lead to Output messages 912. Most straightforwardly these messages are sent to the clients 102 or 103 that receive the state notifications or calls. In addition, however, these messages can be fed back into call processing as an interaction between CP objects (for example if multiple CP objects are waiting for alternative events and receipt of one cancels the others). For this reason the Output message block 912 is also connected to the Message parsing block 909.
(97)
(98) At this point there is a dichotomy of behavior depending on the object types. If this is an object without registrations (e.g. Send state) then the object has completed its function and proceeds to the final block 1009 Select Next Object. This causes the next object to be located in the database 1010, created 1015, and completed.
(99) On the other hand, if this object does create registrations (e.g. Pend call) then the object registers its callback 1005 and waits for an event. An event arrival from Dispatch 906 then hits the registration 904 and initiates the callback function 1007 (as described for Object Callback 905). This causes the callback actions to be performed 1008 (e.g. execute the pending call).
(100) Once that is done, this object has completed its function. It selects the next node 1009 using the link data 1010 in the database, and then starts that node 1015 and ends.
(101)
(102) The presentation is this figure is organized around a user device 1101, which could be one of user devices 201-203 shown in
(103) The device object includes a reference to the user 1105, who in turns references all devices which he either owns or on which he is currently signed on. The device also includes references to any communication session in which it participates though the half-com objects 1107. These are half-com objects, since what they reference is the local end of the call. The half-com objects are in turn referenced by CP objects concerned with the processing of the calls.
(104) The general case, with multiple users per device, is straightforward but more complex to draw. In that case the fundamental entity is a user-device, the basic entity for user state as described in
(105)
(106) The User Interactions 1201 show five interfaces to interact with the user. The primary display component is the Call & State Control 1204. This enables the user to make and receive communication requests and to set his state in the various dimensions as indicated in
(107)
(108)
(109) Media I/O may or may not have an associated display. If the Media is voice, then the media input and output are provided by audio devices, for example the microphone and speaker of the USB headset mentioned earlier.
(110) Pending Call Management 1205 provides the user interface to support interaction with the Call Status data from
(111) User State Monitoring 1206 displays state information about other users (“buddies”) or devices that the user has chosen to observe. As noted previously, the displayed information represents a scripted response to state changes requested by those users and not necessarily the actual user state information itself. In the particular embodiment described user state information is presented by display 1265 in
(112) Historical reporting from the system database is presented by the report interface 1207. An example report 1272 is shown is
(113) The Software Subsystems 1202 mediate between the communications interfaces and the user interactions. User State Processing 1210 handles state change messages and keeps a list of all states associated with the observed buddies and with the client user. Call state processing 1209 handles communication request and status messages and keeps an updated list of all communications for this user so as to drive the displays and user interactions. Media management 1208 associates the media inputs from 1203 with the external media interface 1212. Report processing prepares specific reports based on read-only queries over the data interface 1215.
(114) Of the four interface modules 1212-1215, two have already been discussed and one is new. The Server Message Interface 1213 and the Call Status Interface 1214 are the two interfaces to the server discussed in association with
(115) The Media Interface 1212 is the means by which the actual media connections for communications are established. In the particular embodiment described this is done using the Real-Time Communication (RTC) capability provided with the Windows XP operating system. Microsoft RTC includes the capability to establish voice, video, and Instant Messaging connections over an Internet Protocol (IP) network based on either IP or Session Initiation Protocol (SIP) network addresses. The Reporting Data Interface 1215 is a database query interface to access historical data on the CP Server. As shown in the figure, in the particular embodiment described both the Call Status Interface and the Reporting Data Interface are query interfaces to the system database. However, their roles are functionally distinct and other implementations could treat them differently.
(116)
(117) There are three primary User Interaction components 1301 reflecting the functions of the Admin Client: System object configuration 1303, Call Handling configuration 1304, and Reporting 1305. The interactions associated with the system object configuration tend to be grid-oriented. For example, the user of the Admin Client is able to create and delete users and devices and associate them with each other via ownership. The Admin client is also the means to configure call evaluation objects, which determine corporate priorities from the call characteristics in
(118) Call handling is presented to the user by a visual scripting language. As noted earlier, scripts are stored as collections of links and nodes on pages and are drawn and edited as functional flow charts. Reporting gives Administrative personnel access to historical results for groups of individual users. A subset of the Admin Client functionality is available to an individual user to set call handling options for himself.
(119) System object processing 1306, Call Script processing 1307, and Report processing 1308 mediate between the user interactions and the database tables in which the information is stored. The update procedure includes the capability to schedule the time at which the updates will be loaded into real-time call processing. The updates themselves are made to the System object tables for System Object processing and to the Link, Node, and Page tables for the Script processing. For Report processing the data access is read-only.
(120) The final figure of this section presents a hardware architecture for deployment of the CP Server in a large-scale system. While the CP Server operates as a single functional entity, implementation on a single machine may not satisfy requirements for fault-tolerance and scalability that arise for large systems.
(121) In this architectural diagram there are three copies of the CP Server 101 providing call processing services in a redundant way to two sample User Clients 102. The three copies of the CP Server maintain the same database configuration for call processing, as provided by the elements in the top half of the figure. In the figure there are two pairs of replicated databases 1401, 1402 and 1403, 1404 that are combined by independent DBM processes 803 into consolidated data images that are presented to all of the CP Servers (see
(122) Additionally, in the bottom half of the figure, one sees how the CP Servers acquire the state information from other CP Servers, so that one can take over processing from another in case of failure. The distribution of state information is by a new type of system element, the Registration Client 1405. A Registration Client sends Viewuser and Viewdevice messages (
(123) With two Registration Clients as in the figure, the distribution of state information can be made redundant, as each CP Server receives events from each of the Registration Clients. To exploit this architecture, the CP Servers support the capability for redundant state notification. Any client receiving state messages from multiple sources will normally receive multiple copies of each state change. With redundant state notification, a counter and server id is attached to each state value, so duplicates can be removed wherever they are received.
(124) If one of the CP Servers fails, then the failure is detected by heartbeat, and its clients can logon to any other server, as indicated by the dashed lines from User Clients 102. The logon follows the normal procedure and new CP Server has both the database configuration and the current state information necessary to provide service.
Operation
(125) This section describes operational procedures using the structures described in the previous section. In particular, we describe the information flows associated with the interface structures that have been defined.
(126)
(127) Following this initialization the client is ready to initiate communication requests.
(128) The ordinary communication sequence in
(129) As noted in the figure, the Useranswer message contains a network identifier for the receiving device. This is forwarded with the Useranswer message to the initiating device. With this device identifier, the originating device then establishes the media for the communication session. As noted in
(130) Pending call handling in
(131) This ends the first stage of the sequence. Because this is a pended call, call processing is suspended until the two parties are in appropriate states.
(132) Call processing picks up again when the calling and called users have entered the appropriate states. Since they will have entered the states on specific devices, only those devices will be involved in subsequent call processing. In the figure, only one of the devices is still involved for each party.
(133) The first message that is sent is a Pendinvite. The Pendinvite contains the same fields as a regular Invite, but is sent to the originator of a pending call to indicate that the call is now ready to execute. In the figure the originating user accepts the call by sending a Useranswer message. The call can also be rejected by sending a Disconnect. Once the originating user accepts the call, then the call can complete as in
(134)
(135) In
(136) In
(137)
(138)
(139)
(140) As indicated, the user of this interface can define the details of the communication item using the fields of
(141) As will be noted in the discussion of alternative clients, this use of the Call Status interface to initiate communication is particularly adapted database or web-service oriented clients, such as web servers, Interactive Voice Response (IVR) systems, and CRM systems.
Other Embodiments
(142) As noted at the beginning, the communications control system exploits knowledge of user state to deliver communications efficiency benefits in general business environments. It is independent of the specifics of the network and user interactions, as well as the specifics of the underlying technology of implementation.
(143) The remaining figures describe options for use of the communications control system in other environments. These embodiments are implemented through alternative clients that access the functions of the CP Server through capabilities presented by the CP Server interfaces (e.g. setting state, requesting communications). Clients may access subsets of full functionality. For example a client may just set state for a user on one or more devices, or it may make a pending communication request for a call that will be established with a different device. Clients may also use the interface in something other than an end-user role (as in the multi-user role of the Web server and the third-party roles of the Workflow in
(144) From an implementation point of view these interfaces themselves can be packaged in a variety of ways, using the many methods that exist for applications to interwork with each other. For example, communications could be invoked and delivered via a local Component Object Model (COM) object as defined by Microsoft Corporation and state setting or the Call Status interface could be presented as XML Web Services as defined by the World Wide Web Consortium (W3C). Other alternatives include the Common Object Request Broker Architecture (Corba) from the Object Management Group, Enterprise Java Beans from Sun Microsystems, and many others. These implementation alternatives are evident to one skilled in the art. Similarly the call communication system is independent of the operating system or application execution environment of the clients.
(145)
(146) An Interactive Voice Response system (IVR), for example the Conversant® system from Avaya Technology Corporation, enables automated telephone interaction with users using either speech recognition or telephone tones. This type of interface would typically be used to set state or initiate pended communications from a telephone with a dialed connection to the IVR system. IVR systems typically support both message-based and data-oriented computer interfacing and hence can be configured for interaction with the CP Server using either the Server Message Interface or the Call Status Interface.
(147) The Workflow example represents a data processing application interfacing to the communications system. In this case the interacting client is the data processing application itself, for example a Customer Relationship Management (CRM) application such as Siebel Sales 7.5 from Siebel Systems, Inc., rather than a human user. A CRM application typically manages work activities and supporting data within a business. Using the Call Status interface, the Workflow application can direct the communication system in response to business project states. For example, it can place a pending call into the system to deal with a product delivery that has changed to the “delayed” state and adjust the priority order of communications for a specific task that has entered the “critical” state. In this example the Call Status interface is used in third-party form, with the Workflow client placing and adjusting communications items for human users. The Workflow client can also use the Server Message interface in a third-party way to set human user states depending on the project states associated work activities in the CRM system.
(148) A Softphone is a desktop application that controls the operation of a user telephone device, typically on a PBX or ACD. An existing softphone application can be adapted to work with the CP Server and in this way can support management of pending calls in its own communication environment. In the PBX case this will normally include delivery of calls to existing PBX phones. A customized softphone adapted to the CP Server interfaces can integrate a customer business application with the tasks and priorities used by the call processing rules and can provide the data necessary for application collaboration between originating and terminating users.
(149) Application-specific state sources refer to the many types of state information that may be useful to particular business applications. These state-sources can use the state-setting function from the CP-Server interface to affect states for users on devices. An example is Global Positioning System (GPS) location data. GPS data can be in a user state element for a delivery truck operator, so that a communication can be setup to discuss particular requirements of an area the truck operator is serving.
(150)
(151)
(152)
(153) The media portion of the Interworking Client (2603, 2605, 2607, 2610, 2612) may or may not be used in a specific client, depending up whether the media actually traverse the client or are redirected from the client using the capabilities of the signaling interface 2604. When the media passes through the client, then the operation of the system is quite simple: the call offering from the originating network is repeated on the terminating network, and once the call is accepted, both calls are answered and linked together through the media stream on the client. This works for calls that are either incoming and outgoing to the system. Redirection can be used as an alternative where the external communication is compatible with media control on the User Clients 102. In this case, an incoming call can be redirected from the Interworking Client to the target User Client 102. It is also possible that some media such as Instant Messaging text messages would traverse the client whereas other media such as voice would be redirected.
(154)
(155)
(156)
(157)
(158) Since the SIP protocol supports redirect and is consistent with the media interface of the User Client in the particular embodiment described, the communication media path (indicated by the heavy lines from 3004 to 3005 for the PSTN call 3006 and from 3005 to 3002 for the SIP voice call 3007) does not need to pass through the PSTN Interface Client 3003. In fact, the SIP protocol supports both the redirect and proxy modes from
(159)
(160)
(161) Viewed somewhat differently this example also describes a new kind of contact system linking an external caller and the company he is calling. With the web interface 3211 the external caller can register a request to communicate when he is available, and he can provide his state either using the web 3211 or by specifying an Instant Messaging client 3106 whose state should be used. Since the call will be established based on the caller's state, there is a potential to avoid waiting on hold. In addition, from the point of view of the receiving company, there is a possibility to enhance service by enabling particular employees to work with particular outside clients, something that is awkward and inefficient with traditional ACD technology.
(162)
(163) It should be noted that with the three clients in
(164) While this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.