Home
Manage Your Code
Snippet: Cisco JTAPI issue (Java)
Title: Cisco JTAPI issue Language: Java
Description: Code dies on this line: call.connect ( terminals[0], originAddress, DestinationNumber ); Views: 364
Author: Xavier Hutchinson Date Added: 8/31/2010
Copy Code  
import java.util.*;

import javax.telephony.*;
import javax.telephony.events.*;

import com.cisco.cti.util.Condition;

public class CiscoExchange extends TraceWindow implements ProviderObserver {

	Vector		actors = new Vector ();
	Condition	conditionInService = new Condition ();
	Provider	provider;

	String		ctiUser = "app_cti";
	String		ctiPass = "cisco";
	String		ciscoCallManagerServer = "10.42.40.250";
	
	
	public CiscoExchange (String cti_userName, String cti_userPassword, String CiscoCMServer) {
		ctiUser = cti_userName;
		ctiPass = cti_userPassword;
		ciscoCallManagerServer = CiscoCMServer;
			System.out.println ( "Cisco Exchange Initialized" );
	}
	
	public String CiscoCMProviderString(){
		return ciscoCallManagerServer + ";login=" + ctiUser + ";passwd=" + ctiPass;
	}
	
	public void ConnectNewCall(String OriginExtension, String DestinationNumber){
		try {
			JtapiPeer peer = JtapiPeerFactory.getJtapiPeer ( null );
			System.out.println ( "Opening " + CiscoCMProviderString() + "...\n" );
			provider = peer.getProvider ( CiscoCMProviderString() );
			System.out.println ("Adding Observer");
			provider.addObserver ( this );
			conditionInService.waitTrue ();
			System.out.println ("Getting origin address");
			Address originAddress = provider.getAddress ( OriginExtension );

			conditionInService.waitTrue ();
			System.out.println ("Creating Origin Provider...");
			Provider OriginExtProvider = originAddress.getProvider();
			System.out.println ("Creating call from Origin Provider...");
			Call call = OriginExtProvider.createCall();
			System.out.println ("Retreiving list of accociated devices/terminals");
			Terminal[] terminals = originAddress.getTerminals();
			
			if(terminals.length>0)
			{
				System.out.println ("Attempting to connect your call...");
				call.connect ( terminals[0], originAddress, DestinationNumber );
			}else{
				System.out.println ("No terminals found on origin extension");
				throw new Exception("No terminals are connected at the extension: "+OriginExtension);
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public void dispose () {
		System.out.println ( "Stopping actors" );
		Enumeration e = actors.elements ();
		while ( e.hasMoreElements () ) {
			Actor actor = (Actor) e.nextElement ();
			actor.dispose ();
		}
	}

	public void providerChangedEvent ( ProvEv [] eventList ) {
		if ( eventList != null ) {
			for ( int i = 0; i < eventList.length; i++ )
			{
				if ( eventList[i] instanceof ProvInServiceEv ) {
					conditionInService.set ();
				}
			}
		}
	}
}

Notes
Exception: com.cisco.jtapi.InvalidStateExceptionImpl: Address is out of service at com.cisco.jtapi.IntraProviderAddress.O(CTQF) at com.cisco.jtapi.CallImpl.connect(CTQF) at com.cisco.jtapi.CallImpl.connect(CTQF) at CiscoExchange.ConnectNewCall(CiscoExchange.java:52) at TestApp.main(TestApp.java:10)