Abstract:
A distributed contact center and method of managing data transfers between the distributed parts of the contact center is provided. Distributed parts of the contact center are joined together through a known communications initiation protocol, then one or both of status information and control signals are transferred between the distributed parts using lossless communication protocols. The status information and/or control signals may be published to a large number of interested entities through the use of conference call facilities.

Description:
FIELD 
     The present invention is directed generally to distributed contact centers and more specifically to the transfer of status information and control signals between different sites in a distributed contact center. 
     BACKGROUND 
     Contact centers are employed by many enterprises to service customer contacts. A typical contact center includes a switch and/or server to receive and route incoming packet-switched and/or circuit-switched contacts and one or more resources, such as human agents and automated resources (e.g., Interactive Voice Response (IVR) units), to service the incoming contacts. Contact centers distribute contacts, whether inbound or outbound, for servicing to any suitable resource according to predefined criteria. In many existing systems, the criteria for servicing the contact from the moment that the contact center becomes aware of the contact until the contact is connected to an agent are customer-specifiable (Le., programmable by the operator of the contact center), via a capability called vectoring. Normally, in a present-day Automatic Call Distributor (ACD) when the ACD system&#39;s controller detects that an agent has become available to handle a contact, the controller identifies all predefined contact-handling queues for the agent (usually in some order of priority) and delivers to the available agent the highest-priority oldest contact that matches the agent&#39;s highest-priority queue. 
     Originally, contact centers were designed as single site operations. In other words, all of the contact center resources such as servers, agents, managers, and the like were located at a single site. A single site contact center was relatively easy to manage because all of the resources were essentially in a common environment. When an agent became available, the server controlling workflow was apprised of the availability almost instantly and could monitor the contact and agent queues in real-time. 
     As businesses become global and contact center job outsourcing becomes a viable option to many companies, contact centers are beginning to grow into multiple site operations. The resources for a contact center may be redundantly provided at each site such that every site can operate autonomously and communication between sites is not a requirement for operation. However, providing fully redundant contact center sites can become costly when the only additional resource really required is contact center agents. For this reason, many multiple site contact centers share resources. For example, one site may have all of the resources to be a complete contact center, whereas another site only has contact center agents or other resources with specific skills. The complete contact center receives all incoming contacts and routes the contacts to the other site having only agents or specialized resources. Under this scenario, contact center agent status information has to be relayed from the remote site to the ACD at the complete contact center. In fact, it is often the case in multiple site call centers that large amounts of information about the agents, skills (services), queues, and other status information needs to be transmitted between sites. An example of such a geographically distributed call center is described in US Patent Application No. 20060067506 to Flockhart et al., the entire disclosure of which is hereby incorporated herein by reference. 
     Functions that are performed as part of network management and in managing contact centers specifically include controlling, planning, allocating, deploying, distributing, coordinating, and monitoring the resources of a network. Network planning, traffic routing, load balancing, resource optimization, cryptographic key and/or license distribution, configuration management, fault management, and many other functions are examples of such data. A number of methods exist to support such network management function including, but not limited to, Simple Network Management Protocol (SNMP), Command Line Interfaces (CLIs), eXtensible Mark-up Language (XML) variants, Comm on Management Information Protocol (CMIP), and others. 
     Specifically, in fully distributed architectures such as Services Oriented Architectures (SOAs), contact centers and other large distributed telecommunications environments, such a method of data distribution would be particularly useful. Illustratively, in contact centers, large amounts of information about agents, skills (services), and queues need to be transmitted between the distributed contact center locations. The communications link should be established to the other sites by first finding them, then by making a connection (usually through firewalls), and finally providing real-time, encrypted communications with some guarantee of minimum latency. 
     SUMMARY 
     Mechanisms have been developed to facilitate the efficient transmission of status and control information between geographically disparate call centers using codec tunneling. U.S. patent application Ser. No. 11/619,504 to Davis et al., the entire contents of which are incorporated herein by reference, describes how to utilize Session Initiation Protocol (SIP) and a Real-time Transport Protocol (RTP) to communicate data between separate communication elements. This particular patent application proposed to use the capabilities of SIP to find and connect two endpoints and establish an RTP session between the endpoints. To find additional sites, a SIP INVITE message is used to establish a new session with additional remote servers, thereby making the expansion of the system somewhat inefficient. 
     Embodiments of the present invention propose the use of conference call facilities to allow interested parties (e.g., distributed locations in the case of a contact center) to dial into or connect with a secure conference call and then publish and subscribe to data which is published by other participants of the conference call. Therefore, use of conference call facilities provides an efficient mechanism for expanding the number of parties that share status and control information. 
     In the context of a contact center, the concept of using a secure conference call for data communications amongst the distributed contact center locations provides the advantage of creating a clearing house that any distributed application can participate in when they are in an active contact center location or in the case of SOA when they are a required application. 
     In accordance with at least some embodiments of the present invention, a method of sharing status and/or control information is provided that generally comprises: 
     subscribing, at a first communication site, with a conference mechanism; 
     establishing, by the first communication site, a Real-time Transport Protocol (RTP) stream with the conference mechanism; and 
     receiving, at the first communication site, at least one of status information and control signals associated with a second communication site from the conference mechanism via the RTP stream. 
     Another method is provided that generally comprises: 
     subscribing, at a first communication site, with a conference mechanism; 
     establishing, by the first communication site, a Real-time Transport Protocol (RTP) stream with the conference mechanism; and 
     providing, by the first communication site, at least one of status information and control signals to the conference mechanism for publishing to a second communication site via a separate RTP stream. 
     As can be appreciated by one skilled in the art, a single communication endpoint and/or site may be adapted to publish and subscribe to published information. The conference mechanism is a mechanism that facilitates the sharing of this published information among other subscribing entities (e.g., other communication endpoints and/or sites). 
     An RTP packet and header structure as well as the Real-time Transport Control Protocol (RTCP) is described more fully in US Patent Application No. 20030120789 to Hepworth et al., the entire disclosure of which is hereby incorporated by reference. Although embodiments of the invention are described in connection with the use of RTP, it can be appreciated by one of skill in the art that a similar media transport protocol may be employed. Accordingly, as used herein “RTP” is understood to include any standardized or non-standardized packet format for delivering audio and/or video information over a packet switched network. Allowable protocols may include any multicast and/or unicast protocols used in streaming media systems. The protocols may be designed for real-time applications like RTP or they may be designed for non-real-time application. Moreover, RTP as discussed herein can include any past, present, or future version of RTP including Secure RTP (SRTP) and those versions and derivatives of RTP not yet contemplated. 
     As can be appreciated by one of skill in the art, a contact is understood herein to include voice calls, emails, chat, video calls, fax, Instant Messages (IMs), conferences, and combinations thereof. Accordingly, a contact center may be equipped to handle any one or a number of the above-noted contact types. 
     These and other advantages will be apparent from the disclosure of the invention(s) contained herein. The above-described embodiments and configurations are neither complete nor exhaustive. As will be appreciated, other embodiments of the invention are possible utilizing, alone or in combination, one or more of the features set forth above or described in detail below. 
     As used herein, “at least one”, “one or more”, and “and/or” are open-ended expressions that are both conjunctive and disjunctive in operation. For example, each of the expressions “at least one of A, B and C”, “at least one of A, B, or C”, “one or more of A, B, and C”, “one or more of A, B, or C” and “A, B, and/or C” means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B and C together. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram depicting a distributed communication system in accordance with embodiments of the present invention; 
         FIG. 2A  is a block diagram depicting a publish data structure utilized in accordance with embodiments of the present invention; 
         FIG. 2B  is a block diagram depicting a subscribe data structure utilized in accordance with embodiments of the present invention; and 
         FIG. 3  is a flow diagram depicting a method of sharing status and/or control information in accordance with embodiments of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     The invention will be illustrated below in conjunction with an exemplary communication system. Although well suited for use with, e.g., a system using a server(s) and/or database(s), the invention is not limited to use with any particular type of communication system or configuration of system elements. Those skilled in the art will recognize that the disclosed techniques may be used in any computing application in which it is desirable to share status/control information. 
     The exemplary systems and methods of this invention will also be described in relation to analysis software, modules, and associated analysis hardware. However, to avoid unnecessarily obscuring the present invention, the following description omits well-known structures, components and devices that may be shown in block diagram form, are well known, or are otherwise summarized. 
     For purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present invention. It should be appreciated, however, that the present invention may be practiced in a variety of ways beyond the specific details set forth herein. 
       FIG. 1  shows an illustrative embodiment of a distributed communication system  100  in accordance with at least some embodiments of the present invention. The communication system  100  may comprise a plurality of communication endpoints or other types of distributed sites  108  connected to a common conference mechanism  104 . The conference mechanism  104  may be adapted to act as an information clearing house for each of the sites  108   a -N connected thereto. More specifically, the conference mechanism  104  may collect information that is published from various sites  108  and selectively share the published information with other sites  108  that have been given permissions to access the published information. 
     Permissions to access published information may be granted generically to any site  108  that is capable of connecting to the conference mechanism  104  (i.e., any site  108  that has connected to the appropriate conference number on the conference mechanism  104  and/or provided the conference mechanism  104  with a valid password). Alternatively, permissions to access published information may be granted selectively by the publishing site  108 . For instance, the publishing site  108  may identify other sites  108  that are allowed to receive published information or the publishing site  108  may identify certain requirements that another site  108  has to meet before that site  108  is allowed access to information sent to the conference mechanism  104  by the publishing site  108 . In accordance with at least some embodiments of the present invention, each site  108  may connect with the conference mechanism  104  at one of several different access permission levels (e.g., low, medium, or high access permission levels). A publishing site  108  may, for example, identify the minimum access permission level that is required for another site  108  to be eligible to receive information published by the publishing site  108 . 
     In accordance with at least some embodiments of the present invention, the conference mechanism  104  may comprise one or more data structures to help determine how published information should be distributed among the sites  108  connected thereto. Examples of the types of data structures that may be maintained at the conference mechanism  104  include a publisher list  112  and a subscriber list  116 . Although these lists are depicted as being separate lists, one skilled in the art will appreciate that a single publisher/subscriber list may be maintained on the conference mechanism  104 . The lists  112 ,  116  may be dynamically updated as sites  108  connect to and disconnect from the conference mechanism  104 . 
     As can be seen in  FIG. 1 , a plurality of sites  108   a - d ,  108   g - 108 N may be connected directly to the conference mechanism  104 . Additionally, one or more sites  108   e ,  108   f  may be connected to the conference mechanism  104  through another site  108 . In accordance with at least some embodiments of the present invention, the multiple communication sites  108  may be connected to the conference mechanism  104  via a single communication port (e.g., an Ethernet port, a phone port, an RS-232 port, etc.). Alternatively, multiple sites  108  may be connected to the conference mechanism  104  via a plurality of different interfaces or ports. In the event that a single port is used to connect two or more sites  108  to the conference mechanism  104 , multiple separate RTP sessions may still be established with each communication site  108 . 
     In accordance with at least some embodiments of the present invention, the sites  108  may correspond to a single communication endpoint (e.g., a phone, laptop, computer, etc.), a collection of communication endpoints, a single communication device (e.g., a switch, a server, a gateway, or some other intermediate communication device), and/or a collection of communication devices. A contact center is one example of a site  108  that may be connected to the conference mechanism  104  in accordance with at least some embodiments of the present invention. The contact center may be adapted to share and receive status and/or control information from other contact centers and a contact center controller or call router via the conference mechanism  104 . 
     Referring now to  FIGS. 2A and 2B  exemplary data structures  112 ,  116  utilized by the conference mechanism  104  will be described in accordance with at least some embodiments of the present invention.  FIG. 2A  depicts an exemplary publisher list  112  that is utilized to maintain identities of current publishing endpoints connected to the conference mechanism  104 . 
     The publisher list  112  may comprise a number of different data fields to facilitate the dissemination of information received from each publishing entity. Examples of such data fields include a publisher identification field  204 , an access permissions field  208 , and a backup conference mechanism(s) identifier field  212 . The publisher identification field  204  may be utilized to maintain identification information for each publishing entity that has created a secure connection (i.e., an RTP connection or SRTP connection) for sharing status and/or control information with the conference mechanism  104 . The types of identification information that may be maintained in the publisher identification filed  204  includes, but is not limited to, a network address associated with a publishing entity (e.g., an IP address, an extension, a phone number, etc.), a location identifier (e.g., an identifier of the physical location of the site  108 , an area code, or the like), a session identifier, a port identifier, or any other unique or semi-unique identifier for a communication site  108 . 
     The access permission field  208  may include information related to data access permissions granted by or otherwise associated with a publishing entity. In accordance with at least some embodiments of the present invention, a publishing entity may be adapted to define access permissions for the data that is published by the publishing entity to the conference mechanism  104 . Data, access permissions may be restricted in either a negative or positive manner. In a negative restriction, the publishing entity may identify security permissions or other requirements that must be met for another site  108  to be allowed access to information published by the publishing entity. In a positive restriction, the publishing entity may positively identify one or more sites  108  that are not allowed to access information published by the publishing entity. Thus, the access permission field  208  may include either identifiers of requirements needed to gain access to published information or identifiers of sites  108  that are allowed or not allowed to gain access to published information. 
     The backup conference mechanism(s) identifier field  212  may include information that can be used by the conference mechanism  104  to initiate and direct a re-connection of a publishing entity to another conference mechanism  104 . This may be particularly useful in the event that Quality of Service (QoS) falls below a predefined threshold for data transmissions to/from a conference mechanism  104 . In accordance with at least some embodiments of the present invention, if the conference mechanism  104  cannot support any further publishing entities, then the conference mechanism  104  may forward a request to connect to another conference mechanism  104  such that the publishing entity may still be able to connect with the status/control information clearing house. Information maintained in the backup identifier field  212  may include identifiers of potential backup conference mechanisms  104 , their associated capabilities, as well as thresholds (e.g., minimum QoS) that define when a site  108  should be transferred to a backup conference mechanism  104  identified in the field  212 . 
       FIG. 2B  depicts an exemplary subscriber list  116  that may include a subscriber identifier field  216 , an access permissions field  220 , and a backup conference mechanism(s) identifier field  224 . The backup conference mechanism(s) identifier field  224  may be similar to the same field  212  in the publisher list  112 . 
     Referring now to  FIG. 3 , an exemplary data sharing method will be described in accordance with at least some embodiments of the present invention. The method is initiated when a communication site  108  connects with a conference mechanism  104  (step  304 ). This particular step may involve the communication site  108  establishing a secure RTP stream with the conference mechanism  104 , a prerequisite of which is that the communication site  108  may need to provide authentication information to the conference mechanism  104  (step  308 ). The communication site  108  may also require some sort of authentication information from the conference mechanism  104  (i.e., mutual authentication). Once the authentication information has been validated, the RTP stream is established between the conference mechanism  104  and the communication site  108  (step  312 ). The RTP stream may be employed to transfer status and/or control information between the conference mechanism  104  and the communication site  108 . Additionally, the conference mechanism  104  may update its publishing list  112  and/or subscriber list  116 , depending upon whether the communication site  108  is acting as a publishing and/or subscribing entity. 
     After the connection between the communication elements has been established, the method continues with the communication site  108  providing the publish/subscribe parameters to the conference mechanism  104  (step  316 ). Examples of such parameters include, but are not limited to, the types of published information a particular site  108  wants to receive (i.e., control vs. status information) as well as publishing and subscription access permissions for allowing or gaining access to published information. 
     Thereafter, the method continues by waiting until a publish trigger occurs or until published information is received due to the site&#39;s  108  subscription to the conference mechanism  104  (step  320 ). Thus, the communication site  108  first determines whether a publish trigger has occurred (step  324 ). A publish trigger may include meeting or exceeding any threshold associated with making a decision to publish status and/or control information. In accordance with at least one embodiment of the present invention, a publish trigger may include any state change at the communication site  108  (e.g., when the entire communication site  108  has a global state change). Another publish trigger may include any state change of sub-entities within the communication site  108 . For instance, every time a resource (e.g., a contact center agent, IVR, voicemail, etc.) within the communication site  108  has a change in state, a publishing trigger may occur. Other publishing triggers may include the generation of a control signal. Still another publishing trigger may include receiving status information and/or control signals from another communication site  108 . This is particularly relevant to instances where once communication site  108  is in communication with a conference mechanism  104  via another communication site  108 . 
     In the event that a publishing trigger occurs, the method continues with the communication site  108  publishing the relevant status information and/or control signals to the conference mechanism  104  (step  328 ). If, however, a publishing event has not occurred, then the method continues by determining whether status information and/or control signals have been received at the conference mechanism  104  (step  332 ). This information may be received by a communication site  108  either connected directly to the conference mechanism  104  via an RTP stream or connected indirectly to the conference mechanism  104  though another communication site  108 . If not data has been received at the conference mechanism  104  from a publishing communication site  108 , then the method returns to step  320 . 
     Alternatively, if some sort of status information and/or control signals are received at the conference mechanism  104 , then the method continues with the conference mechanism  104  processing the received information and/or signals (step  336 ). In processing the receiving data, the conference mechanism  104  may utilize its publisher list  112  to determine if the received data has any access restrictions placed thereon as well as its subscriber list  116  to determine where the data can be sent. Depending upon this determination, the conference mechanism  104  may forward the received data to one or more subscribing entities allowed access to such data. Thus, the conference mechanism  104  operates as a conference bridge for status information and/or control signals for the communication sites  108  connected thereto. But rather than being a typical conference bridge, the conference mechanism  104  utilizes its various RTP streams with each communication site  108  to distribute such data. Moreover, the received data may include an identifier (e.g., that identifies the publishing entity) to help the conference mechanism  104  properly process the received data. 
     After the conference mechanism  104  has processed such data, the method continues by determining whether the conference quality is satisfactory with one or more of its RTP streams (step  340 ). This step may include performing a quality check on its connections with the communication sites  108 . This step may also include polling the subscriber communication sites  108  to determine if published information sent to such entities was, in fact, received by those subscribing entities. 
     If the quality is satisfactory, then the method returns back to step  320 . Conversely, if the quality of communications with one or more communication sites  108  is not up to quality thresholds, then the method continues with the conference mechanism  104  identifying a backup conference mechanism for one or more of the sites  108  connected thereto (step  344 ). This information may be retrieved from one or both lists  112 ,  116 , depending upon whether the poor conference quality is associated with a publishing and/or subscribing entity. Thereafter, the method returns to step  304  where the communication site  108  attempts to connect with an alternative conference mechanism  104 . 
     While the above-described flowcharts have been discussed in relation to a particular sequence of events, it should be appreciated that changes to this sequence can occur without materially effecting the operation of the invention. Additionally, the exact sequence of events need not occur as set forth in the exemplary embodiments. The exemplary techniques illustrated herein are not limited to the specifically illustrated embodiments but can also be utilized with the other exemplary embodiments and each described feature is individually and separately claimable. 
     The systems, methods and protocols of this invention can be implemented on a special purpose computer in addition to or in place of the described communication equipment, a programmed microprocessor or microcontroller and peripheral integrated circuit element(s), an ASIC or other integrated circuit, a digital signal processor, a hard-wired electronic or logic circuit such as discrete element circuit, a programmable logic device such as PLD, PLA, FPGA, PAL, a communications device, such as a server, personal computer, any comparable means, or the like. In general, any device capable of implementing a state machine that is in turn capable of implementing the methodology illustrated herein can be used to implement the various communication methods, protocols and techniques according to this invention. 
     Furthermore, the disclosed methods may be readily implemented in software using object or object-oriented software development environments that provide portable source code that can be used on a variety of computer or workstation platforms. Alternatively, the disclosed system may be implemented partially or fully in hardware using standard logic circuits or VLSI design. Whether software or hardware is used to implement the systems in accordance with this invention is dependent on the speed and/or efficiency requirements of the system, the particular function, and the particular software or hardware systems or microprocessor or microcomputer systems being utilized. The analysis systems, methods and protocols illustrated herein can be readily implemented in hardware and/or software using any known or later developed systems or structures, devices and/or software by those of ordinary skill in the applicable art from the functional description provided herein and with a general basic knowledge of the communication arts. 
     Moreover, the disclosed methods may be readily implemented in software that can be stored on a storage medium, executed on a programmed general-purpose computer with the cooperation of a controller and memory, a special purpose computer, a microprocessor, or the like. In these instances, the systems and methods of this invention can be implemented as program embedded on personal computer such as an applet, JAVA® or CGI script, as a resource residing on a server or computer workstation, as a routine embedded in a dedicated communication system or system component, or the like. The system can also be implemented by physically incorporating the system and/or method into a software and/or hardware system, such as the hardware and software systems of a communications device or system. 
     It is therefore apparent that there has been provided, in accordance with the present invention, systems, apparatuses and methods for sharing status and/or control information among a number of different entities. While this invention has been described in conjunction with a number of embodiments, it is evident that many alternatives, modifications and variations would be or are apparent to those of ordinary skill in the applicable arts. Accordingly, it is intended to embrace all such alternatives, modifications, equivalents and variations that are within the spirit and scope of this invention.