JTAPI is an object-oriented interface that represents an uniform abstraction model for telephony applications. The object and event model can be used to control just a single telephone known as first party interface or a complete PBX third party interface. The API consists of a core package and has various extensions, e. The mobile extension provides features such as returning the available networks, which is used for applications running on Java enabled mobile phones.
|Published (Last):||14 January 2017|
|PDF File Size:||10.1 Mb|
|ePub File Size:||6.3 Mb|
|Price:||Free* [*Free Regsitration Required]|
Comment 0. First party call control. Third party call control. Over a million developers have joined DZone. Let's be friends:. DZone 's Guide to. Free Resource. Like 1. Join the DZone community and get the full member experience. Join For Free. This article is an introduction to the Java Telephony API, presenting the most important elements of this and attempts to clarify some basic issues that will be the base for the following articles.
JTapi can be used to integrate CRM or other applications with a telephone system, create applications that handle incoming calls, create application that place outgoing call on behalf of a user, or in general provide an automated way for a user to handle his telephone set.
The point where this interface is located determines the degree of control an application has. In a first-party call control scenario the interface is located at a terminal.
The application has the same degree of control a normal telephone user has. In a third-party call control scenario the interface is located inside the telephone system. Depending on the telephone system this internal access provides the application usually with more control capabilities than a first-party call control scenario.
As a consequence JTAPI provides a model of the telephone system and of telephone calls that corresponds to the more general third-party view, even when JTAPI is used for first-party call control. A third-party view of a call does not distinguish between the local end and the remote end of a call. Instead the two ends are symmetrical. Basic JTapi elements Telephony applications, involve in the control or monitor of objects a telephone system exposes.
Such objects could be logical objects, for example an Address, a Call, a Connection etc, or physical objects as a Terminal. Following is a list with the most important JTAPI objects that will be covered throughout this article series. This is an attempt to give an introduction so for everyone to be on the same page.
JtapiPeer is the first object an application must instantiate. Depending on the vendor's implementation of this interface, one or more different services can be obtained by the JtapiPeer object. Provider A Provider represents the telephony software-entity that interfaces with a telephony subsystem. A Provider is created and returned by the JtapiPeer. This method sets up any needed communication paths between the application and the Provider. The string given is one of the services listed in the JtapiPeer.
The rest of the JTAPI objects are derived from the provider and also the provider is responsible for the various actions the application is designed to make with the JTapi. For example, provider is will deliver Address events in case we monitor an Address or create a call between a local Address and a remote Address example of an outgoing call. Important to notice is the term Provider's domain which refers to the collection of Address and Terminal objects which are local to the Provider, and typically, can be controlled by the Provider.
The Provider implementation controls access to Addresses and Terminals by limiting the domain it presents to the application. Address An Address object represents what we commonly think of as a "telephone number". The purpose of the address could be something different than a telephone number if the underlying network is not a telephone network. As an example if the underlying network is an IP network; then the address might represent an IP address e.
When the Address object is created, a unique string name is assigned to it e. The method Address. Address objects may be classified into two categories: local and remote. Local Address objects are those addresses which are part of the local telephone system domain, for example the extension numbers of a PBX. These Address objects are created by the implementation of the Provider object when it is first instantiated.
All of the Provider's local addresses are reported via the Provider. Remote Address objects are those outside of the Provider's domain which the Provider learns about during its lifetime through various happenings e.
Remote Addresses are not reported via the Provider. Note that applications never explicitly create new Address objects. Terminal A Terminal represents a physical hardware endpoint connected to the telephony domain. In other words, a Terminal is the telephone set of a PBX.
When the Terminal object is created, a unique string name is assigned to it and does not change throughout the lifetime of the object. The method Terminal. Important to notice here is that in contrary with the Address name, the name of the Terminal may not have any real-world interpretation since in order to interact with a Terminal e. Terminal objects may be classified into two categories: local and remote.
Local Terminal objects are those terminals which are part of the local telephone system domain, for example the telephone sets of a PBX. These Terminal objects are created by the implementation of the Provider object when it is first instantiated. All of the Provider's local terminals are reported via the Provider. Remote Terminal objects are those outside of the Provider's domain which the Provider learns about during its lifetime through various happenings e.
Remote Terminal objects are not reported via the Provider. Note that applications never explicitly create new Terminal objects. Address and Terminal objects Address and Terminal objects exist in a many-to-many relationship.
An Address object may have zero or more Terminals associated with it. For each Terminal associated with an Address, that Terminal must also reflect its association with the Address. Since the implementation creates Address and Terminal objects, it is responsible for insuring the correctness of these relationships.
The Terminals associated with an Address is given by the Address. An association between an Address and Terminal object indicates that the Terminal contains the Address object as one of its telephone number addresses. In many instances, a telephone set represented by a Terminal object has only one telephone number represented by an Address object associated with it.
In more complex configurations, telephone sets may have several telephone numbers associated with them. Likewise, a telephone number may appear on more than one telephone set. Call A Call object models a telephone call. A Call can have zero or more Connections.
A two-party call has two Connections, and a conference call has three or more Connections. Each Connection models the relationship between a Call and an Address, where an Address identifies a particular party or set of parties on a Call. A Call maintain a list of the Connections on that Call. Applications obtain an array of Connections associated with the Call via the Call.
A Call retains a reference to a Connection only if it is not in the Connection. Therefore, if a Call has a reference to a Connection, then that Connection must not be in the Connection. When a Connection moves into the Connection. The Provider maintains knowledge of the calls currently associated with it. Applications may obtain an array of these Calls via the Provider.
A Provider may have Calls associated with it which were created before it came into existence. It is the responsibility of the implementation of the Provider to model and report all existing telephone calls which were created prior to the Provider's lifetime.
The Provider maintains references to all calls until they move into the Call. Applications may create new Calls using the Provider. A new Call is returned in the Call. IDLE state. Applications may then use this idle Call to place new telephone calls. Once created, this new Call object is returned via the Provider.
Address and Call objects Address objects represent the logical endpoints of a telephone call. A logical view of a telephone call views the call as originating from one Address endpoint and terminates at another Address endpoint. Address objects are related to Call objects via the Connection object. The Connection object has a state which describes the current relationship between the Call and the Address. Each Address object may be part of more than one telephone call, and in each case, is represented by a separate Connection object.
The Address. An Address is associated with a Call until the Connection moves into the Connection. At that time, the Connection is no longer reported via the Address. Therefore, the Address. The Java Telephony API specification states that the implementation is responsible for reporting all existing telephone calls when a Provider is first created. This implies that an Address object must report information regarding existing telephone calls to that Address. In other words, Address objects must reports all Connection objects which represent existing telephone calls.
Terminal and Call objects Terminal objects represent the physical endpoints of a telephone call.
Sign in using DevConnect ID
DevConnect registration may still be required. Avaya Snap-ins:. Context Store. Engagement Call Control. Engagement Designer.
Cisco Unified JTAPI Developers Guide for Cisco Unified Communications Manager Release 9.0(1)
Comment 0. Starting from this article, I will leave the plain theory behind, and I will delve into the Jtapi objects using code examples. Off course, each code snippet, will be supported by the appropriate theory in order to elaborate and deeply analyze each object. This iteration will concentrate on the JTapiPeer and Provider interfaces, and will present the way can be used to further inside an application using two example classes. The first one ProviderService mainly shows how to use JtapiPeer in order to instantiate and supply the Provider object for the second class JTapiDiscovery which purpose is just to discover the Addresses and Terminals from the Provider's domain. For any help please leave a comment.
Cisco Unified JTAPI Developers Guide for Cisco Unified Communications Manager, Release 11.0(1)
Comment 0. First party call control. Third party call control. Over a million developers have joined DZone. Let's be friends:. DZone 's Guide to.
JTAPI Hands-On: Part I