US20090003582A1 - Optimized Replacement of Calls Using A Grid Parameter - Google Patents

Optimized Replacement of Calls Using A Grid Parameter Download PDF

Info

Publication number
US20090003582A1
US20090003582A1 US11/769,631 US76963107A US2009003582A1 US 20090003582 A1 US20090003582 A1 US 20090003582A1 US 76963107 A US76963107 A US 76963107A US 2009003582 A1 US2009003582 A1 US 2009003582A1
Authority
US
United States
Prior art keywords
call
machine
instructions
readable storage
storage medium
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/769,631
Inventor
Li Shen
Danny Levin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US11/769,631 priority Critical patent/US20090003582A1/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LEVIN, DANNY, SHEN, LI
Publication of US20090003582A1 publication Critical patent/US20090003582A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1083In-session procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/58Arrangements for transferring received calls from one subscriber to another; Arrangements affording interim conversations between either the calling or the called party and a third party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/006Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer

Definitions

  • Voice and data communications are increasingly being managed using digital, packet-switched, systems, rather than analog, circuit-switched systems.
  • digital systems may include server-based systems that enable a variety of different callers to communicate with one another, perhaps using dissimilar devices, signaling protocols, and/or transmission techniques.
  • the servers may host and manage any number of different calls at any given time.
  • the tools may provide machine-readable storage media containing machine-readable instructions for receiving indications of incoming calls, and for populating fields in a contact header structure that are associated with the incoming call.
  • the fields may include a field for containing a globally unique identifier (GUID) associated with the incoming call.
  • GUID globally unique identifier
  • the tools may also receive requests to replace a call within a plurality of active calls that are handled by a server. In response to such requests, the tools may search for the call using the GUID.
  • FIG. 1 is a block diagram illustrating systems and/or operating environments in which tools and techniques for optimized replacement of calls using a grid parameter may perform.
  • FIG. 2 is a block diagram illustrating additional details relating to a grid creation and maintenance module provided as part of the tools.
  • FIG. 3 is a block diagram illustrating processes for building a contact header and dictionary structures as incoming calls arrive.
  • FIG. 4 is a block diagram illustrating processes for replacing one or more of the calls using the contact header and dictionary structures.
  • the term “grid” as used herein refers to a value field within a globally routable user agent uniform resource identifier (URI) (GRUU).
  • GRUU uniform resource identifier
  • the GRUU parameter is part of a contact header used to pass information between endpoints as part of, for example, establishing and maintaining communication sessions under the Session Initiation Protocol (SIP).
  • SIP Session Initiation Protocol
  • replace is used herein to refer to replacing one participant with another in a multimedia conversion in an atomic operation. This discussion also describes other techniques and/or processes that the tools may perform.
  • FIG. 1 illustrates systems and/or operating environments 100 in which tools and techniques for optimized replacement of calls using a grid parameter may perform.
  • the systems 100 may include one or more servers 102 .
  • the server 102 may perform as an audio-video multimedia control unit (AVMCU), as a media server, or the like.
  • AVMCU audio-video multimedia control unit
  • the server 102 may enable callers to place calls to one another, thereby connecting the callers with one another so as to enable them to exchange audio, video, data communications (whether alone or in combination) therebetween.
  • FIG. 1 provides examples in which two callers 104 a and 104 b are engaged in a two-party call, denoted generally at 106 . Also, three or more callers 104 c, 104 d, and 104 n are shown engaged in a conference call, denoted generally at 108 .
  • FIG. 1 also provides examples of various devices that the callers may use to contact one another.
  • the caller 104 a may use a desktop telephone 110 to contact the caller 104 b, while the caller 104 b may communicate using a wireless device 112 .
  • the callers 104 a and 104 b may exchange voice traffic, data, instant messages (IMs), text messages, or the like.
  • One or more of the callers may communicate through intermediate public switched telephone networks (PSTNs).
  • PSTNs public switched telephone networks
  • callers 104 c, 104 d, and 104 n these callers may communicate using telephones 114 and 116 , as well as desktop computing system 118 .
  • the server 102 may enable the telephones 114 and 116 and the desktop computing system 118 to communicate with one another over voice over IP (VoIP) technologies.
  • VoIP voice over IP
  • FIG. 1 denotes the various calls linking the callers respectively at 120 a, 120 b, 120 c, 120 d, and 120 n (collectively, calls 120 ).
  • the calls 120 are shown as dashed lines to represent the structures and records associated with implementing the various calls.
  • the server may be a computer-based system that includes one or more processors, denoted at 122 .
  • processors may also be categorized or characterized as having a given type or architecture, but in implementations that include more than one processor, these processors may or may not have the same type or architecture.
  • the device may also include one or more instances of machine-readable or computer-readable storage media, denoted generally at 124 .
  • the processor may communicate with the computer-readable media, and other components or sub-systems of the devices, via one or more busses 126 .
  • These busses 126 may be of any suitable width, and may comply with any convenient bus architecture.
  • the computer-readable media 124 may contain instructions that, when executed by the processor 122 , perform any of the tools or related functions that are described herein as being performed by the server.
  • the processor may access and/or execute the instructions embedded or encoded onto the computer-readable media, and/or may access data stored in the computer-readable media.
  • the computer-readable storage media, and any software stored thereon may reside on hardware other than that shown in FIG. 1 without departing from the scope and spirit of the description herein.
  • the examples shown in FIG. 1 are provided only to facilitate discussion, but not to limit possible implementations.
  • the computer-readable media 124 may include one or more modules of software instructions for optimizing replacement of calls using a grid parameter, denoted generally as a grid creation and maintenance module 128 .
  • a grid creation and maintenance module 128 As a non-limiting example of optimized replacement of calls using a grid parameter, one or more of the callers 104 a or 104 b may wish to join an ongoing conference (e.g., 108 ).
  • the server 102 operates under the Session Initiation Protocol (SIP)
  • the server may issue a SIP Invite with Replace command to replace the call as connected to the two-party call 106 with a call connected to the conference call 108 .
  • SIP Session Initiation Protocol
  • the call 120 a would be replaced with a corresponding call linking the caller 104 a to the conference call.
  • FIG. 2 illustrates additional details relating to the grid creation and maintenance module 128 .
  • FIG. 2 may carry forward some items described previously, and may denote them by similar reference signs.
  • the grid creation and maintenance module 128 may manage a dictionary 202 , which in turn may include a contact header structure 204 corresponding to a call 120 .
  • FIG. 2 shows one contact header structure 204 , associated with the call 102 a as indicated by the dashed line 206 .
  • the module 128 may maintain a respective contact header structure for the various calls 120 .
  • the contact header 204 may include a call identifier (ID) field or tag 208 .
  • the call ID is a relatively lengthy alphanumeric string, generated based on an address or URL, combined with randomly-generated strings of digits and/or characters.
  • the contact header may also include a “from” field or tag 210 , which indicates which caller initiated or originated a given call.
  • a “to” field 212 may indicate which caller received a given call.
  • a grid field 214 may contain a globally unique identifier (GUID), as represented generally at 216 , that is associated with a given call 120 .
  • GUID globally unique identifier
  • a server may generate the GUID
  • the call request or invitation incoming to the server may include the GUID
  • other devices e.g., 110 - 118
  • the module 128 may build new contact header structures as calls come in. Additionally, the module 128 may modify these header structures as calls are replaced, and may delete these structures when calls terminate.
  • FIG. 3 illustrates process flows 300 for building the contact header and dictionary structures as incoming calls arrive.
  • FIG. 3 may carry forward some items described previously, and may denote them by similar reference signs.
  • FIG. 3 illustrates scenarios in which the grid creation and maintenance module 128 performs the process flows 300 , but it is noted that other systems or components may perform some or all of these process flows without departing from the scope and spirit of the description herein.
  • Block 302 represents receiving an indication of a given incoming call request.
  • FIGS. 1 and 2 provide examples of calls at 120 .
  • Block 304 represents instantiating a contact header structure for the incoming call, if such a structure has not already been instantiated.
  • FIG. 2 provides examples of contact header structures at 204 .
  • Block 306 represents populating or filling the various fields or tags defined by the contact header structure.
  • block 306 may include populating a call ID field (e.g., 208 in FIG. 2 ), as denoted at block 308 .
  • Block 306 may include populating a “from” field (e.g., 210 in FIG. 2 ), as denoted at block 310 , and may include populating a “to” field (e.g., 212 in FIG. 2 ), as denoted at block 312 .
  • Block 314 represents receiving a GUID for the contact header associated with the incoming call.
  • FIG. 2 provides examples of the GUID at 216 .
  • Block 316 represents populating the contact header with the GUID.
  • FIG. 2 provides an example of a grid field 214 that may contain the GUID 216 .
  • block 318 represents a wait state in which the process flows 300 may await the arrival of a next incoming call request.
  • process flows 300 are implemented in a SIP environment
  • the foregoing process blocks 302 - 318 may be implemented using appropriate SIP commands.
  • FIG. 4 illustrates process flows 400 for replacing one or more of the calls.
  • FIG. 4 may carry forward some items described previously, and may denote them by similar reference signs.
  • FIG. 4 illustrates scenarios in which the grid creation and maintenance module 128 performs the process flows 400 , but it is noted that other systems or components may perform some or all of these process flows without departing from the scope and spirit of the description herein.
  • Block 402 represents receiving a request to replace a given call (e.g., 120 in FIGS. 1 and 2 ).
  • a number of callers may be participating in a two-party call (e.g., 106 as shown in FIGS. 1 or 2 ).
  • one or more of these callers may wish to join a conference (e.g., 108 shown in FIGS. 1 or 2 ).
  • This conference may be a currently ongoing conference, or the conference may be created for these callers.
  • block 402 may include, for example, receiving a SIP-compliant invite-with-replace command.
  • Block 404 represents locating the call to be replaced from among all active calls currently being handled. As shown in FIG. 4 , block 404 may include identifying a GUID associated with the call to be replaced, as denoted in block 406 . Block 408 represents querying for the contact header associated with the GUID identified in block 406 .
  • Block 410 represents evaluating whether a call was found for the GUID. If yes, the process flows 400 may take Yes branch 412 to block 414 , which represents replacing the call located in block 404 . Assuming a SIP implementation, block 414 may include, for example, executing a SIP-compliant invite-with-replace command.
  • block 404 did not locate a call corresponding to the GUID, then most likely, an error has occurred. In this case, the process flows 400 may take No branch 416 to block 418 to report an error or other suitable condition.
  • the tools described herein locate and retrieve the record with one query, which specifies the GUID as an index or search key.
  • These previous techniques may include searching each active call, and comparing the call ID (e.g., 208 ), From tag (e.g., 210 ), and To tag (e.g., 212 ) to a set of input call parameters to locate the call to be replaced.
  • the search effort drops from a linear search having complexity level O( 3 n ) to a single search having complexity level O( 1 ).

Abstract

Tools and techniques for optimized replacement of calls using a grid parameter are described herein. The tools may provide machine-readable storage media containing machine-readable instructions for receiving indications of incoming calls, and for populating fields in a contact header structure that are associated with the incoming call. The fields may include a field for containing a globally unique identifier (GUID) associated with the incoming call. The tools may also receive requests to replace a call within a plurality of active calls that are handled by a server. In response to such requests, the tools may search for the call using the GUID.

Description

    BACKGROUND
  • Voice and data communications are increasingly being managed using digital, packet-switched, systems, rather than analog, circuit-switched systems. Examples of such digital systems may include server-based systems that enable a variety of different callers to communicate with one another, perhaps using dissimilar devices, signaling protocols, and/or transmission techniques. Put differently, the servers may host and manage any number of different calls at any given time.
  • As these servers manage more calls, and different types of calls, some operations may involve locating a given call out of many active calls that the server is currently handling. While it is possible to perform a linear search on a list of these active calls, this type of a brute-force approach may prove expensive in the context of servers handling, for example, hundreds or thousands of calls or callers.
  • SUMMARY
  • Tools and techniques for optimized replacement of calls using a grid parameter are described herein. The tools may provide machine-readable storage media containing machine-readable instructions for receiving indications of incoming calls, and for populating fields in a contact header structure that are associated with the incoming call. The fields may include a field for containing a globally unique identifier (GUID) associated with the incoming call. The tools may also receive requests to replace a call within a plurality of active calls that are handled by a server. In response to such requests, the tools may search for the call using the GUID.
  • This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The term “tools,” for instance, may refer to system(s), method(s), computer-readable instructions, and/or technique(s) as permitted by the context above and throughout the document.
  • BRIEF DESCRIPTIONS OF THE DRAWINGS
  • Tools related to optimized replacement of calls using a grid parameter are described in connection with the following drawing figures. The same numbers are used throughout the disclosure and figures to reference like components and features. The first digit in a reference number indicates the drawing figure in which that reference number is introduced.
  • FIG. 1 is a block diagram illustrating systems and/or operating environments in which tools and techniques for optimized replacement of calls using a grid parameter may perform.
  • FIG. 2 is a block diagram illustrating additional details relating to a grid creation and maintenance module provided as part of the tools.
  • FIG. 3 is a block diagram illustrating processes for building a contact header and dictionary structures as incoming calls arrive.
  • FIG. 4 is a block diagram illustrating processes for replacing one or more of the calls using the contact header and dictionary structures.
  • DETAILED DESCRIPTION Overview
  • The following document describes tools capable of performing and/or supporting many techniques and processes. The following discussion describes exemplary ways in which the tools provide for optimized replacement of calls using a grid parameter. Without limiting possible implementations, and only to facilitate understanding of the description herein, the term “grid” as used herein refers to a value field within a globally routable user agent uniform resource identifier (URI) (GRUU). The GRUU parameter is part of a contact header used to pass information between endpoints as part of, for example, establishing and maintaining communication sessions under the Session Initiation Protocol (SIP). Similarly, the term “replace” is used herein to refer to replacing one participant with another in a multimedia conversion in an atomic operation. This discussion also describes other techniques and/or processes that the tools may perform.
  • FIG. 1 illustrates systems and/or operating environments 100 in which tools and techniques for optimized replacement of calls using a grid parameter may perform. The systems 100 may include one or more servers 102. However, it is noted that this description provides this example device only to facilitate discussion of the subject matter herein, but not to limit possible implementations of this subject matter. The server 102 may perform as an audio-video multimedia control unit (AVMCU), as a media server, or the like.
  • The server 102 may enable callers to place calls to one another, thereby connecting the callers with one another so as to enable them to exchange audio, video, data communications (whether alone or in combination) therebetween. FIG. 1 provides examples in which two callers 104 a and 104 b are engaged in a two-party call, denoted generally at 106. Also, three or more callers 104 c, 104 d, and 104 n are shown engaged in a conference call, denoted generally at 108.
  • FIG. 1 also provides examples of various devices that the callers may use to contact one another. For example, the caller 104 a may use a desktop telephone 110 to contact the caller 104 b, while the caller 104 b may communicate using a wireless device 112. The callers 104 a and 104 b may exchange voice traffic, data, instant messages (IMs), text messages, or the like. One or more of the callers may communicate through intermediate public switched telephone networks (PSTNs).
  • Turning to the callers 104 c, 104 d, and 104 n, these callers may communicate using telephones 114 and 116, as well as desktop computing system 118. The server 102 may enable the telephones 114 and 116 and the desktop computing system 118 to communicate with one another over voice over IP (VoIP) technologies.
  • FIG. 1 denotes the various calls linking the callers respectively at 120 a, 120 b, 120 c, 120 d, and 120 n (collectively, calls 120). The calls 120 are shown as dashed lines to represent the structures and records associated with implementing the various calls.
  • Turning to the server 102 in more detail, the server may be a computer-based system that includes one or more processors, denoted at 122. These processors may also be categorized or characterized as having a given type or architecture, but in implementations that include more than one processor, these processors may or may not have the same type or architecture.
  • The device may also include one or more instances of machine-readable or computer-readable storage media, denoted generally at 124. The processor may communicate with the computer-readable media, and other components or sub-systems of the devices, via one or more busses 126. These busses 126 may be of any suitable width, and may comply with any convenient bus architecture.
  • The computer-readable media 124 may contain instructions that, when executed by the processor 122, perform any of the tools or related functions that are described herein as being performed by the server. The processor may access and/or execute the instructions embedded or encoded onto the computer-readable media, and/or may access data stored in the computer-readable media. Additionally, it is noted that the computer-readable storage media, and any software stored thereon, may reside on hardware other than that shown in FIG. 1 without departing from the scope and spirit of the description herein. The examples shown in FIG. 1 are provided only to facilitate discussion, but not to limit possible implementations.
  • Turning in more detail to the computer-readable media 124, it may include one or more modules of software instructions for optimizing replacement of calls using a grid parameter, denoted generally as a grid creation and maintenance module 128. As a non-limiting example of optimized replacement of calls using a grid parameter, one or more of the callers 104 a or 104 b may wish to join an ongoing conference (e.g., 108). Assuming that the server 102 operates under the Session Initiation Protocol (SIP), the server may issue a SIP Invite with Replace command to replace the call as connected to the two-party call 106 with a call connected to the conference call 108. For example, if the caller 104 a wishes to join an ongoing conference call 108, then the call 120 a would be replaced with a corresponding call linking the caller 104 a to the conference call.
  • FIG. 2 illustrates additional details relating to the grid creation and maintenance module 128. For convenience of description, but not to limit possible implementations, FIG. 2 may carry forward some items described previously, and may denote them by similar reference signs.
  • The grid creation and maintenance module 128 may manage a dictionary 202, which in turn may include a contact header structure 204 corresponding to a call 120. In the interests of clarity, FIG. 2 shows one contact header structure 204, associated with the call 102 a as indicated by the dashed line 206. However, it is noted that the module 128 may maintain a respective contact header structure for the various calls 120.
  • Turning to the contact header 204 in more detail, it may include a call identifier (ID) field or tag 208. Typically, the call ID is a relatively lengthy alphanumeric string, generated based on an address or URL, combined with randomly-generated strings of digits and/or characters. The contact header may also include a “from” field or tag 210, which indicates which caller initiated or originated a given call. A “to” field 212 may indicate which caller received a given call. A grid field 214 may contain a globally unique identifier (GUID), as represented generally at 216, that is associated with a given call 120. In some implementations, a server (e.g., 102) may generate the GUID, while in other implementations, the call request or invitation incoming to the server may include the GUID, with other devices (e.g., 110-118) generating the GUID and including it in the invitation.
  • As detailed further in FIG. 3, the module 128 may build new contact header structures as calls come in. Additionally, the module 128 may modify these header structures as calls are replaced, and may delete these structures when calls terminate.
  • FIG. 3 illustrates process flows 300 for building the contact header and dictionary structures as incoming calls arrive. For convenience of description, but not to limit possible implementations, FIG. 3 may carry forward some items described previously, and may denote them by similar reference signs. Also, FIG. 3 illustrates scenarios in which the grid creation and maintenance module 128 performs the process flows 300, but it is noted that other systems or components may perform some or all of these process flows without departing from the scope and spirit of the description herein.
  • Block 302 represents receiving an indication of a given incoming call request. FIGS. 1 and 2 provide examples of calls at 120.
  • Block 304 represents instantiating a contact header structure for the incoming call, if such a structure has not already been instantiated. FIG. 2 provides examples of contact header structures at 204.
  • Block 306 represents populating or filling the various fields or tags defined by the contact header structure. For example, block 306 may include populating a call ID field (e.g., 208 in FIG. 2), as denoted at block 308. Block 306 may include populating a “from” field (e.g., 210 in FIG. 2), as denoted at block 310, and may include populating a “to” field (e.g., 212 in FIG. 2), as denoted at block 312.
  • Block 314 represents receiving a GUID for the contact header associated with the incoming call. FIG. 2 provides examples of the GUID at 216.
  • Block 316 represents populating the contact header with the GUID. FIG. 2 provides an example of a grid field 214 that may contain the GUID 216. Finally, block 318 represents a wait state in which the process flows 300 may await the arrival of a next incoming call request.
  • Assuming that the process flows 300 are implemented in a SIP environment, the foregoing process blocks 302-318 may be implemented using appropriate SIP commands.
  • Having described the process flows 300 for building the contact header and dictionary structures as incoming calls arrive, the discussion now turns to a description of process flows that the tools may perform upon a request to replace a given one of the calls, now presented with FIG. 4.
  • FIG. 4 illustrates process flows 400 for replacing one or more of the calls. For convenience of description, but not to limit possible implementations, FIG. 4 may carry forward some items described previously, and may denote them by similar reference signs. Also, FIG. 4 illustrates scenarios in which the grid creation and maintenance module 128 performs the process flows 400, but it is noted that other systems or components may perform some or all of these process flows without departing from the scope and spirit of the description herein.
  • Block 402 represents receiving a request to replace a given call (e.g., 120 in FIGS. 1 and 2). For example, a number of callers may be participating in a two-party call (e.g., 106 as shown in FIGS. 1 or 2). At some convenient point, one or more of these callers may wish to join a conference (e.g., 108 shown in FIGS. 1 or 2). This conference may be a currently ongoing conference, or the conference may be created for these callers. Assuming a SIP implementation, block 402 may include, for example, receiving a SIP-compliant invite-with-replace command.
  • Block 404 represents locating the call to be replaced from among all active calls currently being handled. As shown in FIG. 4, block 404 may include identifying a GUID associated with the call to be replaced, as denoted in block 406. Block 408 represents querying for the contact header associated with the GUID identified in block 406.
  • Block 410 represents evaluating whether a call was found for the GUID. If yes, the process flows 400 may take Yes branch 412 to block 414, which represents replacing the call located in block 404. Assuming a SIP implementation, block 414 may include, for example, executing a SIP-compliant invite-with-replace command.
  • Returning to block 410, if block 404 did not locate a call corresponding to the GUID, then most likely, an error has occurred. In this case, the process flows 400 may take No branch 416 to block 418 to report an error or other suitable condition.
  • Having described the above process flows 400, several observations are noted. In contrast to previous techniques that involved searching records for potentially all active calls when locating the call to be replaced, the tools described herein locate and retrieve the record with one query, which specifies the GUID as an index or search key. These previous techniques may include searching each active call, and comparing the call ID (e.g., 208), From tag (e.g., 210), and To tag (e.g., 212) to a set of input call parameters to locate the call to be replaced. Thus, the search effort drops from a linear search having complexity level O(3 n) to a single search having complexity level O(1).
  • Conclusion
  • Although the systems and methods have been described in language specific to structural features and/or methodological acts, it is to be understood that the system and method defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed system and method.
  • In addition, regarding certain data and process flow diagrams described and illustrated herein, it is noted that the processes and sub-processes depicted therein may be performed in orders other than those illustrated without departing from the spirit and scope of the description herein. Also, while these data and process flows are described in connection with certain components herein, it is noted that these data and process flows could be performed with other components without departing from the spirit and scope of the description herein.

Claims (20)

1. At least one machine-readable storage medium comprising machine-readable instructions that, when executed by the machine, cause the machine to perform a method comprising:
receiving at least one indication of at least one incoming call; and
populating at least a field in a contact header associated with the incoming call, wherein the field is for containing a globally unique identifier (GUID) associated with the incoming call.
2. The machine-readable storage medium of claim 1, further comprising instructions for instantiating the contact header.
3. The machine-readable storage medium of claim 1, further comprising instructions for instantiating the contact header, wherein the contact header includes a call identifier field, an originator field indicating an originator of the call, and a recipient field indicating a recipient of the call.
4. The machine-readable storage medium of claim 3, further comprising instructions for populating the call identifier field, the originator field, or the recipient field.
5. The machine-readable storage medium of claim 1, further comprising instructions for receiving the GUID.
6. The machine-readable storage medium of claim 1, further comprising instructions for generating the GUID.
7. A server comprising at least the machine-readable storage medium of claim 1.
8. At least one machine-readable storage medium comprising machine-readable instructions that, when executed by the machine, cause the machine to perform a method comprising:
receiving at least one request to replace at least one call within a plurality of active calls handled by a server; and
searching for the call using a globally unique identifier (GUID).
9. The machine-readable storage medium of claim 8, further comprising instructions for identifying the GUID.
10. The machine-readable storage medium of claim 8, wherein the instructions for searching for the call include instructions for searching for a contact header structure that includes the GUID.
11. The machine-readable storage medium of claim 8, further comprising instructions for replacing the call, wherein the call is associated with the GUID.
12. The machine-readable storage medium of claim 11, wherein the instructions for replacing the call include instructions that are compliant with the Session Initiation Protocol (SIP).
13. The machine-readable storage medium of claim 8, wherein the instructions for receiving the request include instructions that are compliant with the Session Initiation Protocol (SIP).
14. The machine-readable storage medium of claim 8, wherein the instructions for searching for the call include instructions for performing a single query to locate the call, using the GUID.
15. The machine-readable storage medium of claim 8, wherein the instructions for searching for the call include instructions for querying to locate the call, using the GUID as a search key.
16. A server comprising at least the machine-readable storage medium of claim 8.
17. The machine-readable storage medium of claim 8, further comprising instructions for receiving at least one indication of at least one incoming call.
18. The machine-readable storage medium of claim 17, further comprising instructions for populating at least a field in a contact header associated with the incoming call, wherein the field is for containing the GUID associated with the incoming call.
19. The machine-readable storage medium of claim 18, further comprising instructions for instantiating the contact header.
20. The machine-readable storage medium of claim 18, further comprising instructions for instantiating the contact header, wherein the contact header includes a call identifier field, an originator field indicating an originator of the call, and a recipient field indicating a recipient of the call.
US11/769,631 2007-06-27 2007-06-27 Optimized Replacement of Calls Using A Grid Parameter Abandoned US20090003582A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/769,631 US20090003582A1 (en) 2007-06-27 2007-06-27 Optimized Replacement of Calls Using A Grid Parameter

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/769,631 US20090003582A1 (en) 2007-06-27 2007-06-27 Optimized Replacement of Calls Using A Grid Parameter

Publications (1)

Publication Number Publication Date
US20090003582A1 true US20090003582A1 (en) 2009-01-01

Family

ID=40160529

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/769,631 Abandoned US20090003582A1 (en) 2007-06-27 2007-06-27 Optimized Replacement of Calls Using A Grid Parameter

Country Status (1)

Country Link
US (1) US20090003582A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11225655B2 (en) 2010-04-16 2022-01-18 Nuevolution A/S Bi-functional complexes and methods for making and using such complexes

Citations (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020136206A1 (en) * 2001-03-20 2002-09-26 Worldcom, Inc. Recursive query for communications network data
US20030018740A1 (en) * 2001-07-16 2003-01-23 Fujitsu Limited Contents sharing system and software program executed by devices of the system
US6577622B1 (en) * 1999-09-27 2003-06-10 3Com Corp. System and method for using a portable information device to establish a conference call on a telephony network
US6697836B1 (en) * 1997-09-19 2004-02-24 Hitachi, Ltd. Method and apparatus for controlling server
US20040215785A1 (en) * 2001-10-02 2004-10-28 Toshihiro Shima Communication mediating device for mediating communication over network
US20050063360A1 (en) * 2003-09-23 2005-03-24 Sbc Knowledge Ventures, L.P. System and method for facilitating packetized calls between managed networks
US20050096012A1 (en) * 2003-10-31 2005-05-05 Utstarcom Incorporated Authentication and/or billing mediation service apparatus and method
US20050220095A1 (en) * 2004-03-31 2005-10-06 Sankaran Narayanan Signing and validating Session Initiation Protocol routing headers
US20050256970A1 (en) * 2004-05-14 2005-11-17 International Business Machines Corporation System and method for multi-vendor mediation for subscription services
US6988126B2 (en) * 2000-10-17 2006-01-17 Hewlett-Packard Development Company, L.P. Contact center system and method for specifying different service specific behavior and offering range of corresponding customer services
US20060031302A1 (en) * 2001-02-01 2006-02-09 Emidex Oy Method, system and server for sending and receiving e-mails with different addresses
US7000019B2 (en) * 2000-10-17 2006-02-14 Hewlett-Packard/Development Company L.P. Establishment of a deferred network communication session
US20060098624A1 (en) * 2004-11-10 2006-05-11 Morgan David P Using session initiation protocol
US20060190415A1 (en) * 2000-10-25 2006-08-24 Nec Corporation Large capacity data sales mediation server and terminal
US7142537B2 (en) * 2003-12-18 2006-11-28 Motorola, Inc. Interface call signaling protocol
US20070036144A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Associating a telephone call with a dialog based on a computer protocol such as SIP
US20070121908A1 (en) * 2005-10-07 2007-05-31 Tekelec Methods, systems, and computer program products for providing address translation using subsequent address information
US20070147356A1 (en) * 2005-12-22 2007-06-28 Level 3 Communications, Inc. Registration of multiple VoIP devices
US7283516B1 (en) * 2003-04-07 2007-10-16 At&T Corp. Session initiation protocol (SIP) messages incorporating address and/or routing information obtained from a contact header of a redirect message
US20070274289A1 (en) * 2006-02-06 2007-11-29 Research In Motion Limited System And Methods For Originating A SIP Call Via A Circuit-Switched Network From A User Equipment Device
US20080056235A1 (en) * 2006-08-31 2008-03-06 Syniverse Technologies, Inc. Cellular-to-VoIP call establishment systems, methods, devices, and computer software
US20080080483A1 (en) * 2006-09-29 2008-04-03 Witness Systems, Inc. Call Control Presence
US20080127349A1 (en) * 2006-11-08 2008-05-29 Ormazabal Gaston S PREVENTION OF DENIAL OF SERVICE (DoS) ATTACKS ON SESSION INITIATION PROTOCOL (SIP)-BASED SYSTEMS USING METHOD VULNERABILITY FILTERING
US20080137671A1 (en) * 2006-12-07 2008-06-12 Kaitki Agarwal Scalability of providing packet flow management
US20080205330A1 (en) * 2003-07-18 2008-08-28 Core Mobility, Inc. Tokenized compression of session initiation protocol data
US20080226050A1 (en) * 2007-03-16 2008-09-18 Nokia Corporation System and method for establishing conference events
US20080298351A1 (en) * 2007-06-01 2008-12-04 Research In Motion Limited Message Generation System and Method for Managing the Delivery of Mobile-Terminated (MT) Calls in IMS Network Environment
US20100020942A1 (en) * 2005-11-16 2010-01-28 Verizon Data Services, Inc. E911 location server
US7826602B1 (en) * 2004-10-22 2010-11-02 Juniper Networks, Inc. Enabling incoming VoIP calls behind a network firewall

Patent Citations (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697836B1 (en) * 1997-09-19 2004-02-24 Hitachi, Ltd. Method and apparatus for controlling server
US6577622B1 (en) * 1999-09-27 2003-06-10 3Com Corp. System and method for using a portable information device to establish a conference call on a telephony network
US6988126B2 (en) * 2000-10-17 2006-01-17 Hewlett-Packard Development Company, L.P. Contact center system and method for specifying different service specific behavior and offering range of corresponding customer services
US7000019B2 (en) * 2000-10-17 2006-02-14 Hewlett-Packard/Development Company L.P. Establishment of a deferred network communication session
US20060190415A1 (en) * 2000-10-25 2006-08-24 Nec Corporation Large capacity data sales mediation server and terminal
US20060031302A1 (en) * 2001-02-01 2006-02-09 Emidex Oy Method, system and server for sending and receiving e-mails with different addresses
US20020136206A1 (en) * 2001-03-20 2002-09-26 Worldcom, Inc. Recursive query for communications network data
US20030018740A1 (en) * 2001-07-16 2003-01-23 Fujitsu Limited Contents sharing system and software program executed by devices of the system
US20040215785A1 (en) * 2001-10-02 2004-10-28 Toshihiro Shima Communication mediating device for mediating communication over network
US7283516B1 (en) * 2003-04-07 2007-10-16 At&T Corp. Session initiation protocol (SIP) messages incorporating address and/or routing information obtained from a contact header of a redirect message
US20080084874A1 (en) * 2003-04-07 2008-04-10 Sekar Ganesan Session initiation protocol (sip) messages incorporating address and/or routing information obtained from a contact header of a redirect message
US20080205330A1 (en) * 2003-07-18 2008-08-28 Core Mobility, Inc. Tokenized compression of session initiation protocol data
US20050063360A1 (en) * 2003-09-23 2005-03-24 Sbc Knowledge Ventures, L.P. System and method for facilitating packetized calls between managed networks
US20050096012A1 (en) * 2003-10-31 2005-05-05 Utstarcom Incorporated Authentication and/or billing mediation service apparatus and method
US7142537B2 (en) * 2003-12-18 2006-11-28 Motorola, Inc. Interface call signaling protocol
US20050220095A1 (en) * 2004-03-31 2005-10-06 Sankaran Narayanan Signing and validating Session Initiation Protocol routing headers
US20050256970A1 (en) * 2004-05-14 2005-11-17 International Business Machines Corporation System and method for multi-vendor mediation for subscription services
US7826602B1 (en) * 2004-10-22 2010-11-02 Juniper Networks, Inc. Enabling incoming VoIP calls behind a network firewall
US20060098624A1 (en) * 2004-11-10 2006-05-11 Morgan David P Using session initiation protocol
US20070036144A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Associating a telephone call with a dialog based on a computer protocol such as SIP
US20070121908A1 (en) * 2005-10-07 2007-05-31 Tekelec Methods, systems, and computer program products for providing address translation using subsequent address information
US20100020942A1 (en) * 2005-11-16 2010-01-28 Verizon Data Services, Inc. E911 location server
US20070147356A1 (en) * 2005-12-22 2007-06-28 Level 3 Communications, Inc. Registration of multiple VoIP devices
US20070274289A1 (en) * 2006-02-06 2007-11-29 Research In Motion Limited System And Methods For Originating A SIP Call Via A Circuit-Switched Network From A User Equipment Device
US20080056235A1 (en) * 2006-08-31 2008-03-06 Syniverse Technologies, Inc. Cellular-to-VoIP call establishment systems, methods, devices, and computer software
US20080080483A1 (en) * 2006-09-29 2008-04-03 Witness Systems, Inc. Call Control Presence
US20080127349A1 (en) * 2006-11-08 2008-05-29 Ormazabal Gaston S PREVENTION OF DENIAL OF SERVICE (DoS) ATTACKS ON SESSION INITIATION PROTOCOL (SIP)-BASED SYSTEMS USING METHOD VULNERABILITY FILTERING
US20080137671A1 (en) * 2006-12-07 2008-06-12 Kaitki Agarwal Scalability of providing packet flow management
US20080226050A1 (en) * 2007-03-16 2008-09-18 Nokia Corporation System and method for establishing conference events
US20080298351A1 (en) * 2007-06-01 2008-12-04 Research In Motion Limited Message Generation System and Method for Managing the Delivery of Mobile-Terminated (MT) Calls in IMS Network Environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11225655B2 (en) 2010-04-16 2022-01-18 Nuevolution A/S Bi-functional complexes and methods for making and using such complexes

Similar Documents

Publication Publication Date Title
US10171521B2 (en) Seamlessly conferencing a previously-connected telephone call
US20160142546A1 (en) System and method for keyword-based notification and delivery of content
US8005895B2 (en) Distributed routing of conferences using conference identifier
US20100177877A1 (en) Enhanced voicemail usage through automatic voicemail preview
US9106724B1 (en) Communication aggregation
US20100246570A1 (en) Communications session preparation method and apparatus
KR100985612B1 (en) Automatic orchestration of dynamic multiple party, multiple media communications
US20130212242A1 (en) Global session identifier
US20080037752A1 (en) System and method to identify and associate call legs in session initiation protocol back to back user agents
US9992331B2 (en) Continuous call recording
US10044766B2 (en) Managing mid-dialog session initiation protocol (SIP) messages
US8891411B2 (en) System and method for a conference foyer
US8027445B2 (en) Method and system to provision emergency contact services in a communication network
US8935312B2 (en) Aggregation of multiple information flows with index processing
US11895165B2 (en) In-line, in-call AI virtual assistant for teleconferencing
US20110299675A1 (en) Safe conversation park and retrieval
US20090003249A1 (en) Determination and Display of Endpoint Identities
US20160212185A1 (en) System and method for managing concurrent communications in a contact center
US20090003582A1 (en) Optimized Replacement of Calls Using A Grid Parameter
US20120150969A1 (en) Dynamically enabling user logging across distributed systems
US20100290606A1 (en) Resynchronization of call events after trigger event
CN111711644B (en) Method, system and equipment for distributing and managing interaction tasks
US20130061153A1 (en) System and Method for Inserting a Control System Into a Conference
US20120250675A1 (en) Ims application sequencing optimizer
US8310959B2 (en) Voice Communication with any of multiple terminals

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SHEN, LI;LEVIN, DANNY;REEL/FRAME:019503/0511

Effective date: 20070627

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0509

Effective date: 20141014