📄 autoanswerobserver.java
字号:
/*
Import required JTAPI calsses
*/
import javax.telephony.*;
import javax.telephony.events.*;
import javax.telephony.media.*;
import javax.telephony.media.events.*;
import java.net.*;
/* This class proivides the media call observer for the Auto Reply Application.
Class:AutoAnswerObserver-Class to detect the call made by caller
Methods:
hangupConnection():This method is used to disconnect the phone connection
setJtapiVariables(): This method is used to initialize the terminal connection objects.
*/
public class AutoAnswerObserver implements MediaCallObserver,Runnable
{
boolean isAnswering = false;
AutoAnswerGUI replyApp = null;
Call phoneCall = null;
private Connection connections[] = null;
private TerminalConnection tconnection = null;
private TerminalConnection desttconnection = null;
Thread t=null;
AnswerText st=null;
/* Public constructor takes the object of AutoAnswerGUI class as parameter.
AutoAnswerObserver():
Parameters:
replyApp:object of AutoAnswerGUI
Return Type:NA
*/
public AutoAnswerObserver(AutoAnswerGUI replyApp)
{
this.replyApp = replyApp;
}
private void setJtapiVariables(Call c)
{
phoneCall = c;
try
{
connections = c.getConnections();
TerminalConnection[] tc;
phoneCall.addObserver(this);
tc = connections[0].getTerminalConnections();
tconnection = tc[0];
Terminal terminal = tconnection.getTerminal();
terminal.addCallObserver(this);
/* Creating the remote terminal connection. The remote connection is the origination connection which is
always the first connection in the connections array.
*/
tc = connections[1].getTerminalConnections();
desttconnection = tc[0];
}
catch(Exception e)
{
System.out.println("Exception occurred in setJtapiVariables(): " + e.toString());
}
}
/* The callChangedEvent() method is called every time an event associated with the phone call is raised.
Parameters:Array of CallEv class eventList
Return Type:void
*/
public void callChangedEvent(CallEv[] eventList)
{
if(phoneCall == null)
{
setJtapiVariables(eventList[0].getCall());
}
for (int i = 0; i < eventList.length; i++)
{
CallEv ev = eventList[i];
TerminalConnection terminalConnection = ((TermConnEv)ev).getTerminalConnection();
MediaTerminalConnection mtc = (MediaTerminalConnection)terminalConnection;
switch(ev.getID())
{
case TermConnCreatedEv.ID:
try
{
/* Specifying the audio file that is to be played when terminal connection is created. */
System.out.println("Connection Created. ");
mtc.useDefaultSpeaker();
mtc.useDefaultMicrophone();
mtc.usePlayURL(new URL("file:helloworld.wav"));
isAnswering = false;
}
catch (Exception excp)
{
System.out.println("Exception TermConnCreatedEv: " + excp.toString());
}
break;
case TermConnRingingEv.ID:
try
{
System.out.println("Ringing");
if(isAnswering == false)
{
/* Answering the phone call. */
isAnswering = true;
terminalConnection.answer();
t=new Thread(this,"Node action");
t.start();
}
}
catch (Exception excp)
{
System.out.println("Exception occurred while answering the phone call: " + excp.toString());
}
break;
case MediaTermConnAvailableEv.ID:
try
{
System.out.println("Media Term Connection Available event. ");
mtc.startPlaying();
}
catch (Exception excp)
{
System.out.println("Exception occurred in startPlaying(): " + excp.toString());
}
break;
case MediaTermConnStateEv.ID:
try
{
/* Check if playing is done. */
int state = mtc.getMediaState();
System.out.println("Playing"+state);
state = state & MediaTerminalConnection.PLAYING;
System.out.println("Playing"+state);
if (state == 0)
{
/* Stop playing and closing the phone connection. */
mtc.stopPlaying();
}
}
catch (Exception excp)
{
System.out.println("Exception occurred in stopPlaying(): " + excp.toString());
}
break;
case MediaTermConnUnavailableEv.ID:
try
{
/* Specifying that the Media Termjinal Connection is not available. */
System.out.println("Media terminal connection is not available. ");
mtc.stopPlaying();
}
catch(Exception e)
{
System.out.println("Exception occurred in MediaTermConnUnavailableEv.ID: " + e.toString());
}
break;
default:
break;
}
}
}
/*Run method to speak the answer
Parameters:NA
Return Value:Void
*/
public void run()
{
/*
Initialize a new object of AnswerText class
*/
st=new AnswerText("Thank You for calling me i would glade to say hello","kevin16");
/*
Invoke the answerSelText() method of AnswerText class
*/
st.answerSelText(this);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -