SYSTEM FOR BUILDING A TELEPHONY APPLICATION FIELD OF THE INVENTION The present invention relates to telephony systems, and in particular to apparatus and methods for building applications for use in telephony systems.
BACKGROUND OF THE INVENTION
Telephony systems are well known in the art. Telephony systems typically include telephony switches and other telephony devices. Typical prior art telephony switches which might be used on private premises, as opposed to being used as part of the public switched telephone network (PSTN), include switches available from Lucent
Technologies and the AS 5300 switch available from Cisco. Telephony switches are generally used to provide telephony services to end units such as conventional telephones, the services typically including basic services such as call establishment, routing of calls to other switches or to the PSTN, and other well known services.
Telephony switches may provide services to telephony devices, which in turn control, receive commands from, and provide services to end units. Advanced services may also be included, as is well known in the art. Telephony switches typically operate according to a pre-defined protocol. One example of a prior art protocol which can be used in a telephony system including telephone switches is the H.323 v. 2 protocol of the International Telecommunications Union (ITU), published in 1998.
In order to provide an application having specific desirable behavior for use in a telephony device, the application must incorporate specific knowledge of the protocol used by the associated telephony switches. Typically, for a system designer or programmer to learn a telephony protocol and to incorporate such specific knowledge into an application is a time consuming and therefore an expensive task.
Technologies related to those of the present invention are described in a co-pending application entitled "Telecommunications System Failure Recovery", filed on the same day as the present application, having the same inventors and assigned to the same assignee as the present application. The "Telecommunications System Failure
Recovery" application is hereby incorporated herein by reference.
The disclosures of all references mentioned above and throughout the present specification are hereby incorporated herein by reference.
SUMMARY OF THE INVENTION The present invention seeks to provide improved apparatus and . methods for building applications for use in telephony systems. In the present invention, a framework for building telephony applications is provided, wherein an application built with the framework is insulated from the telephony protocol.
There is thus provided in accordance with a preferred embodiment of the present invention a system for building a telephony application for use with a telephony switch running a telephony protocol, the system including an infrastructure module for communicating with the telephony switch running the telephony protocol, wherein an application built with the infrastructure module is insulated from the telephony protocol.
Further in accordance with a preferred embodiment of the present invention the telephony protocol includes H.323.
Still further in accordance with a preferred embodiment of the present invention the infrastructure module includes a plurality of objects.
Additionally in accordance with a preferred embodiment of the present invention each of the plurality of objects is implemented in a programming language.
Moreover in accordance with a preferred embodiment of the present invention the programming language includes an object-oriented programming language. Further in accordance with a preferred embodiment of the present invention the object-oriented programming language includes C++.
Still further in accordance with a preferred embodiment of the present invention the plurality of objects includes the following: an application object, a terminal object, at least one channel object, at least one call object, at least one device object, and at least one media session object.
Additionally in accordance with a preferred embodiment of the present invention the plurality of objects also includes at least one of the following: a protocol call object, and a states object.
There is also provided in accordance with another preferred embodiment of the present invention a method for building a telephony application for use with a telephony switch running a telephony protocol, the method including providing an
infrastructure module for communicating with the telephony switch running the telephony protocol, wherein an application built with the infrastructure module is insulated from the telephony protocol, and building an application using the infrastructure module. In accordance with another preferred embodiment of the present invention, an application produced by the method is also provided.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be understood and appreciated more fully from the following detailed description, taken in conjunction with the drawings in which:
Fig. 1 is a simplified pictorial illustration of a telephony system including an application built with a system for building telephony applications constructed and operative in accordance with a preferred embodiment of the present invention; and
Fig. 2 is a simplified pictorial illustration of a preferred embodiment of a portion of the system of Fig. 1.
DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT Reference is now made to Fig. 1 which is a simplified pictorial illustration of a telephony system including an application built with a system for building telephony applications constructed and operative in accordance with a preferred embodiment of the present invention.
The system of Fig. 1 preferably comprises one or more telephony switches 100, two telephony switches 100 being shown in Fig. 1 by way of example only.
It is appreciated that a larger number of telephony switches 100 may be provided. Furthermore, it is appreciated that, alternatively, only one telephony switch 100 may be provided.
The system of Fig. 1 also preferably comprises a data network 130, which may comprise any appropriate data network as is well known in the art, such as, for example, a LAN or a WAN.
The system of Fig. 1 also preferably comprises a plurality of telephony devices 140, each of which may be similar to any appropriate prior art telephony device except as described below.
At least one of the telephony devices 140 comprises an application 143 built on a framework 146, the framework 146 typically comprising a system for building telephony applications. Preferably, the framework 146 is designed to insulate the application 143 from knowledge of a protocol used in any of the switches 100. Protocols used in telephony switches are well-known in the art, and an example of a suitable protocol is the H.323 protocol referred to above. A preferred implementation of the framework 146 is described in more detail below with reference to Fig. 2.
Each of the telephony devices 140 is preferably operatively associated with a plurality of end units 150 such as conventional telephones or other communication devices. It is appreciated that a wide variety of appropriate telephony devices 140 and end units 150, including telephony devices and end units which are well known in the art, may be used. It is further appreciated that other types of telephony device 140, including devices associated only with a single end unit or themselves comprising an end unit, may be used.
P TtILOO/00230
The system of Fig. 1 also preferably comprises a gateway 155, typically comprising any appropriate gateway, as is well known in the art, operative to connect the remainder of the system of Fig. 1 to the public switched telephone network (PSTN) 160 or to another outside telephone network. It is appreciated that various components of the system of Fig. 1, including each telephony switch 100 and each telephony device 140, may be implemented in a suitable combination of hardware and software, as is well known in the art.
The operation of the system of Fig. 1 is now briefly described. Except as described below, the operation of the system of Fig. 1 is preferably similar to that of a prior art system.
The application 143 provides application services, as are well-known in the art, to one or more end units 150. Without limiting the generality of the foregoing, typical application services include call origination, call termination, hold, call waiting, conference calling, and other appropriate services, typically including services known in the prior art. The framework 146 is operative to allow the application 143 to provide application services without the application 143 needing to be aware of details of any protocol used by one or more of the switches 100; allowing operation without needing to be aware of details of a protocol is also termed herein "insulating" from the protocol. Reference is now made to Fig. 2, which is a simplified pictorial illustration of a preferred embodiment of a portion of the system of Fig. 1. Fig. 2 depicts class relationships between the application 143 of Fig. 1, depicted in Fig. 2 as an application object 170, and various objects which may be comprised in the framework 146 of Fig. 1. The concept of objects and relationships is well known, particularly in object oriented programming languages such as C++; it is appreciated that the subsystem of Fig. 2 may be implemented in an appropriate object oriented language such as C++, combined with appropriate hardware. A skilled person of the art will appreciate that the subsystem of Fig. 2 could be implemented in an appropriate object oriented language such as C++, based on Fig. 2 and the description thereof. The objects and relationships depicted in Fig. 2 make it possible for an application to be insulated from an underlying protocol on a switch.
It is appreciated that the subsystem of Fig. 2 alone comprises an alternative preferred embodiment of the present invention, and that the subsystem of Fig. 2 without the application class 170 comprises a further alternative preferred embodiment of the present invention. The subsystem of Fig. 2 preferably comprises the following:
The application object 170, referred to above, which preferably implements all behavior required by a telephony application, such as telephony application for the H.323 protocol, including such well known behaviors as initiating a stack protocol, allocating channels, and other well known behaviors. A terminal object 180, which is preferably responsible for protocol based communication, such as H.323 communication, with a switch and for the management of call objects, as described below Typically, one terminal object 180 is present for each application object 170. The terminal object 180 is preferably responsible for Registration, Admission, Status (RAS) messaging, which is well known in H.323. One or more channel objects 190. Each channel object 190 represents a "line" in the system, in analogy to a physical telephone line in pre-modern telephone systems. Each line is preferably operative to have up to several calls comprising one active call and several waiting or on-hold calls. The channel provides an interface between a call object 200, described below, and a device object 210, also described below. Typically, the application object 170 is responsible for allocating the channel objects 190 in accordance with the number of "lines" supported in the system.
One or more state objects 195, each state object 195 preferably representing the current state of a channel object 190. Preferably, each state object 195 handles events as they occur in accordance with event type, thus reducing processing load on the associated channel object 190. Typical events handled by the state object 195 include call termination, DTMF, and call alert, as well as any other appropriate events.
One or more call objects 200, typically including at least one base call object 202 and at least one associated protocol call object such as, for example, an H.323 call object 204. The base call object 202 typically represents a call to a channel object 190, and preferably acts as an intermediary to broker transactions between a channel object
190 and an H.323 call object 204. The H.323 call object 204 is preferably responsible
for the protocol-based communications, such as H.323 communications, with the switch regarding call events. The H.323 call object 204 typically communicates with the switch after a call has been established. Generally, there is one H.323 call object 204 for every phone call in a system, such as the system of Fig. 1. One or more device objects 210, each device object 210 preferably being created by a channel object 190 and representing input/output (I/O) to an actual end unit device where calls are terminated. Examples of an actual device include: a telephone set; a head set; a PC phone; or any other appropriate end unit device.
One or more media session objects 220, each media session object 220 representing resources allocated for exchanging media over the telephony network. The term "media session" is used herein to designate a session in which audio packets are exchanged. The media session object 220 is preferably used by the call object 200 to track resources allocated to a media session. Each media session object 220 is preferably allocated on one of the following bases: by the associated channel object 190 once for every call; for every active call; or once per associated channel object 190 and then re-assigned for the active call when a new call occurs.
In the subsystem of Fig. 2, events originated by a device object 210 are generally propagated to an associated channel object 190, and then to a base call object 202 and an H.323 call object 204; events originating on the other side of the call are generally propagated in the reverse direction. The propagation of events is indicated in Fig. 2 by arrows between the elements named in the preceding sentence. Other arrows between elements of the subsystem of Fig. 2 indicate object relationships, where one object invokes methods of another object in order to perform actions or receive stored information, as is well known in the art. The operation of the subsystem of Fig. 2 is now briefly described. The application object 170 preferably creates the terminal object 180 and invokes the terminal object 180, which in turn initializes H.323 communications.
The application object 170 then preferably creates channel objects 190, preferably one channel object 190 for each line associated with the application object 170. The channel object 190 in turn preferably creates one or more device objects 210, and stores pointers to the device objects 210 so created, each device object being
preferably associated, as described above, with an I/O device where calls are terminated.
The channel object 190 in turn preferably creates a media session object 220, preferably as described above. Preferably, the channel object 190 communicates with the media session object 220 via the base call object 202.
When, for example, a user wishes to establish a call using a particular device associated with one of the device objects 210, the associated channel object 190 preferably informs the terminal object 180, typically by invoking an appropriate method such as a CreateCall method. The terminal object 180, preferably creates a new base call object 202 and a new H.323 call object 204
Preferably, the terminal object 180 uses the call objects 200 to send H.323 messages to the switch in order to actually establish the call.
It is appreciated that a call can thus be established without the application object 170 needing to be aware of the details of the H.323 protocol or any alternative protocol.
Preferably, if a message relating to establishing a call is received by the H.323 call object 204, which message does not require notifying the channel 190, such a message is handled by one of the call objects 200, such as the base call object 202 or the H.323 call object 204 Examples of messages not requiring notification of the channel 190 include call transfer requests, admission messages typically comprising H.323 messages to the switch requesting approval of call establishment, and other similar messages or events
Preferably, messages or events which are received by the H.323 call object 204 and which need to be propagated to the associated channel 190 or device 210, are sent to the appropriate destination via the base call object 202. Examples of messages which do need to be propagated include call termination messages, DTMF tones, and other similar messages
Generally, one or more of the media session objects 220 is used to allocate resources for media exchange, that is, for exchange of audio packets. It is appreciated that various features of the invention which are, for clarity, described in the contexts of separate embodiments may also be provided in
combination in a single embodiment. Conversely, various features of the invention which are, for brevity, described in the context of a single embodiment may also be provided separately or in any suitable subcombination.
It will be appreciated by persons skilled in the art that the present invention is not limited by what has been particularly shown and described hereinabove. Rather the scope of the invention is defined only by the claims which follow: