FIELD OF THE INVENTION This invention relates in general to network communications, and more particularly to a system, apparatus and method for routing communication requests based on user presence information.
BACKGROUND OF THE INVENTION Communications between networked devices can be accomplished in a variety of ways. Users can communicate with one another via voice connections; users can browse content on other systems or devices; messages can be sent using services such as Short Messaging Service (SMS) or Multimedia Messaging Service (MMS); messages may be e-mailed; and so forth. Some communications, such as SMS/MMS messaging and e-mail, may not involve real-time communication between the end users. Other communications involve an actual or logical connection between the communicating parties. A “session” generally refers to a logical connection between computers or other devices and the communications exchanged between those devices while they are connected. A multimedia session involves a set of multimedia senders and receivers and the data streams flowing therebetween.
Users who may be involved in such network sessions may be in situations where they are willing to accept incoming calls, messages, or other multimedia communications. At other times, the users may not want to be disturbed. Today's communications technologies provide communication initiators with ample abilities to contact their targeted communication recipients, particularly with the prolific use of mobile devices. Mobile device users tend to keep their mobile devices with them most or all of the time, which provides great convenience to the users, but may also cause interruptions when incoming communications are unwanted or otherwise inconvenient. For example, a user may enter a business meeting, and may not want to be disturbed by incoming voice or media calls. The users therefore have times, locations, and/or situations where they are, or are not, willing or able to accept incoming communications. This concept is generally referred to as the user's “presence.”
Generally, presence refers to the willingness and/or ability of a user to communicate with other users over a network. A variety of different preference indicators may be associated with a user's preference, such as user availability, connection status, various user identities, device capabilities, and the like. Users can set and modify their presence state at their respective terminals, and this presence information can be used to manage incoming communication requests.
However, some networks do not take the users' presence status into account. For example, the 3rd Generation Partnership Project (3GPP) IP Multimedia core network Subsystem (IMS) is an architecture for supporting multimedia services via a Session Initiation Protocol (SIP) infrastructure. In an IMS network, after a user has set his/her presence information, he/she will still receive incoming media calls or other session initiation requests even though undesired, where the network does not consider the presence status of the user.
Accordingly, there is a need for a manner of ensuring that users' presence information is considered for communications over networks such as IMS networks. The present invention fulfills these and other needs, and offers other advantages over the prior art.
SUMMARY OF THE INVENTION To overcome limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a system, apparatus and method for routing communication requests based on user presence information. A network entity can subscribe to the presence information of a user(s), and receive notifications of the users' presence information when the user has registered with the network or the presence information has changed. In response, the network entity creates routing instructions based on the presence information. In this manner, incoming communication requests can be appropriately routed according to the routing instructions.
In accordance with one embodiment of the invention, a method is provided for routing communication requests targeted for a user over a network. The method includes subscribing a network entity to presence information of the user, and receiving notifications at the subscribing network entity indicating a state of the user presence information. Routing instructions are created for routing incoming communication requests targeted for the user, based on the state of the presence information.
According to more particular embodiments of such a method, the incoming communication requests are routed according to the routing instructions. The routing instructions may be stored for reference by the network entity upon receipt of the incoming communication requests. The routing instructions may be realized, for example, by creating a routing script. In another embodiment, the routing instructions may be realized by dynamically modifying filter criteria received from a database entity based on the presence information of the user. In other embodiments, receiving the notification of the presence state involves receiving notifications at the subscribing network entity indicating a change of state of the presence information, where in other embodiments receiving the notification involves receiving a notification indicating a state of the presence information at the time of the subscription of the network entity to the presence information. In one embodiment, the user equipment is registered with the network entity, and subscribing the network entity to the user presence information involves subscribing the network entity to the user presence information in response to the registration of the user equipment. In still other embodiments, the user presence information is published, such as published via a presence application server.
In accordance with another embodiment of the invention, a method is provided for routing communication requests targeted for a user over a network including an IP Multimedia core network Subsystem (IMS) network. The method includes subscribing a Serving Call Session Control Function (S-CSCF) to user presence information published on the network. A notification(s) is received at the S-CSCF indicating a state of the user presence information. The S-CSCF creates a routing script based on the state of the presence information. Communication requests targeted for the user and received at the S-CSCF are routed to one or more destinations as dictated by the routing script.
In more particular embodiments of such a method, attributes of the communication requests received at the S-CSCF are identified, and routing of such communication requests to a destination(s) involves routing the communication requests as dictated by the routing script and depending on the attributes of the communication requests. Such attributes may include, for example, a caller identity, a caller domain, a caller equipment type, a communication request priority, a communication request type, etc. In other embodiments of the invention, subscribing and notifying are accomplished using SIP, such as through the use of SIP SUBSCRIBE and NOTIFY methods. The routing script in one embodiment is created via a scripting language, i.e., where a program is created to cause the incoming communication requests to be routed according to the user presence information upon execution of the program. In another embodiment, the routing script is created as a data structure that provides routing actions for each association of user presence information and communication request attributes.
In accordance with another embodiment of the invention, a network entity is provided for routing communication requests targeted for a user over a network. The network entity includes a processor, which may include one or more processing devices/components. A subscription module operable with the processor is configured to subscribe to user presence information published on the network. A notification management module operable with the processor is configured to receive notifications of a state of the user presence information. A routing instruction generation module operable with the processor is configured to convert the state of the user presence information to routing instructions. A routing module operable with the processor is configured to identify one or more routing destinations for incoming communication requests targeted for the user based on the routing instructions. In more particular embodiments, the network includes an IP Multimedia core network Subsystem (IMS) network, and the network entity is a Serving Call Session Control Function (S-CSCF).
According to another embodiment of the invention, a system is provided for routing communication requests via an IP Multimedia core network Subsystem (IMS) network. The system includes at least one User Equipment (UE), and a presence server coupled to receive and publish presence information associated with the UE. A Serving Call Session Control Function (S-CSCF) is provided that includes a processor configured to subscribe to the published presence information associated with the UE and to receive notifications of a state of the published presence information. The processor is further configured to generate routing instructions for incoming communication requests targeted for the UE based on the state of the published presence information.
According to another embodiment of the invention, a computer-readable medium is provided that includes instructions that are executable by a computer system for routing communication requests targeted for a user over a network. The instructions executable by the computer system perform steps including subscribing a network entity to presence information of the user, receiving at least one notification at the subscribing network entity indicating a state of the presence information of the user, and creating routing instructions for routing incoming communication requests targeted for the user, based on the state of the presence information.
These and various other advantages and features of novelty which characterize the invention are pointed out with particularity in the claims annexed hereto and form a part hereof. However, for a better understanding of the invention, its advantages, and the objects obtained by its use, reference should be made to the drawings which form a further part hereof, and to accompanying descriptive matter, in which there are illustrated and described specific examples of a system, apparatus, and method in accordance with the invention.
BRIEF DESCRIPTION OF THE DRAWINGS The invention is described in connection with the embodiments illustrated in the following diagrams.
FIG. 1 is a block diagram illustrating a representative network system employing principles of the present invention;
FIG. 2 is a flow diagram illustrating a manner of routing communication requests in accordance with one embodiment of the present invention;
FIG. 3 is a block diagram illustrating one embodiment of the presence-based routing in accordance with the present invention;
FIG. 4 is a flow diagram illustrating one embodiment of a manner of routing communication requests in an IMS environment in accordance with one embodiment of the present invention;
FIG. 5 is a message flow diagram illustrating one representative manner in which a user may register to an S-CSCF;
FIG. 6 is a message flow diagram illustrating an exemplary embodiment for subscribing an S-CSCF to the presence information for a user;
FIGS. 7A and 7B illustrate representative routing scripts according to the present invention; and
FIG. 8 is a block diagram illustrating a representative computing implementation for a session management server capable of carrying out operations in accordance with the invention.
DETAILED DESCRIPTION OF THE INVENTION In the following description, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration various embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized, as structural and operational changes may be made without departing from the scope of the present invention.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Generally, the present invention provides a system, apparatus, and method for routing communication requests. A proxy or other server, configured to assist in managing sessions between networked devices, subscribes to the presence information of users of such networked devices. When the proxy/server receives notifications of presence information, it formulates a plan or “script” for routing calls according to the presence information. When a communication request arrives at the proxy/server for a particular networked device(s), the proxy/server applies the script in order to route the request to the destination that the user has identified via the presence information.
FIG. 1 is a block diagram illustrating a representative network system employing principles of the present invention. In the illustrated embodiment, anetwork100, which may include multiple interoperative networks, is used to communicate information between entities capable of communicating over the network(s)100. Thenetwork100 may include one ormore proxies102,104,106, and one or more session management proxies orservers108. Theproxies102,104,106 represent network entities that at least provide a point of contact for associated communication devices. The session management proxy/server108 represents a network entity that at least performs session management functions for thenetwork100 or network subsystem. Any number ofdifferent communication devices110,112,114,116 may communicate information over thenetwork100. These communication devices may be any type of communication devices, including landline devices such as workstations, desktop computers, portable computers, or any other computing/communication device capable of connecting to thenetwork100. The communication devices may also be mobile/wireless devices, such as thewireless device110, which may includemobile phones118, Personal Digital Assistants (PDAs)120,portable computing devices122, or anyother device124 capable of wireless communication with the network(s)100.
In accordance with one embodiment of the invention, the session management proxy/server108 subscribes126 to the presence information of a user, such as the user ofdevice110. Generally, presence refers to the willingness and/or ability of a user to communicate with other users over a network. A variety of different preference indicators may be associated with a user's preference, such as user availability, connection status, various user identities, device capabilities, and the like. Asubscription126 generally refers to a manner in which a network entity can establish its interest in obtaining notification messages relating to particular events. In the illustrated embodiment, such events relate to the publication and/or modification of user presence information.
In the illustrated embodiment of the invention, thesession management proxy108 subscribes126 to this presence information via a presence application server (AS)127. More particularly, the user ofdevice110 may register128 to thenetwork100 or network subsystem, which may result in asession management server108 being assigned to that user. The user's presence information is published via the presence AS127. For example, a publication message (e.g., SIP PUBLISH message) may be sent129 from thedevice110 to the presence AS127, where the publication message includes the user's presence information. Thedevice110 may include a publication module (not shown), such as a processor executing appropriate software instructions, to create the appropriate publication message. While thepublication message129 is illustrated as being directly sent to the presence AS127, such amessage129 would in fact be provided to the presence AS127 by way of the appropriate proxies within thenetwork100, including thesession management proxy108. When the presence AS127 receives original or modified presence information, it can notify any subscribers to that information, as described more fully below.
Upon assignment of thesession management server108 to the user, thesession management server108 subscribes126 to the presence AS127 associated with that user. It should be noted that the presencesession management proxy108 and presence AS127 may be implemented in separate network entities, or may be co-located (i.e., both functional modules residing in a common location/housing). Where these functions are co-located, thesubscription126 may be performed by way of internal functionality. For example, the subscription may be made by sending internal messages, communicating via a communication protocol between devices at the co-located entity, through direct links, etc. In another embodiment of the invention, asession management proxy108 may subscribe to such presence information at a different server or at thedevice110 itself if they are capable of providing resulting notifications.
When thesession management server108 receives a notification(s)130 of presence information, the session management server108 (or another entity operating under the direction of the session management server108) creates ascript132 for routing calls, messages, or the like, according to the presence information. If the presence information changes, correspondingnotifications130 are sent to the subscribingsession management server108 in accordance with one embodiment of the invention. Again, where thesession management proxy108 and presence AS127 are co-located,such notifications130 are “sent” internally, and may be internally communicated in any known fashion. In this manner, thesession management server108 is kept apprised of the current presence information for the user of thedevice110, and theappropriate routing script132 is created and maintained at thesession management server108.
When arequest134 from a device such asmobile device116 and targeted for theuser device110 arrives at thesession management server108, thesession management server108 applies therouting script132 to therequest134 in order to route the request to the destination according to thescript132. For example, assume the user ofdevice110 established presence information indicating that voice calls not associated with a predetermined address domain are to be treated as “busy.” Uponterminal110registration128 to thenetwork100, this presence information can be published, and the assignedsession management server108 can subscribe126 to the presence information by way of the presence AS127. When anotification130 of this presence information is received at thesession management server108, arouting script132 is created or updated. Adevice116 may then attempt to contact the user ofdevice110 by sending arequest134 to initiate a session. The request may be communicated via one ormore proxies106, ultimately arriving at thesession management server108 associated with the user ofdevice110. Thesession management server108 references therouting script132 to determine the appropriate routing decision to make based on the user's110 presence information. In the present example, assuming theuser116 is not associated with a predetermined address domain (e.g., xyz.com), the routing information will route136 the request to a destination associated with a “busy” presence state of theuser110. For example, the routing information may direct such a request to the user's110 voicemail.
FIG. 2 is a flow diagram illustrating a manner of routing communication requests in accordance with one embodiment of the present invention. A network entity performing session management functions subscribes200 to the presence information of user-A. For example, the session management server may subscribe to a presence application server to which presence information of user-A is available or otherwise managed. If the session management server receives a notification corresponding to the subscription as determined atdecision block202, the session management server will create204 a routing script based on the new or changed presence information of user-A. The routing script may then be used to route incoming communication requests that are targeted for user-A.
The present invention is applicable in any network environment employing a proxy, server, or other network entity that is involved in the management of sessions between devices on the network. In order to facilitate an understanding of the invention, particular examples of network environments, proxies, communication endpoints, and the like are described herein. For example, one representative network environment in which the present invention is applicable involves the 3rd Generation Partnership Project (3GPP) IP Multimedia core network Subsystem (IMS). Therefore, while various embodiments described herein are described in such an IMS environment, the present invention is not limited thereto and is equally applicable to other analogous network environments as will be readily apparent to those skilled in the art from the description provided herein.
FIG. 3 is a block diagram illustrating one embodiment of the presence-based routing in accordance with the present invention. In the embodiment ofFIG. 3, the presence-based routing is implemented in an IMS environment. While IMS systems and components are known to those skilled in the art, a brief description of such an environment is set forth below.
IMS is an architecture for supporting multimedia services, which is currently specified to support such multimedia services via the Session Initiation Protocol (SIP) infrastructure. The IMS includes several network entities including signaling/session control elements, and database and application servers. The session control elements are generally referred to as Call Session Control Functions (CSCFs). These CSCFs are logical functions performed by the network, and include Proxy CSCFs (P-CSCF), Interrogating CSCFs (I-CSCF), and Serving CSCFs (S-SCSF).
The P-CSCF is the first contact point within the IMS that is seen by the user's User Equipment (UE), or more particularly by the User Agent (UA) of that UE. In an IMS network, services are performed for a user in his/her home network (also referred to as a home domain). If the user is roaming outside the home network and is therefore in a visited network, the UA's first point of contact is with the P-CSCF in the visited network, which then communicates with other CSCFs in the user's home network. One task of the P-CSCF is to provide user registrations to the user's home network in order to locate the CSCFs assigned to the user. More particularly, the P-CSCF may forward registrations to the I-CSCF in the user's home network, where the I-CSCF is a contact point to the user's home network. The I-CSCF is responsible for locating the appropriate S-CSCF by contacting the Home Subscriber Server (HSS) associated with the user's home network and obtaining the address of the S-CSCF. The S-CSCF performs the session control, registration, and other services for the subscriber in the subscriber's home network.
The 3GPP IMS utilizes SIP in order to achieve a wide range of functionality with the network. SIP, defined by the Internet Engineering Task Force (IETF), is an end-to-end signaling protocol that facilitates (among other things) the establishment, handling and release of end-to-end multimedia sessions. It can be used in a wide variety of applications, including presence applications. SIP enables network endpoints or “User Agents” (UA) to discover one another and to agree on a session characterization. UAs refer to the network endpoints that initiate SIP requests to establish media sessions, and to transmit/receive information. In order to locate other users, SIP utilizes the aforementioned infrastructure of network proxy servers such as the P-CSCF, I-CSCF and S-CSCF to which users can send registrations, invitations to sessions, and other requests via their terminals.
Referring now toFIG. 3, an exemplary embodiment of the present invention in an IMS environment is described. A first UA, terminal-A1300,registers302 to the S-CSCF304 of the user's home network. For example, a SIP REGISTER message may be sent to the nearest P-CSCF (not shown) for that user, where the nearest P-CSCF may be located using Domain Name Service (DNS) SRV, Dynamic Host Configuration Protocol (DHCP), or the like. If the P-CSCF is in a visited network, the P-CSCF locates the I-CSCF of the home network for the user, and sends aREGISTER message302 to the S-CSCF304. Upon registration of terminal-A1300, the S-CSCF304 can subscribe306 to the user's presence information at the presence application server (AS)308. Other terminal applications, terminal-A2310 also register312 to the S-CSCF304.
Terminal-A1300 publishes314 its presence information via the presence AS308. In response to theprevious subscription306, the presence AS308 generates a SIP NOTIFYmessage316 to the S-CSCF304 to notify it that the presence state of the user at terminal-A1300 has changed. Using the new presence state, the S-CSCF304 creates/modifies the routing script to correspond to the presence state of the user at terminal-A1.
At some point, another user may want to establish communication with terminal-A1300. An incoming request to establish such communication, such as via aSIP INVITE request318, is received at the S-CSCF304 in the home network of the user of terminal-A1300. Based on the presence state of the user, the INVITE request is routed320 to terminal-A2310 whose presence information indicates that it is available in the illustrated embodiment. The presence information of the user at terminal-A1300 could subsequently change, thereby resulting in subsequent INVITE requests318 being routed to the terminal-A1300, or to another terminal/destination.
FIG. 4 is a flow diagram illustrating one embodiment of a manner of routing communication requests in an IMS environment in accordance with one embodiment of the present invention. In the illustrated embodiment, the user registers400 to the IMS network. When the user registers, the standard behavior of the IMS is that the user is assigned an S-CSCF. The user may optionally publish402 his/her presence information, and the S-CSCF may subscribe404 to the presence information of the user. Whether the user's presence information is published402 is a decision to be made by the user. Similarly, the particular S-CSCF may or may not be configured to subscribe404 to the published presence information of that user or other users. If the S-CSCF receives no notification of presence information as determined atdecision block406, and the S-CSCF were to receive a request (e.g., INVITE) targeted for the user as determined atdecision block408, the S-CSCF would simply usestandard routing410. This could occur, for example, if the user did not publish his/her presence information and/or if the S-CSCF did not subscribe to the presence information. However, in accordance with the present invention, receipt of a notification as determined atdecision block406 results in the S-CSCF creating412 a script to route calls (including voice, messages, etc.) according to the presence information.
At any time, the presence information may change. For example, the user may move to a different location, or an event may change causing the user's presence information to be updated. If the presence information changes as determined atdecision block414, the S-CSCF will update412 the script to route the calls according to the updated presence information. When the S-CSCF receives a request (e.g., INVITE) targeted for the user as determined atdecision block416, the S-CSCF applies418 the script in order to route the request to the destination according to the presence information as directed by the script.
FIG. 5 is a message flow diagram illustrating one representative manner in which a user may register to an S-CSCF. The embodiment shown inFIG. 5 assumes that a mobileuser using UE500 communicates with the IMS network by way of a General Packet Radio Service (GPRS) network. TheUE500 initially does not know the address of the P-CSCF502 to perform a SIP registration, and performs theappropriate functions504 to set up a data connection. TheUE500 performs GPRS Attach procedures and establishes a Packet Data Protocol (PDP) context, which establishes the path to carry SIP messages to the P-CSCF502. More particularly, theUE500 sends an Attach message to a Serving GPRS Support Node (SGSN; not shown) that includes a subscriber identifier. After certain authentication and profile procedures, the SGSN completes the Attach procedure and provides an Attach Complete to theUE500, and the location of themobile UE500 is now known to the network. Once attached, theUE500 activates a PDP address that sets up an association between the SGSN and the Gateway GPRS Support Node (GGSN)506. As is known in the art, a GGSN acts as a gateway between the GPRS network and a packet switched public data network, such as an IMS network. The GPRS allows mobile subscribers to access the data network or specified private IP networks through a standard protocol, such as the Internet Protocol (IP). Establishing a PDP context, which identifies the association between the SGSN and GGSN, activates an address for theUE500 so that theUE500 can communicate using that address. Further, the P-CSCF502 may be located using Domain Name Service (DNS) SRV, Dynamic Host Configuration Protocol (DHCP), or the like.
When theUE500 has attached to the GPRS network, a PDP context has been established, and the P-CSCF502 has been located, theUE500 needs to register to be able to set up SIP sessions. The registration process informs the IMS network where theUE500 is. More particularly, theUE500 needs to have an S-CSCF508 from its home network assigned to theUE500. This registration process is first depicted viaregistration path510 between theUE500 and the P-CSCF502, where a SIP REGISTER message is sent. The REGISTER message includes information such as the identity of the subscriber and a domain name for the user's home network. Using this information, the P-CSCF502 determines the entry point to the user's home network. The present example assumes that an I-CSCF512 is used as the entry point to the user's home network; i.e., the user is not located in his/her home network. Therefore, the P-CSCF502 discovers the I-CSCF512 with the assistance of other network entities such as the DNS. The P-CSCF502 sends theREGISTER message514 to the I-CSCF512 with the appropriate information. The I-CSCF512queries516 theHSS518 to identify the S-CSCF508. The I-CSCF512 can determine the address of theHSS518 using information from the receivedREGISTER message514. The I-CSCF512 determines the address of the S-CSCF508, and sends theREGISTER message520 to the S-CSCF508.
The S-CSCF508 andHSS518 may communicateinformation522 to register the user and to get user profile and security parameters. Where no authentication is required for registration, the S-CSCF508 may respond to theREGISTER message520 with a confirmation message that registration is complete, such as a “200 OK” response. Where registration with authentication is implemented, the S-CSCF508 may request authentication credentials, such as by sending a “401 (Unauthorized)” response back to theUE500 as shown onpaths524,526,528. TheUE500 then sends anew REGISTER message530 using its authentication credentials obtained via thesecurity association532. TheREGISTER message534 is then sent from the P-CSCF502 to the I-CSCF512, which queries536 theHSS518 to identify the S-CSCF508, and sends theREGISTER message538 to the S-CSCF508. The user is registered540, and the S-CSCF508 sends a registration/authorization complete message, such as the “200 OK” messages shown onpaths542,544,546 back to theUE500.
TheUE500 may then subscribe548,550 to events, such as an event package for registrations (EVENT: REG). User agents can create, modify, and delete registrations, and administrators can also modify registrations to enforce policy. Therefore, theUE500 may want to be notified of such registration state changes. Thesubscription548,550, and resulting “200 OK”552,554 response establishes such a subscription. In this manner, the S-CSCF508 may notify (e.g., SIP NOTIFY)556,558 theUE500 with changes in registration state, to which theUE500 will acknowledge560,562.
The above registration procedure is a description of one general registration scenario that may be utilized in connection with the present invention. However, any known registration methodology may be implemented. Details on such GRPR attach, PDP context, and SIP registration procedures are known in the art and are not further presented here.
FIG. 6 is a message flow diagram illustrating an exemplary embodiment for subscribing an S-CSCF to the presence information for a user. In the illustrated embodiment ofFIG. 6, a registration process is performed such as that described in connection withFIG. 5. InFIG. 6, the registration process is depicted between User-A600 and S-CSCF602, with the P-CSCF604 and I-CSCF606 involved as previously described. Briefly, a registration request such as a SIP REGISTER message is passed610,612,614 to the S-CSCF602, and the S-CSCF602 responds with a request for authorization credentials (assuming registration with authorization) as illustrated by the “401 (Unauthorized)”responses616,618,620. User-A600 then registers622,624,626 with the proper authentication credentials, and the S-CSCF602 responds with a message (e.g., “200 OK”)628,630,632 indicating that the authentication is verified and the registration is complete.
At some point, User-A600 may publish633 the presence information to the presence AS636, such as by issuing a SIP PUBLISH request. This can occur at any point in time, and is not temporally limited to the point in time as illustrated inFIG. 6. For example, User-A600 may publish633 presence information after the S-CSCF602 subscribes634 to the presence information of User-A600, or beforehand as shown in the illustrated embodiment. The presence AS636 may respond with an appropriate message, such as the 200 (OK)message635. In any case, the S-CSCF602 initiates a subscription to the presence information of User-A, such as by issuing aSUBSCRIBE request634 to a presence application server (AS)636. It should be noted that the S-CSCF602 and presence AS636 may be implemented in separate network entities, or may be co-located. In response to the subscription request, the presence AS636 responds with a message, such as a “200 OK”message638, indicating success of the subscription. The presence AS636 maintains the presence information/state of User-A600. The presence AS636 then provides a notification to the S-CSCF602, such as a SIP NOTIFYmessage640, providing the initial presence information for User-A600. The S-CSCF602 responds to acknowledge receipt of the NOTIFY640 message, such as by sending a “200 OK”response642. Further changes in the state of the presence information of User-A will result in additional NOTIFY640 messages being sent from the presence AS636 to the S-CSCF602. Using the presence information, the S-CSCF602 can create the routing script previously described.
The routing script in accordance with the present invention may be created in any number of manners.FIGS. 7A and 7B illustrate representative routing scripts according to the present invention, where the actual script is programmed in a manner suitable for the environment in which it is used. The routing scripts shown inFIGS. 7A and 7B are provided to illustrate examples of routing scripts, and an actual routing script will depend on at least the particular presence information provided and the programming language implemented. Therefore, the routing script examples ofFIGS. 7A and 7B are provided for illustrative purposes only, and the routing scripts according to the present invention are clearly not limited to the specific examples shown inFIGS. 7A and 7B.
The routing script created at the S-CSCF or other session management server is based on user presence information. For purposes of the example of
FIG. 7A, it is assumed that the user's presence information is as shown in Table 1A below.
TABLE 1A |
|
|
Presence Item | Presence Status |
|
Mobile-phone | Status “available” for callers from ExampleDomain.com |
voice | Status “busy” for all other callers |
Mobile-phone | Status “busy” for all callers |
video |
|
The user's presence information in this example provides presence status for two presence items. The first presence item relates to voice communications for the user's mobile phone. The current presence status indicates that the user is available to receive calls from callers having an address from “ExampleDomain.com.” The presence status is “busy” for all other mobile-phone voice calls. For mobile-phone video communications, the status is “busy” for all callers.
This embodiment therefore illustrates that there may be different presence information to subscribers from different domains. This is more evident by re-presenting the presence information as shown in Table 1B below:
| TABLE 1B |
| |
| |
| Presence Item | Presence Status |
| |
| Voice | ExampleDomain: available on mobile phone |
| | Other domains: busy |
| Video | All domains: busy |
| |
When the S-CSCF receives such presence information (e.g., from a presence AS or other network entity), it is converted into a routing script. By creating such a routing script at the IMS network, the user's presence information will be considered for all calls through the IMS network that are directed to that user. Otherwise, without the benefit of the present invention, a user could set his/her presence information at the mobile device, but would still receive unwanted calls or other session initiation requests where the network does not take the user's presence status into consideration. Further, without the benefit of the present invention, the user would have to create his/her own scripts. The use of the network-based routing script as described herein provides additional advantages as well.
FIG. 7A illustrates anexample routing script700 for the presence information shown in Tables 1A/B, which can be programmed in any appropriate language, implemented in hardware, or implemented using a combination of hardware and software. Afirst segment702 of therouting script700 is directed to mobile-phone voice calls where callers are from the domain “ExampleDomain.com.” If the caller domain is “ExampleDomain.com” and the call type is “voice,” then the call will be routed to the user's mobile phone. More particularly, the call may be routed to the SIP address “sip:user@mobilephone.operator.com,” where “user” identifies the user, and “mobilephone” identifies the destination at the domain “operator.com.” Therefore, if a voice call is received from, for example, callinguser@ExampleDomain.com, the condition will be met and the call will be routed to “sip:user@mobilephone.operator.com.”
Asecond segment704 of therouting script700 is directed to mobile-phone non-voice calls where callers are from the domain “ExampleDomain.com.” If the caller domain is “ExampleDomain.com” and the call type is not “voice,” then the non-voice call will be routed to the user's voicemail system. More particularly, the non-voice call may be routed to the SIP address “sip:user@PDA.operator.com,” where “user” identifies the user, and “PDA” identifies the PDA destination at the domain “operator.com.” The status shown to such callers may be shown as “busy” or other appropriate indication. Therefore, if a video call is received from callinguser@ExampleDomain.com, the routing script will cause the video call to be routed to “sip:user@PDA.operator.com,” since it is not a voice call. It should be recognized that other manners of routing a video call to the desired destination may be implemented, such as monitoring for a call type of “video” rather than monitoring for a call type that is anything other than “voice” (although in such a case, it would be appropriate to include a default routing segment to route “ExampleDomain.com” calls that are neither voice nor video).
If neither of the conditions is met in the first two if/else-ifsegments702,704, then athird segment706 of therouting script700 is executed. Thissegment706 is directed to all calls from caller domains other than “ExampleDomain.com.” If the caller domain is not “ExampleDomain.com,” then the call will be routed to the user's voicemail system. More particularly, the may be routed to the SIP address “sip:user@voicemail.operator.com,” where “user” identifies the user, and “voicemail” identifies the voicemail destination at the domain “operator.com.” Therefore, if a call is received from, for example, callinguser@OtherDomain.com, the call will be routed to “sip:user@voicemail.operator.com.”
Another representative routing script is illustrated in
FIG. 7B. For purposes of the example of
FIG. 7B, it is assumed that the user's presence information is as shown in Table 2 below.
| TABLE 2 |
| |
| |
| Presence Item | Presence Status |
| |
| Video | mobile phone 1: busy |
| | mobile phone 2: busy |
| | PDA: available |
| Voice | busy |
| |
The user's presence information in this example provides presence status for two presence items, including video and voice. The current presence status indicates that the user is available to receive video calls on the user's PDA, but the status is “busy” for both mobile phone-1 and mobile phone-2. For voice calls, the user's presence status is “busy” for all devices.
When the S-CSCF receives the presence information as set forth in Table 2, it is converted into a routing script, such as theexample routing script710 shown inFIG. 7B. Afirst segment712 of therouting script710 is directed to video calls. If the call type is “video,” then the call will be routed to the user's PDA. More particularly, a video call will be routed to the SIP address “sip:user@PDA.operator.com,” where “user” identifies the user, and “PDA” identifies the destination at the domain “operator.com.”
Asecond segment714 of therouting script710 is directed to voice calls. If the call type is “voice,” then the call will be handled in a predefined manner for a busy status, such as routing the voice call to a voicemail system. More particularly, a voice call will be routed to the SIP address “sip:user@voicemail.operator.com,” where “user” identifies the user, and “voicemail” identifies the voicemail destination at the domain “operator.com.” The status shown to such callers may be shown as “busy” or other appropriate indication.
In this manner, particular attributes (e.g., call type, caller domain, particular caller identity(s), caller equipment type, call priority, etc.) are used to access the appropriate routing information in the routing script. The incoming communication requests are routed to the appropriate destination(s) based on the routing script and the attributes of the communication requests. The routing script may be implemented as a program, or in other manners such as a table or other data structure which can be indexed by the particular attributes of the communication requests.
In some cases, the S-CSCF or other session management entity may be unable to perform any type of scripting language. However, in such cases, filter criteria may be dynamically changed by the S-CSCF/session management entity based on the user presence information. Filter criteria refers to information downloaded from the HSS to the S-CSCF at user registration. This information may include, for example, the address of an application server to be contacted; priority; trigger points such as header content, presence or absence of a header, a particular method, etc.; default handing information, and the like. In accordance with one embodiment of the invention, the S-CSCF dynamically changes the filter criteria based on the user presence information, when the S-CSCF is not authorized or otherwise able to perform any type of scripting language. For example, based on the presence information, filter criteria relating to application server or other addresses may be changed to effect routing changes based on the user presence information.
Hardware, firmware, software or a combination thereof may be used to perform the functions and operations in accordance with the invention. An example of a representative computing implementation of asession management server800 capable of carrying out operations in accordance with the invention, such as an S-CSCF, is illustrated inFIG. 8.
The representative computing arrangement suitable for performing the presence subscription, route script generation/maintenance, and request routing functions includes acentral processor802, which may be coupled tomemory804 andstorage806. Theprocessor802 carries out a variety of standard computing functions as is known in the art, as dictated by software and/or firmware instructions. Thestorage806 may represent firmware, hard-drive storage, etc. Thestorage806 may also represent other types of storage media to store programs, such as programmable ROM (PROM), erasable PROM (EPROM), etc. Theprocessor802 may communicate with other internal and external components through input/output (I/O)circuitry808. Thecomputing system800 may also include one or more media drivedevices810, including hard and floppy disk drives, CD-ROM drives, DVD drives, and other hardware capable of reading and/or storing information. In one embodiment, software for carrying out the operations in accordance with the present invention may be stored and distributed on CD-ROM, diskette or other form of media capable of portably storing information, as represented bymedia devices812. These storage media may be inserted into, and read by, the media drivedevices810.
Such software may also be transmitted to thecomputing arrangement800 via data signals, such as being downloaded electronically via a network, such as theInternet814, Local Area Network (LAN)816, or other network.
In accordance with one embodiment of the invention, thestorage806,memory804, and/ormedia devices812 store the various programs and data used in connection with the present invention. In the illustrated embodiment ofFIG. 8, thestorage806 is shown storing the various program modules operable in connection with theprocessor802, as well as relevant data. For example, the illustrated embodiment depicts asubscription module820, which performs the subscription to the user's presence information. For example, thesubscription module820 may generate a SIP SUBSCRIBE message to subscribe to the presence information at a presence application server. Thenotification management module822 manages the notifications received at thesystem800. More particularly, thismodule822 will receive SIP NOTIFY messages and obtain the user presence information associated with such a notification. The routingscript generation module824 converts the presence information into arouting script826. When a call or other session initiation request arrives at thecomputing system800, therouting module828 identifies the appropriate destination for which the incoming request is to be forwarded, as directed by therouting script826. An appropriate network interface mechanism or other transmitter is used to transmit the request to the appropriate destination. Standard functions performed by a session management module/S-CSCF for managing sessions, such as those relating to SIP registrations or other IMS networking functions, are not shown inFIG. 8.
Thecomputing arrangement800 ofFIG. 8 is provided as a representative example of a computing environment in which the principles of the present invention may be applied. From the description provided herein, those skilled in the art will appreciate that the present invention is equally applicable in a variety of other computing arrangements.
The foregoing description of the exemplary embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not with this detailed description, but rather defined by the claims appended hereto.