package com.voxeo.moho.remote.sample; import java.net.URI; import javax.media.mscontrol.join.Joinable.Direction; import com.voxeo.moho.Call; import com.voxeo.moho.CallableEndpoint; import com.voxeo.moho.Endpoint; import com.voxeo.moho.IncomingCall; import com.voxeo.moho.Participant.JoinType; import com.voxeo.moho.State; import com.voxeo.moho.event.CallCompleteEvent; import com.voxeo.moho.event.Observer; import com.voxeo.moho.remote.MohoRemote; import com.voxeo.moho.remote.impl.MohoRemoteImpl; public class TransferSample implements Observer { protected static MohoRemote mohoRemote; public static void main(String[] args) throws Exception { mohoRemote = new MohoRemoteImpl(); mohoRemote.addObserver(new TransferSample()); mohoRemote.connect(new SimpleAuthenticateCallbackImpl("usera", "1", "", "voxeo"), "localhost", "localhost"); try { Thread.sleep(100 * 60 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } @State public void handleInvite(final IncomingCall call) throws Exception { call.answer(); call.addObserver(this); call.output("Welcome, please wait while connecting for you").get(); Endpoint endpoint = mohoRemote.createEndpoint(URI.create("sip:sipuserf@127.0.0.1:40000")); Call outgoingCall = ((CallableEndpoint) endpoint).createCall(call.getAddress()); outgoingCall.addObserver(this); outgoingCall.setAttribute("incomingCll", call); call.join(outgoingCall, JoinType.BRIDGE_SHARED, Direction.DUPLEX); } @State public void hangup(CallCompleteEvent event) throws Exception { Call incomingCall = (Call) event.getSource().getAttribute("incomingCll"); if (incomingCall != null) { incomingCall.output("please wait while we transfering you").get(); Endpoint endpoint = mohoRemote.createEndpoint(URI.create("sip:mzhang@172.21.99.154:7788")); Call outgoingCall = ((CallableEndpoint) endpoint).createCall(incomingCall.getAddress()); incomingCall.join(outgoingCall, JoinType.BRIDGE_SHARED, Direction.DUPLEX); } } }