Apparatus and method for developing applications with telephony functionality

One embodiment of the present invention provides a system that facilitates developing applications with telephony functionality. The system includes a session initiation protocol (SIP) gateway configured to interface with a public switched telephone network (PSTN). The SIP gateway translates telephone calls from telephones coupled to the PSTN to SIP protocol messages. A SIP server coupled to the SIP gateway accepts these SIP protocol messages and an application server accesses a voice extensible markup language (VXML) page on behalf of the SIP server. A VXML gateway provides access to the VXML page by a users of the telephones.

BACKGROUND

1. Field of the Invention

The present invention relates to systems that provide telephony services. More specifically, the present invention relates to an apparatus and a method for developing applications with telephony functionality.

2. Related Art

Modern telephony systems support voice applications that provide essential services and capabilities to modern business enterprises. For example, these voice applications can support call centers, voice mail, conferencing, and next generation application functions, such as wake-up calls and stock alerts.

Current systems can provide these services through a voice extensible markup language (VXML) gateway that acts as an interface between an application server and the public switched telephone network (PSTN). This allows the application server to provide VXML pages to the VXML gateway. The VMXL gateway uses these VXML pages to interface with a user.

In doing so, the user may select an option from the VXML page that switches the incoming call from the service representative to a telephone within the company that belongs to the user. The VXML gateway facilitates this switching operation. At the end of the call, the user can be switched back to the application server to access a different service.

One problem with this technique is that it ties up ports on the VXML server needlessly. One port is used for the incoming call and a second port is used to make the connection to the user's telephone within the company. Using two ports to connect an external telephone with an internal telephone is a very expensive solution because the VXML ports are expensive to install and maintain.

One technique for freeing ports used in this way is for the call center application to perform a “blind switch” to the internal telephone. In this technique, the incoming call is coupled directly to the internal telephone without the VXML gateway in the loop. However, because the VXML gateway is not in the loop, the user cannot regain access to the VXML gateway without hanging up the telephone and redialing the call center application.

Hence, what is needed is an apparatus and a method for developing applications with telephony functionality without the problems described above.

SUMMARY

One embodiment of the present invention provides a system that facilitates developing applications with telephony functionality. The system includes a session initiation protocol (SIP) gateway configured to interface with a public switched telephone network (PSTN). This SIP gateway translates telephone calls originating from the PSTN into SIP protocol messages. A SIP server coupled to the SIP gateway accepts these SIP protocol messages and passes them to an application server, which accesses a voice extensible markup language (VXML) page on behalf of the SIP server. A VXML gateway provides access to the VXML page by users of telephones coupled to the PSTN.

In a variation of this embodiment, the SIP gateway accesses a specified VXML page to provide a requested function for the user.

In a further variation, the application server provides a web service message to the SIP gateway, wherein the web service message provides a connection status of the telephone call.

In a further variation, the application server provides a web service message to the SIP gateway, wherein the web service message can be used to control the telephone call by performing operations such as connecting, disconnecting, and redirecting the telephone call.

In a further variation, the application server can initiate telephone calls from the SIP gateway to a telephone coupled to the PSTN.

In a further variation, the application server provides a web page to the user, wherein the web page can be used to control access to advanced functions. These advanced functions include wake-up call applications, stock alert applications, and the like.

In a further variation, the SIP gateway switches a voice portion of the telephone call from the VXML gateway to the user's telephone thereby releasing the VXML gateway from service when the user is not accessing the VXML page.

DETAILED DESCRIPTION

The data structures and code described in this detailed description are typically stored on a computer readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. This includes, but is not limited to, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs) and DVDs (digital versatile discs or digital video discs).

Telephony Solution

FIG. 1illustrates a telephony solution in accordance with an embodiment of the present invention. The system includes telephone104, public switched telephone network (PSTN)106, session initiation protocol (SIP) gateway108, SIP server110, application server112, unified telephony platform114, voice extensible markup language (VXML) gateway116, SIP telephone118, and computer122.

Telephone104can be any telephone including cellular telephones and their associated cellular mechanisms that can be coupled to PSTN106. SIP server110includes a SIP servlet container and SIP servlets, which are not shown.

The system operates generally as follows. User102uses telephone104to connect with PSTN106as connection126. PSTN106couples connection126from telephone104to SIP gateway108as connection128. Note that connections126and128include both signaling information and voice signals.

SIP gateway108uses the signaling information from connection128to access SIP server110on link130. This signaling information identifies the application that is being requested from application server112. This application can be identified from the telephone number called by user102and can include, for example, a call center application.

SIP server110sends this application data to application server112across connection132. Next, application server112access the associated application, which sends web services message134to unified telephony platform114. Unified telephony platform114then performs a remote method invocation (RMI) to a corresponding SIP servlet in SIP server110.

This SIP servlet signals SIP gateway108to switch the voice signal portion of connection126to VXML gateway116as connection142. Additionally, the SIP servlet sends data across coupling138to VXML gateway116to allow user102to converse with VXML gateway116.

At some point during the telephone call, VXML gateway116can be directed to switch the telephone call to user120. This can be accomplished as follows. VXML gateway116signals SIP server110that the connection needs to be switched. Next, SIP server110signals VXML gateway to disconnect connection142, and also signals SIP telephone118across coupling140to accept an incoming call. SIP server110also signals SIP gateway108to switch the voice portion of connection128to SIP telephone118across coupling144. This enables user120to converse with user102through SIP telephone118. Note that VXML gateway116is removed from the telephone call thereby releasing any ports on VXML gateway116that were being used for the telephone call.

When the conversation between user102and user120is finished, user120can use computer122to send web services message150to unified telephony platform114. This causes unified telephony platform114to switch the voice portion of connection128back to VXML gateway116for further voice access to the application. Note that computer122can be used to query the status of the transfer and can provide contingency functions if SIP gateway108fails to transfer the call to VXML gateway116(if, for example, all of the ports of VXML gateway116are currently busy).

FIG. 2provides an activity diagram of an exemplary click-to-dial application in accordance with an embodiment of the present invention. In this example, a user can select a desired phone number through personal digital assistant (PDA)202. This phone number is then transferred to click-to-dial application208using hypertext markup language/hypertext transfer protocol (HTML/HTTP). Next, click-to-dial application208transfers the phone number to unified telephony platform206through web service/simple object access protocol (WS/SOAP).

Unified telephony platform206subsequently uses remote method invocation (RMI) to access the proper SIP servlet within SIP servlet container204. This RMI can take place through an RMI registry. The SIP servlet within SIP servlet container204sends a SIP message to user1telephone210and a SIP message to user2telephone212. These SIP messages cause user1telephone210and user2telephone212to initiate a real-time transport protocol (RTP) session. User1and user2can then communicate with each other over the RTP session.

Conferencing Application

FIG. 3provides an activity diagram of a teleconferencing application in accordance with an embodiment of the present invention. In this example, a user wishing to join a conference call can initiate a call from a user phone on the public switched telephone network (PSTN)302. PSTN-to-SIP gateway304then sends a SIP message to a SIP servlet within SIP servlet container306to join the conference call. Next, the SIP servlet within SIP servlet container306sends a SIP message including an application URL to voice extensible markup language (VXML) browser310.

VXML browser310then communicates with conference application312to establish parameters for joining the conference call, including the location of the media server, in this case media server314. VXML browser310also establishes an RTP media session through PSTN to SIP gateway304to user phone (PSTN)302. This RTP media session allows the user at user phone (PSTN)302to communicate with VXML browser310.

Once the proper conference is identified, conference application312initiates a WS/SOAP message to unified telephony platform308to join the conference call. In response, unified telephony platform308performs a remote method invocation to a servlet within SIP servlet container306.

The servlet within SIP servlet container306then initiates a SIP disconnect message to VXML browser310and a SIP switch message to PSTN to SIP gateway304. The SIP servlet also initiates a SIP connect message to media server314. These messages cause the RTP session between user phone (PSTN)302and VXML browser310to be dropped and an RTP session to be established between user phone (PSTN)302and media server314.

FIG. 4provides an activity diagram of application-initiated conferencing in accordance with an embodiment of the present invention. In this example, conference application412initiates a WS/SOAP message to unified telephony platform408to invite user phone (PSTN)402to join the conference call. In response, unified telephony platform408performs a remote method invocation to a SIP servlet within SIP servlet container406.

To initiate the connection, the SIP servlet sends a SIP message to PSTN to SIP gateway404. The SIP servlet also sends a SIP message with a URL to VXML browser410. VXML browser410then communicates with conference application412using VXML and also communicates with user phone (PSTN)402across an RTP media session.

After establishing that the user is available at user phone (PSTN)402, conference application412issues a WS/SOAP message to unified telephony platform408to switch user phone (PSTN)402to the conference call. In response to this message, unified telephony platform408performs a remote method invocation to a SIP servlet within SIP servlet container406.

The SIP servlet then issues a SIP (switch) message to PSTN to SIP gateway404, a SIP (disconnect) message to unified telephony platform408, and a SIP connect message to media server414. These SIP messages cause user phone (PSTN)402to be connected to media server414across an RTP media session thereby joining the conference call.

Call Center Application

FIG. 5provides an activity diagram of an exemplary call center application in accordance with an embodiment of the present invention. First, a user contacts the call center connects to a SIP servlet within SIP servlet container504from user phone through SIP gateway502. In response, the SIP servlet sends a SIP message with an application URL to VXML browser508. VXML browser508then establishes a VSML session with call center application510and an RTP media session with user phone through SIP gateway502.

After the user selects the desired option from call center application510, call center application510sends a WS/SOAP message to unified telephony platform506and an application specific message to call center screen pop software514. In response to the WS/SOAP message, unified telephony platform506invokes a SIP servlet within SIP servlet container504using remote method invocation. This SIP servlet sends a SIP switch message to user phone through SIP gateway502, a SIP disconnect message to unified telephony platform506, and a SIP connect message to customer rep phone512. These messages connect user phone through SIP gateway502to customer rep phone512across an RTP media session.

After the user finishes conducting business with the customer service representative, call center screen pop software514sends an application specific message to call center application510. In response, call center application510sends a WS/SOAP message to unified telephony platform506to switch the user back to VXML browser508. Next, unified telephony platform506makes a remote method invocation to a SIP servlet within SIP servlet container504. This SIP servlet issues a SIP switch command to user phone through SIP gateway502, a SIP disconnect command to customer rep phone512, and a SIP connect with URL command to VXML browser508. These commands connect user phone through SIP gateway502to VXML browser508using an RTP media session.

Voicemail Application

FIG. 6provides an activity diagram of an exemplary voicemail application in accordance with an embodiment of the present invention. In this example, a first user at user1phone602attempts to reach a second user at user2phone606through PBX604. After a specified number of rings with no answer at user2phone606, PBX604disconnects from user2phone606and connects to SIP-PBX gateway608. SIP-PBX gateway608then sends a SIP message to a SIP servlet within SIP servlet container610. This causes the SIP servlet to send a SIP message with a URL to VXML browser612.

Next, VXML browser612initiates a VXML session with a voicemail application running on unified telephony platform614and an RTP session through SIP PBX gateway608to user1phone602so the first user can leave a voicemail message. The voicemail application running on unified telephony platform614then connects to voicemail store616to store the incoming voicemail message.

At a later time, the second user connects to PBX604using user2phone606to retrieve the voicemail message. In response, PBX604connects to SIP-PBX gateway608. SIP-PBX gateway608then sends a SIP message to a SIP servlet within SIP servlet container610requesting retrieval of the voicemail message.

Next, the SIP servlet sends a SIP message with a URL to VXML browser612. VXML browser612then establishes a VXML session with the voicemail application in unified telephony platform614and an RTP session with user2phone606through SIP PBX gateway608. The voicemail application in unified telephony platform614then connects to voicemail store616to retrieve the voicemail message and provide the voicemail message to the second user at user2phone606.

PBX Functionality

FIG. 7provides an activity diagram of exemplary PBX operations in accordance with an embodiment of the present invention. In this example, a first user initially connects to SIP-PSTN gateway704through user1PSTN phone702. In response, user1PSTN phone702sends a SIP message to a SIP servlet within SIP servlet container710. This SIP servlet, in turn, sends a SIP message with a URL to VXML browser712.

Next, VXML browser712establishes a VXML session with unified telephony platform714and an RTP session with user1PSTN phone702through SIP-PSTN gateway704. The first user can then retrieve the extension number for a second user from unified telephony platform714. Next, the first user can send a request to unified telephony platform714indicating that a connection with the second user is desired.

If the first user requests the connection, unified telephony platform714sends a WS/SOAP message to a SIP servlet in SIP servlet container710to make the connection. In response, the SIP servlet sends a SIP connect message to user2SIP phone, a disconnect message to VXML browser712, and a switch message to SIP-PSTN gateway704. These messages connect user1PSTN phone to user2SIP phone across SIP-PSTN gateway704.

If the second user desires to transfer the call to a third user, the second user can initiate the call transfer by sending a message from user2SIP phone706to unified telephony platform714. In response to this message, unified telephony platform714sends a WS/SOAP message to a SIP servlet in SIP servlet container710to transfer the connection. The SIP servlet then sends a SIP connect message to user3SIP phone708, a SIP disconnect message to user2SIP phone706, and a SIP switch message to SIP-PSTN gateway704. These messages cause the RTP session to be transferred to user3SIP phone708.

Initiating Calls

FIG. 8provides an activity diagram for application-initiated calls in accordance with an embodiment of the present invention. The example provided inFIG. 8is a wake-up call application. However, the same operations apply to other application-initiated calls, such as stock price alerts.

As is illustrated inFIG. 8, a user desiring a wake-up call access application server808through computer802to configure the wake-up time and the telephone number to be called. Note that the user can set other parameters as defined by the wake-up application.

When the time arrives for the wake-up call, application server808sends a web services message to SIP-PSTN gateway806to establish a connection with user1PSTN phone804. SIP-PSTN gateway806also sends a SIP connect message with a URL for the wake-up dialog to VXML gateway810.

These connections establish a voice RTP session between USER1PSTN phone804and VXML gateway810through SIP-PSTN gateway806. Upon completion of the wake-up call, SIP-PSTN gateway806sends disconnect messages to both USER1PSTN phone804and VXML gateway810. This causes the call to be disconnected.