This invention relates to telecommunications equipment, and more particularly, to a system and method for distributed multi-party call control.
In a distributed pooled call manager architecture, multiple call managers reside in multiple processing platforms and process calls in a load-sharing mode. This architecture provides the advantage of flexibility, scalability, reliability, and geographical diversity. However, such architecture presents a dilemma in processing multi-party calls. Although the originator and terminator of a single call leg can be guaranteed to be processed by the same call manager, the multiple legs involved in a multi-party call are likely to be processed by different call managers on different processing platforms. Therefore, coordination between the call managers of the various legs of a multi-party call is required.
In order to enjoy the full benefits and advantages of a distributed call processing architecture, it is imperative that a protocol to coordinate the various legs of the multi-party call is provided. The present invention provides a way for call managers residing across different processing platforms to communicate and establish control of the multi-party calls.
In accordance with an embodiment of the present invention, a method of inter-call manager call control includes the steps of establishing a first leg of a multi-party call, adding a second leg of the multi-party call, associating the second leg with the first leg of the multi-party call, determining which of the first leg or the second leg to be the controlling or controlled legs of the multi-party call, and requesting a voice path to the controlled leg by the controlling leg to establish the multi-party call.
In accordance with another embodiment of the present invention, a method of setting up a multi-party call includes the steps of establishing a two-party call between an originator and a terminator, the two-party call forming a first leg of a multi-party call. Thereafter creating a second leg of the multi-party call involving the originator or terminator of the two-party call and a new terminator or a new originator of the second leg. The method then includes the steps of determining which of the first leg or the second leg to be the controlling or controlled legs of the multi-party call, and requesting a voice path to the controlled leg by the controlling leg to establish the multi-party call.
In accordance with yet another embodiment of the present invention, a distributed call manager architecture includes a first call manager residing on a first processor and processing an original leg of the multi-party call between an originator and a terminator, and a second call manager residing on a second processor and processing a new leg of the multi-party call, and sending to the first call manager a request to attach to the original leg of the multi-party call, the second call manager further sending to the first call manager a request to play an alert tone to a new terminator of the new leg of the multi-party call, the second call manager further sending to the first call manager a request to make a voice path from the new leg to the original leg of the multi-party call.
In accordance with another embodiment of the present invention, a distributed call manager architecture includes a first call manager residing on a first processor and processing an original leg of the multi-party call between an originator and a terminator, the first call manager requesting an initiation of a new leg of the multi-party call, and a second call manager residing on a second processor and processing the new leg of the multi-party call, and sending to the first call manager a request to make a voice path from the new leg to the original leg of the multi-party call to a new terminator.
For a more complete understanding of the present invention, the objects and advantages thereof, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
The preferred embodiment of the present invention and its advantages are best understood by referring to
Referring to
Referring to
According to the present invention, an inter-call manager messaging protocol is used to establish and break the association between two legs to form a multi-party call. For each multi-party call, there is a controlling leg and a controlled leg. There is further a party in the multi-party call that is the controller of the call. For example, in the scenario shown in
ATTACH_REQ and RESP—the sending leg forms attachment to an existing call leg for call waiting or operator barge-in. The sending leg is the controlling leg.
INITIATE_REQ and RESP—the sending leg requests a new leg be started for three-party calling. The receiving leg is the controlling leg once it is established.
DETACH_REQ/RESP—The controlling leg is telling the controlled leg that it is detaching from the call. The controlled leg may or may not continue the call as a normal two-party call depending on the data in the detach request. A race condition can occur between the controlled and controlling legs both disconnecting at the same time. In that case, the RELEASE_NOTIFICATION and DETACH_REQ pass each other with each leg thinking the other will continue in the call. The responsibility of catching this race condition and dealing with it falls on the controlling leg. The controlling leg uses the incoming CM_DETACH_RESP to determine if the race condition has occurred or not.
RELEASE_NOTIFICATION—The controlled leg informs the controlling leg it is releasing. This is typically due to the release of the mate since the controlling leg would handle a release of the controlling party.
PATH_REQ/RESP—The controlling leg makes a voice path request to the controlled leg to execute. The PATH_REQ message has the following five command options:
CWALERT—Request controlled leg to apply CW ALERT tone to the shared channel. This is the one case in which the controlled leg performs this sort of work on behalf of the controlling leg. The reason for this is the controlled leg's voice path is to remain intact during the CW Alert phase.
MOVE—Request the controlled leg to move the shared channel to the connection context owned by the controlling leg. After a successful move, the controlling leg is free to modify the attributes of the channel in its context. The original mate is placed on hold.
MOVEBACK—Request the controlled leg to move the shared channel back to its context. The voice connection to the original mate can be resumed.
MATE_INVITATION—Invites the mate channel (on the controlled leg) of the shared channel into the controlling leg's context. The original mate is free to joint in the context or not depending on its activities (for example, it may be in its own multi-part scenario). The original mate is also free to leave the context when it needs to. An example of this use is for a three party call where the original mate is brought into the bridge with the controller and the new mate. The original mate is invited to join the bridge.
BARGE_IN—The controlling leg sends this message to ask the controlled leg to add the indicated channel into a connection with the shared channel. The resulting connection may or may not need a bridge depending on the connection state of the controlled leg.
Referring to
If party A were the party on hold when it disconnects, no indication is provided to the other parties that party A went on hook. If party A were not the party on hold, party B, the controller, is connected to the party on hold. On the other hand, disconnection by the controller (party B) causes a ringing tone to be applied to the controller so that the party on hold is not left behind. The ringing of the controller is done as a continuation of the call, as opposed to tearing down the call and attempting to re-establish a new call. Keeping the call in place avoids race conditions and other possible error conditions.
Returning to the example in
The first call manager sends an INITIATE_REQ (3PC) message 80 to the second call manager, and the new leg is created. Because party B is the initiator of the three-party call leg, it is the controller for the multi-party call. The INITIATE_REQ message may include the extended channel ID, extended terminator ID, signaling ID, mate type (TDM or ATM), source transaction ID, and destination transaction ID. The B-C leg call manager returns a TRUE response 82 to indicate that the new leg is successfully created. A PATH_REQ(MOVE) message 84 is sent from the B-C leg call manager to the A-B leg call manager to request that the controlled leg (A-B leg) to move the shared edgepoint to a new matrix context owned by the controlling leg (B-C leg). A RESPONSE(TRUE) message 86 returned to the B-C leg call manager indicates that this task has been performed. Party A is put on hold, and party B is provided a dial tone and is allowed to dial the telephone number of the third party. When the terminator address is known, a bridge is reserved in the B-C leg. If the reservation fails, party B is given a reorder tone and the call is not placed to party C. Otherwise, party C is added to the leg for the outgoing call attempt and party B is free to flash again to ask party A to join the call. A PATH_REQ (MATE INVITE) message 88 is sent to the A-B leg call manager to invite party A to join the three-party conference. If party A decides not to join the conference call or is not available (such as being involved in a call waiting leg, not shown), the A-B leg call manager sends a RESP (FALSE) message 90 to the B-C leg call manager. Parties B and C are then in the bridge by themselves. At a later time, party A becomes available, and the A-B leg call manager sends a NOTIFY (MATE_AVAIL) message 92 to the B-C leg call manager. If B and C still wants A to join, a PATH_REQ(MATE INVITE) message 94 is again sent to the A-B leg call manager. This time, the response is true (message 96), so that parties A, B and C are all in the bridge and in the conference call. A may leave the bridge at a later time and the A-B leg call manager sends a NOTIFY (TOOK_BACK) message 98 to the B-C leg call manager to move A back. Parties B and C are then left in the bridge.
Disconnect by either mate party causes the remaining two parties to go to a normal two-party call and releases the bridge. If the remaining mate was on hold, a short pause is given before joining the mate and the controller. Disconnect by party B, the controller, terminates the three-party call and releases the bridge. Any mate that was connected at the time of subscriber disconnect is released. If the original mate was on hold, ringing is applied to the controller in an attempt to bring it back into a call with the held party.
Referring to
Referring to
Although not specifically illustrated to avoid repetition, a call transfer multi-party call is set up in a manner similar to the three-party call. The difference between the two types of calls occurs at controller disconnect. When a controller disconnects in the three-party call scenario, the bridge is torn down. When a controller disconnects in the call transfer scenario, all resources related to the controller are released but the legs remain active and a voice connection remains between the two mates of the call.
While the invention has been particularly shown and described by the foregoing detailed description, it will be understood by those skilled in the art that various changes, alterations, modifications, mutations and derivations in form and detail may be made without departing from the spirit and scope of the invention.
The present application claims priority to patent application Ser. No. 60/234,852, entitled “System and Method for Distributed Multi-Party Call Control”, filed on Sep. 22, 2000.
Number | Name | Date | Kind |
---|---|---|---|
5930698 | Bertacchi | Jul 1999 | A |
5940491 | Anderson et al. | Aug 1999 | A |
6094478 | Shepherd et al. | Jul 2000 | A |
6097804 | Gilbert et al. | Aug 2000 | A |
6125175 | Goldberg et al. | Sep 2000 | A |
6148277 | Asava et al. | Nov 2000 | A |
6236722 | Gilbert et al. | May 2001 | B1 |
6307929 | Baiyor et al. | Oct 2001 | B1 |
6324279 | Kalmanek et al. | Nov 2001 | B1 |
6337858 | Petty et al. | Jan 2002 | B1 |
6349136 | Light et al. | Feb 2002 | B1 |
6366660 | Baiyor et al. | Apr 2002 | B1 |
6373930 | McConnell et al. | Apr 2002 | B1 |
6434402 | Davison et al. | Aug 2002 | B1 |
6453022 | Weinman, Jr. | Sep 2002 | B1 |
6574325 | Baiyor et al. | Jun 2003 | B1 |
6674842 | Weinman, Jr. | Jan 2004 | B1 |
6693886 | Haikonen et al. | Feb 2004 | B1 |
6847634 | Pearce et al. | Jan 2005 | B1 |
6967957 | Anjum et al. | Nov 2005 | B1 |
20010028654 | Anjum et al. | Oct 2001 | A1 |
20020024943 | Karaul et al. | Feb 2002 | A1 |
20050036596 | Merchant | Feb 2005 | A1 |
Number | Date | Country |
---|---|---|
0805576 | Nov 1997 | EP |
Number | Date | Country | |
---|---|---|---|
20020089938 A1 | Jul 2002 | US |
Number | Date | Country | |
---|---|---|---|
60234852 | Sep 2000 | US |