A. Field of the Invention
The present invention relates to controlling call server systems, and more particularly to methods, apparatus, and articles of manufacture for communication between a web application and a call server.
B. Description of the Related Art
A legacy telephone system typically includes a number of telephone sets coupled to a private branch exchange (PBX) by physical wiring. A call server resides in the PBX and handles many different call-related functions for the telephone sets. Call control functions, service control functions, and user interface functions are typically controlled by the call server. Although several of those call-related functions can be initiated by users of the telephone sets, many are generally inaccessible. More specifically, while the call server can be controlled by a limited number of commands available to a user, many additional commands can only be issued by system administrators using restricted access interfaces.
Call control functions, such as call connection, call disconnection, and connection of the members of a conference call, are typically performed by a call server in response to a command from a telephone set coupled to the telephone system. For example, such a command could be the act of dialing a telephone number. Service control functions, such as establishing a conference call, performing last number redial, and initiating a voice mail function can be performed by a call server in accordance with a “policy” applied to a user's telephone. A system administrator controls the policy, and thus controls which services are available to a user, by issuing commands to the call server through the restricted interface. Accordingly, users have a limited degree of control over the services available to them, which can typically be expanded only by contacting the telephone system administrator.
A need exists to expand the functionality of legacy telephone systems such that users thereof have greater control over their associated call server and telephone set. Thereby, users can access greater functionality without having to communicate requests to a telephone system administrator. Such a methodology increases the usefulness of legacy telephone systems by allowing them to be highly configurable by a user.
Methods, apparatus, and articles of manufacture consistent with the principles of the present invention enable communication between a web application and a call server. A web application can be implemented anywhere, such as on a PC with a user interface, or on a server. The invention provides a channel over which the call server communicates with an IP network and the web application. The communications may include typical call server control commands, such as call control commands for controlling telephone calls or service control commands for controlling telephone services. The invention may reduce the call control commands to a small set of primitives. For example, the invention may reduce the call control commands to primitives based on a conference model. The invention also converts data communicated to the call server from the web application into a native call server protocol, and the data communicated to the web application is converted to a native web application protocol.
Another aspect of the principles of the present invention provides a system for web-based control of telephony functions comprising a call server, a web application, a user interface device, and a wrapper for providing a communication channel and translating data transferred through the channel. The wrapper may be located anywhere within the system where a web application communicates with a call server.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and together with the description explain the advantages and principles of the invention.
Reference will now be made in detail to an embodiment of the invention as illustrated in the accompanying drawings.
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. One skilled in the art, however, will realize that the present invention may be practiced without these specific details. In other instances, standard structures and devices are shown in block diagram form in order to facilitate description.
The present application is related to and incorporates by reference the U.S. patent application of K. Scott Ramey, Craig Will, and Larry David entitled METHOD, APPARATUS AND ARTICLE OF MANUFACTURE FOR WEB-ENABLING LEGACY TELEPHONE DEVICES filed on Oct. 8, 1999, attorney docket number 03384.0373-00000 and the U.S. patent application of K. Scott Ramey, Michel Burger, and Larry David entitled METHOD, APPARATUS, AND ARTICLE OF MANUFACTURE FOR WEB-BASED CONTROL OF A UNIFIED MULTI-PURPOSE COMMUNICATION SYSTEM filed on Oct. 8, 1999, attorney docket number 03384.0374-00000.
In one embodiment, steps according to the present invention are embodied in machine-executable software instructions, and the present invention is carried out in a processing system by a processor executing the instructions. Those skilled in the art will recognize that other embodiments, for example hardwired circuitry, may be used in place of, or in combination with, software instructions to implement the present invention.
As used herein, call server system is broadly defined as a collection of elements, including a call server, that function to control telephone calls and telephone services. Apparatus and methods consistent with the principles of the invention act as an interface between an IP network, such as the World Wide Web, and a legacy call server system, which lacks the ability to communicate over the IP network.
Call server 137 is communicatively connected to a computer telephony interface (CTI) server 130. CTI server 130 allows a computer to indirectly communicate with and control call server 137. CTI server 130 has a conventional application program interface (API) for communicating with external applications. The API may be a standards-based interface, such as the Telephony API (TAPI) developed by Microsoft or the Java TAPI (JTAPI) developed by Sun Microsystems, or the API may be a proprietary interface. By way of example, CTI server 130 is shown as a device separate from call server 137. CTI server 130 could, however, be implemented as part of call server 137, or as part of another server (not shown).
CTI server 130 is connected to a web server 120. In this embodiment, web server 120 includes a wrapper 122, which executes on web server 120. CTI server 130 communicates with wrapper 122. Web server 120 is connected to IP network 115.
A personal computer (PC) 110 executes a web application (not shown) that a user interacts with through user interface 112. A user can send data to and receive data from IP network 115 using the web application, and therefore can exchange data with wrapper 122 executing on web server 120. Conversely, wrapper 122 running on web server 120 can receive data from and transmit data to IP network 115, and therefore can exchange data with a web application program executing on PC 110. In another embodiment, a web application (not shown) runs on a server connected to IP network 115, instead of PC 110, and communicates through wrapper 122. In yet another embodiment, a web application running on PC 110 communicates indirectly with wrapper 122 by communicating through a web application (not shown) running on a server (not shown) connected to IP network 115, which acts as an interface, passing the communication on to wrapper 122.
Wrapper 122 thus links IP network 115 and CTI server 130, providing a communication channel between the web application executing on PC 110 and call server 137. In the embodiment of
One skilled in the art will recognize that a call server system used with apparatus and methods consistent with the principles of the invention may comprise fewer elements. For example, a call server by itself is a single element call server system. Wrapper Functions
For a web application and a call server system to communicate with each other, the web application must use an API provided by the call server system. As noted above, CTIs that provide API's for call servers employ many different formats of API's. Thus, a single web application cannot communicate with all types of call server systems. Apparatus and methods consistent with the principles of the present invention provide a single API for all call server systems, and translate data transferred between a web application and a call server system into formats compatible with each.
If web application data is not received (step 215), wrapper 122 determines whether call server data was received from the call server entity handling the communication from the web application (step 230). If call server data was received, wrapper 122 translates the data from call server system format to web application format (step 235), and transmits the translated data to the web application executing on PC 110 (step 240). Processing then returns to determining whether additional web application data was received (step 215).
Wrapper 122 handles translations between data in a web application format and data in a call server system format, allowing legacy call server systems to interact with web-enabled entities on IP network 115. In one embodiment, the data comprises commands which cause the call server to perform a function, or status information describing the state of a call server function.
One skilled in the art will recognize that the tasks of receiving and translating data from the call server system and the web application could be performed concurrently by a multi-tasking computing system without departing from the scope of the present invention.
Wrapper 122 comprises two interfaces: a web application program interface (API) through which it communicates with the web application executing, in this example, on PC 110, and a call server system interface through which it communicates with a call server system entity. Wrapper 122 provides a uniform user interface for call server systems, such as PBX's, and may be designed consistent with the present invention to operate with any model and manufacturer. Thus, wrapper 122 allows web applications and call server systems to interact with each other without reprogramming either end to provide data in a format specific to the other end.
The web API of wrapper 122, defines the web application data format. That is, the web API specifies the format of the data communicated between the web application and the wrapper. In one embodiment, the web API specifies that the web application data be in the format of a call control command. A call control command causes call server 137 to perform a function which controls a telephone call or is a response from call server 137. For example, a call control command may cause call server 137 to create a connection between two telephony devices, and call server 137 may send a responding call control command to indicate that a connection is established.
In one embodiment, the call server control commands are broken down into primitives. The number of primitives may be fewer than the number of call server control commands. Reducing the number of call control commands to a small group of primitives simplifies the wrapper user interface. Complex call control functions may be realized by using combinations of the call control command primitives.
For example, conference call control commands might include the primitives:
create_conference(id), which creates a communication context, identified by the id parameter, in the call server;
delete_conference(id), which deletes an existing communication context, identified by the id parameter, in the call server;
add_to_conference(id, user), which adds a user whose attributes, for example telephone number, are contained in the user parameter to an existing communication context, identified by the id parameter, in the call server;
delete_to_conference(id, user) which deletes a user identified by the user parameter from an existing communication context, identified by the id parameter, in the call server; and
notify(event) which reports status, using the event parameter, to the web application.
Those skilled in the art will recognize that the principles described herein apply to any call server functionality without departing from the spirit and scope of the invention. Thus, the principles may be applied to any call control commands providing various functions in addition to the functions noted above. For example, a reroute(id1, id2, user) conference call control command, which causes a call already connected to the user to be rerouted through another context could also be part of the web API without departing from the scope of the invention.
In one embodiment, the web API specifies that the web application data be in the format of a service control command. A service control command causes the call server to affect a telephony service for a telephony device. For example, the web API may include an add caller id(user) service control command, which enables a caller id service for the telephone identified by the user parameter. For another example, the web API may include a ring(user, ring) service control command, which changes the ring pattern according to the ring parameter for the telephone identified by the user parameter.
In one implementation, the web API follows the Jini device definition created by Sun Microsystems to allow easy network connection of a web-enabled call server system.
The call server system that a wrapper communicates with defines the call server data format. That is, the call server system's interface specifies the format of the data communicated between the call server and wrapper 122. in one embodiment, the present invention converts data from a web application format into a call server system data format before transmitting the converted data to the call server system.
One aspect of the present invention is providing web-accessability to an installed call server, with little or no modification of the call server system. Returning to
A web application is any entity on IP network 115 capable of communicating with wrapper 122 on web server 120. In one embodiment, a web application communicates with the wrapper using a web application data format defined by the web API of wrapper 122.
In one embodiment, the web application is a Java applet running on a web browser on PC 110. The web browser loads a web page including the Java applet web application. The web page provides a graphical user interface (GUI) for control and presentation to the user. The web page may be loaded locally from PC 110, or it may be loaded from a remote computer, for example a web server which is accessed using a standard universal resource locator (URL). The web page accessed by the web browser could be in any standard browser-readable language, for example, hypertext markup language (HTML) or extensible markup language (XML), both using Hyper Text Transfer Protocol (HTTP).
In another embodiment, the web application is a stand-alone process running on PC 110, or on a separate web server (not shown). The stand-alone process communicates with the wrapper in web application data format in conformance with the web API. If the web application is located on a separate server, remote method invocation (RMI), or common object request broker architecture (CORBA) can be used to publish the web application interface. In still another embodiment, a web application, for example running on PC 110, may communicate indirectly with wrapper 122 on a path through another web application running on a web server (not shown). One skilled in the art will recognize that a web application could be implemented in a number of ways, such as a hard-wired circuit, and still be consistent with the principles of the present invention.
Referring again to
Using web browser 112, the user accesses web server 120 with, for example, the URL address of the web server. Web browser 112 downloads a web application in the form of a Java applet. The web application applet, running on web browser 112, establishes a connection with call server 137 through wrapper 122 and CTI server 130. From the web application GUI on PC 110, the user sends the appropriate data to make a phone call between desktop telephone 140 and the destination telephone (not shown) connected to PSTN 145. The data may include information such as the user's number, the number to be called, and call control commands for web server 137.
In response to the data, call server 137 establishes a connection between telephone 140 and the destination telephone. In one embodiment, at this point, user telephone 140 rings and at the same time the destination telephone rings. Each of the telephones are connected when they are put offhook, and call server 137 concurrently sends two notify events to the web application to indicate that the user telephone 140 and destination telephone are connected. In another embodiment, user telephone 140 rings until the user puts the telephone offhook. Then, the destination telephone rings until it is put offhook, and call server 137 sends two notify events successively to the web application to indicate that the user telephone 140 and destination telephone are connected.
The wrapper may be placed anywhere in a system that requires a communication path and format translation between web application data and a call server system data. The present invention may be implemented using one or more computer software programs or applications. As a software embodiment, the present invention may be executed on any processor communicatively connected, either directly or indirectly, to both an IP network and a call server system. One skilled in the art will recognize that other implementations, for example, as a hardwired device, are possible within the scope of the present invention, and may be placed similarly in the network environment.
PBX 610 comprises a call server 615. Call server 615 acts in a conventional manner, controlling telephone calls and telephony services, such as call forwarding and voice mail, in the PBX. Call server 615 is communicatively connected to data network 620.
Data network 620 may be any conventional network that allows communication between data processing systems connected to it. For example, data network 620 may be a Local Area Network (LAN) or Wide Area Network (WAN). Data network 620 is shown isolated from IP network 640. In other embodiments consistent with the principles of the present invention, data network 620 may be connected to IP network 640. CTI server 625 is communicatively connected to data network 620, and implements a computer telephony interface so that a data processing system accessing the CTI's API through the data network 620 may control call server 615.
Web server 630 is communicatively connected to data network 620 and to IP network 640. Web server 630 comprises a processor (not shown) and storage media 635. In this embodiment, storage media 635 includes a web page 637 and wrapper 639. Web page 637 comprises a Java applet web application for communicating with call server 615 through wrapper 639. Web server 630 executes wrapper 639, and makes web page 637 available over IP network 640. One skilled in the art will realize that an entity other than a web page 637 could be used to publish the interface to a web application for communicating with call server 615, within the scope of the present invention. For example, XML formatted data or a stub for a remote object could be used to provide users with a web application.
Web browser 645 is connected to IP network 640. In this embodiment, web browser 645 loads web page 637 from web server 630. Web page 637 includes a web application program, in this example a Java applet, which executes on web browser 645. The web application program communicates with call server 615 by transmitting data to wrapper 639 over IP network 640. The wrapper 639 translates the data and transmits it to the CTI server 625 via the data network 620. The CTI server communicates with the call server 615 over the data network 620. Call server 615 communicates with the web application program back along the same path.
PBX 710 comprises a call server 715, which controls calls and services in the PBX 710. Call server 715 is communicatively connected to data network 720. CTI/web server 730 is communicatively connected to a data network 720 and to an IP network 740. CTI/web server 730 comprises storage media 735. A wrapper 739, a standard CTI program 738, and a web page 737 are stored in storage media 735. In this embodiment, CTI/web server 730 executes wrapper 739 and standard CTI program 738, and makes web page 737 available over IP network 740.
Web browser 745 is connected to IP network 740. Web browser 745 loads web page 737 from CTI/web server 730. In this embodiment, web page 737 provides a Java applet web application which executes on web browser 745. The web application program indirectly communicates with call server 715 by communicating with wrapper 739 over IP network 740. Wrapper 739 communicates with CTI program 738 internal to CTI/web server 730. CTI program 738 communicates with call server 715 via data network 720. Thus, data can be transferred between the web application executing on web browser 745 and call server 715.
PBX 810 comprises a call server 815. Call server 815 is communicatively connected to IP network 840. Call server 815 comprises a processor and storage media 835. Wrapper 839, a standard CTI program 838, and web page 837 are stored in storage media 835. In this embodiment, call server 815 executes the wrapper 839, and the CTI program 838, and makes web page 837 available over IP network 840.
Web browser 845 is connected to IP network 840. Web browser 845 loads web page 837 from call server 815. Web page 837 provides a Java applet web application program which executes on web browser 845. The web application program communicates with the call server 815 using a communication channel that runs across IP network 840, through wrapper 839, through the CTI program 838, and to the call server's control and service functions.
Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
Number | Date | Country | |
---|---|---|---|
Parent | 10662603 | Sep 2003 | US |
Child | 14313625 | US | |
Parent | 09414589 | Oct 1999 | US |
Child | 10662603 | US |