1. Field of the Invention
Embodiments of the present invention generally relate to call handling by sequenced applications, and, in particular, to a system and method for bypassing a sequenced application if inadequate system resources are available.
2. Description of Related Art
Session Initiation Protocol (SIP) is an open signaling protocol for establishing many kinds of real-time communication sessions. Examples of the types of communication sessions that may be established using SIP include voice, video, and/or instant messaging. These communication sessions may be carried out on any type of communication device such as a personal computer, laptop computer, Personal Digital Assistant, telephone, mobile phone, cellular phone, or the like. One key feature of SIP is its ability to use an end-user's Address of Record (AOR) as a single unifying public address for all communications. Thus, in a world of SIP-enhanced communications, a user's AOR becomes their single address that links the user to all of the communication devices associated with the user. Using the AOR, a caller can reach any one of the user's communication devices, also referred to as User Agents (UAs) without having to know each of the unique device addresses or phone numbers.
Many SIP communications are enhanced by virtue of the fact that an application is inserted or included into the communication session during the establishment of that session. The incorporation of applications into a communication session is typically referred to as application sequencing because the applications are sequentially invoked during the establishment of the communication session. In some instances the applications are owned and operated by an enterprise that is administering the SIP network. In some instances, the applications may be provided by third-party vendors. In either event, the traditional way in which applications were included in the communication session was during the communication session establishment stage so that these applications can insert themselves into the signaling and media path of the communication session.
Exemplary types of applications that may be utilized for a communication session include, without limitation, call recording applications, communication log services, conferencing applications, security applications, encryption applications, collaboration applications, whiteboard applications, mobility applications, presence applications, media applications, messaging applications, bridging applications, and any other type of application that can supplement or enhance communications.
Session managers such as Avaya Aura™ for enterprise telephony networks allow sequencing of network applications at session origination and termination phases, in order to affect the way the session is routed in the network. During the origination phase, the call is routed through the servers associated with the calling party's profile. During the termination phase, the call is routed through the servers associated with the called party's profile. The selection of network applications that are used during origination and termination sequencing phases is generally based on the identities of calling and called parties that are involved in a communication session. The list of servers (e.g., feature servers) that forms the sequence vector may be administered at user provisioning time. The calling party's provisioning profile provides the originating sequence vector whereas the called party's profile provides the terminating sequence vector. These two vectors combined provide a map of how a session initiation request travels from calling party to called party in the network.
Sequence vectors presently known in the art are static despite status changes that may occur in the applications that make up the sequence vector. For example, if an application that is in the sequence for a call were to fail, the call setup would fail even if the application is not critical for the completion of the call. However, if the session manager could skip over an application in distress or failure, or execute the application at a reduced level of performance, the call may be completed despite the application being in distress or failure. Currently, there is no easy way for applications that are in the sequence vector to inform a session manager about its current signaling and media status in order to influence the sequencing decision that a session manager makes as a session progresses through the network. Therefore, a need exists to provide dynamic adjustment to sequence vectors in order to provide more robust call handling when a noncritical application is in distress or failure.