| Concept | Plain English | |--------|----------------| | Third-Party Call Control | Your app makes phone A call phone B | | Call Detail Recording | No – that’s CDR. JTAPI does live events. | | Device/Feature ID | Avaya’s internal feature codes (e.g., hold = Feature 4) | | Auto-login | Yes – provider can persist sessions across CM failovers | | CSTA mapping | JTAPI events map to ECMA-269, but Avaya extends it |
Look for the section on Initializing the Provider.
Goal: Log an agent into a skill group and set their work mode.
This uses Avaya-specific extensions:
AvayaTerminal terminal = (AvayaTerminal) provider.getTerminal("agent123"); AvayaACDAddress acdAddress = (AvayaACDAddress) provider.getAddress("skill1");// Log in the agent acdAddress.login(terminal, "agent123", null, null);
// Set to Auto-In (ready to take calls) acdAddress.setWorkMode(terminal, AvayaACDAddress.WORK_MODE_AUTO_IN);
The guide begins with a high-level diagram showing the relationship between:
import com.avaya.jtapi.tsapi.*;public class AvayaConnector public static void main(String[] args) throws Exception // Get the JTAPI provider JtapiPeer peer = JtapiPeerFactory.getJtapiPeer(null); TsapiProvider provider = (TsapiProvider) peer.getProvider( "com.avaya.jtapi.tsapi.TsapiProvider" );
// Open the provider (login) provider.open(null); // Obtain a terminal Terminal terminal = provider.getTerminal("6000"); // extension number // Add observer AvayaTerminalObserver obs = new MyTerminalObserver(); terminal.addObserver(obs); System.out.println("Listening to extension 6000...");
This is the most common point of confusion for new Avaya developers.
Critical Avaya Nuance: If you want to control a phone, you usually need to monitor both the Address and the Terminal. avaya jtapi programmer 39-s guide