⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javaphoneframe.java

📁 基于Cisco CTI OS 6.0的Java 软电话简单实例
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/* //////////////////////////////////////////////////////////////////////////

   JavaPhoneFrame.java

   -------------------------------------------------------------------------
   Copyright (c) 2003
   Cisco Systems, Inc.
   All rights reserved.

   Confidential restricted material.  This  work contains confidential trade
   secrets of Cisco Systems, Inc. Use, examination, copying, transfer and/or
   disclosure to others are prohibited,  except  with  the  express  written
   agreement of Cisco Systems, Inc.

   The JavaPhone sample is intended to serve as an example of opening an
   AgentMode connection to CTIOS for a programmer using the CTIOS JavaCIL
   to develop a client application such as an Agent Desktop.

   This sample illustrates how to connect to the server, login an agent,
   make calls, set a call variable, recieve events and look at their
   contents, and other operations.

   This is only a sample and is NOT intended to be a production quality
   application and will not be supported as such.  It is NOT guaranteed to
   be bug free. It is merely provided as a guide for a programmer to see
   how to establish a AgentMode connection, control an Agent, receive events,
   and manipulate Session objects.

 ///////////////////////////////////////////////////////////////////////// */

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;

import com.cisco.cti.ctios.cil.*;
import com.cisco.cti.ctios.util.*;

///////////////////////////////////////////////////////////////////////////
/**
 * The JavaPhoneFrame serves as the main GUI frame and the central point in
 * the application for storing information, receiving events, etc.
 */
///////////////////////////////////////////////////////////////////////////
public class JavaPhoneFrame extends Frame implements CtiOs_IKeywordIDs,
													CtiOs_Enums.CilError,
													CtiOs_Enums.EventID,
													CtiOs_Enums.AgentState,
													CtiOs_Enums.SubscriberList
{
	public static final int TRACE_MASK_ALWAYS = Logger.TRACE_MASK_ALWAYS;

	protected CtiOsSession m_ctiSession;                   // Reference to CTI OS Session
	protected Agent        m_ctiAgent;                     // Reference to object for our Agent
	protected String       m_sAgentID;                     // Agent's ID
	protected String       m_sAgentInstrument;             // Instrument agent is logged in to
	protected String       m_sAgentExtension;              // Agent's extension (often same as instrument)
	protected String       m_sAgentPassword;               // Agent password
	protected String       m_sPositionID;                  // Required on some ACDs
	protected EventSink    m_eventSink;                    // Class to receive CTI events from CtiOsSession
	protected LogManager   m_Log = LogManager.Instance();  // Tracing Mechanism
	protected String       m_sHostA;                       // Side A server
	protected String       m_sHostB;                       // Side B server
	protected int          m_iPortA;                       // Side A port
	protected int          m_iPortB;                       // Side B port
	protected int          m_iHeartBeat;                   // Heartbeat interval for connection failure detection
	protected int          m_iPeripheralID;                // PeripheralID of ACD we're loggin in to

	protected boolean      m_bSessionConnected;            // Flag indicating our connection state
	protected boolean      m_bLoginInProgress;             // Flag indicating if a Login is in progress
	protected boolean      m_bAutoAnswer;                  // Auto answer flag

	protected String       m_cs;                           // String used as a Synchronization object

	protected boolean fComponentsAdjusted = false;         // Used for addNotify check.

	// Create all of the GUI components... buttons, labels, edit fields, etc.
	javax.swing.border.TitledBorder sessionBorder      = new javax.swing.border.TitledBorder("CTIOS                       Session");
	javax.swing.JPanel              sessionPanel       = new javax.swing.JPanel();
	java.awt.Button                 m_btnConnect       = new java.awt.Button();
	java.awt.Button                 m_btnDisconnect    = new java.awt.Button();
	java.awt.Label                  label1             = new java.awt.Label();
	java.awt.TextField              m_edtHostA         = new java.awt.TextField();
	java.awt.Label                  label2             = new java.awt.Label();
	java.awt.TextField              m_edtPortA         = new java.awt.TextField();
	java.awt.Label                  label3             = new java.awt.Label();
	java.awt.TextField              m_edtHostB         = new java.awt.TextField();
	java.awt.Label                  label4             = new java.awt.Label();
	java.awt.TextField              m_edtPortB         = new java.awt.TextField();
	javax.swing.border.TitledBorder agentControlBorder = new javax.swing.border.TitledBorder("Agent");
	javax.swing.JPanel              agentControlPanel  = new javax.swing.JPanel();
	java.awt.Button                 m_btnLogin         = new java.awt.Button();
	java.awt.Button                 m_btnLogout        = new java.awt.Button();
	java.awt.Button                 m_btnReady         = new java.awt.Button();
	java.awt.Button                 m_btnNotReady      = new java.awt.Button();
	java.awt.Label                  label5             = new java.awt.Label();
	java.awt.Label                  label6             = new java.awt.Label();
	java.awt.TextField              m_edtAgentID       = new java.awt.TextField();
	java.awt.TextField              m_edtPassword      = new java.awt.TextField();
	java.awt.Label                  label7             = new java.awt.Label();
	java.awt.TextField              m_edtInstrument    = new java.awt.TextField();
	java.awt.Label                  label8             = new java.awt.Label();
	java.awt.TextField              m_edtPeripheralID  = new java.awt.TextField();
	javax.swing.border.TitledBorder callControlBorder  = new javax.swing.border.TitledBorder("Call");
	javax.swing.JPanel              callControlPanel   = new javax.swing.JPanel();
	java.awt.Label                  label9             = new java.awt.Label();
	java.awt.TextField              m_edtPhoneNumber   = new java.awt.TextField();
	java.awt.Label                  label10            = new java.awt.Label();
	java.awt.TextField              m_edtCallVariable1 = new java.awt.TextField();
	java.awt.Button                 m_btnMakeCall      = new java.awt.Button();
	java.awt.Button                 m_btnAnswer        = new java.awt.Button();
	java.awt.Button                 m_btnRelease       = new java.awt.Button();
	java.awt.Button                 m_btnHold          = new java.awt.Button();
	java.awt.Button                 m_btnRetrieve      = new java.awt.Button();
	java.awt.Button                 m_btnCCConference  = new java.awt.Button();
	java.awt.Button                 m_btnConference    = new java.awt.Button();
	java.awt.Button                 m_btnSSConference  = new java.awt.Button();
	java.awt.Button                 m_btnCCTransfer    = new java.awt.Button();
	java.awt.Button                 m_btnTransfer      = new java.awt.Button();
	java.awt.Button                 m_btnSSTransfer    = new java.awt.Button();
	java.awt.Button                 m_btnGetData       = new java.awt.Button();
	java.awt.Button                 m_btnSetData       = new java.awt.Button();
	java.awt.Button                 m_btnGetContext    = new java.awt.Button();
	java.awt.Label                  label11            = new java.awt.Label();
	java.awt.TextField              m_edtCallID        = new java.awt.TextField();
	javax.swing.border.TitledBorder statusBorder       = new javax.swing.border.TitledBorder("Status");
	javax.swing.JPanel              statusPanel        = new javax.swing.JPanel();
	java.awt.Label                  label12            = new java.awt.Label();
	java.awt.TextField              m_edtConnection    = new java.awt.TextField();
	java.awt.Label                  label17            = new java.awt.Label();
	java.awt.TextField              m_edtAgentState    = new java.awt.TextField();
	javax.swing.border.TitledBorder logBorder          = new javax.swing.border.TitledBorder("Log");
	javax.swing.JPanel              logPanel           = new javax.swing.JPanel();
	java.awt.Label                  label19            = new java.awt.Label();
	java.awt.Button                 m_btnClearLog      = new java.awt.Button();
	java.awt.TextArea               m_edtLogWindow     = new java.awt.TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);


	///////////////////////////////////////////////////////////////////////////
    /**
     * Constructor for the main GUI Frame.  Creates all of the GUI objects,
	 * a CTI OS Session, and registers the EventListener to receive events
	 * from the Session.
     */
	///////////////////////////////////////////////////////////////////////////
	public JavaPhoneFrame()
	{
		// Initialize the object we're going to use for thread synchronization
		m_cs = "JavaPhoneFrame_cs_" + this.hashCode();
	
		// UI Layout
		setLayout(null);
		setBackground(java.awt.Color.lightGray);
		setSize(709,642);
		setVisible(false);
	
		// CTIOS Session Panel
		sessionPanel.setName("CTIOS Session");
		sessionPanel.setLayout(null);
		add(sessionPanel);
		sessionPanel.setBounds(0,0,324,144);

		m_btnConnect.setLabel("Connect");
		sessionPanel.add(m_btnConnect);
		m_btnConnect.setBounds(12,37,84,24);

		m_btnDisconnect.setLabel("Disconnect");
		sessionPanel.add(m_btnDisconnect);
		m_btnDisconnect.setBounds(12,85,84,24);

		label1.setText("HostA");
		sessionPanel.add(label1);
		label1.setBounds(108,25,48,24);
		sessionPanel.add(m_edtHostA);
		m_edtHostA.setBounds(168,25,132,24);

		label2.setText("PortA");
		sessionPanel.add(label2);
		label2.setBounds(108,49,48,24);
		sessionPanel.add(m_edtPortA);
		m_edtPortA.setBounds(168,49,132,24);

		label3.setText("HostB");
		sessionPanel.add(label3);
		label3.setBounds(108,73,48,24);
		sessionPanel.add(m_edtHostB);
		m_edtHostB.setBounds(168,73,132,24);

		label4.setText("PortB");
		sessionPanel.add(label4);
		label4.setBounds(108,97,48,24);
		sessionPanel.add(m_edtPortB);
		m_edtPortB.setBounds(168,97,132,24);
	
		// Agent Panel
		agentControlPanel.setName("Agent");
		agentControlPanel.setLayout(null);
		add(agentControlPanel);
		agentControlPanel.setBounds(0,144,324,180);

		m_btnLogin.setLabel("Login");
		agentControlPanel.add(m_btnLogin);
		m_btnLogin.setBounds(12,25,84,24);

		m_btnLogout.setLabel("Logout");
		agentControlPanel.add(m_btnLogout);
		m_btnLogout.setBounds(12,61,84,24);

		m_btnReady.setLabel("Ready");
		agentControlPanel.add(m_btnReady);
		m_btnReady.setBounds(12,97,84,24);

		m_btnNotReady.setLabel("Not Ready");
		agentControlPanel.add(m_btnNotReady);
		m_btnNotReady.setBounds(12,133,84,24);

		label5.setText("Agent ID");
		label5.setAlignment(java.awt.Label.RIGHT);
		agentControlPanel.add(label5);
		label5.setBounds(96,25,84,24);

		label6.setText("Password");
		label6.setAlignment(java.awt.Label.RIGHT);
		agentControlPanel.add(label6);
		label6.setBounds(96,61,84,24);
		agentControlPanel.add(m_edtAgentID);
		m_edtAgentID.setBounds(192,25,108,24);
		agentControlPanel.add(m_edtPassword);
		m_edtPassword.setBounds(192,61,108,24);

		label7.setText("Instrument");
		label7.setAlignment(java.awt.Label.RIGHT);
		agentControlPanel.add(label7);
		label7.setBounds(96,97,84,24);
		agentControlPanel.add(m_edtInstrument);
		m_edtInstrument.setBounds(192,97,108,24);

		label8.setText("Peripheral ID");
		label8.setAlignment(java.awt.Label.RIGHT);
		agentControlPanel.add(label8);
		label8.setBounds(96,133,84,24);
		agentControlPanel.add(m_edtPeripheralID);
		m_edtPeripheralID.setBounds(192,133,108,24);
	
		// Call panel
		callControlPanel.setName("Call");
		callControlPanel.setLayout(null);
		add(callControlPanel);
		callControlPanel.setBounds(0,324,324,312);

		label9.setText("Phone number to dial");
		label9.setAlignment(java.awt.Label.RIGHT);
		callControlPanel.add(label9);
		label9.setBounds(48,37,132,12);
		callControlPanel.add(m_edtPhoneNumber);
		m_edtPhoneNumber.setBounds(192,25,108,24);

		label10.setText("Call Variable 1");
		label10.setAlignment(java.awt.Label.RIGHT);
		callControlPanel.add(label10);
		label10.setBounds(48,61,135,10);
		callControlPanel.add(m_edtCallVariable1);
		m_edtCallVariable1.setBounds(192,49,108,24);

		m_btnMakeCall.setLabel("Make Call");
		callControlPanel.add(m_btnMakeCall);
		m_btnMakeCall.setBounds(12,85,84,24);

		m_btnAnswer.setLabel("Answer");
		callControlPanel.add(m_btnAnswer);
		m_btnAnswer.setBounds(108,85,84,24);

		m_btnRelease.setLabel("Release");
		callControlPanel.add(m_btnRelease);
		m_btnRelease.setBounds(204,85,84,24);

		m_btnHold.setLabel("Hold");
		callControlPanel.add(m_btnHold);
		m_btnHold.setBounds(12,121,84,24);

		m_btnRetrieve.setLabel("Retrieve");
		callControlPanel.add(m_btnRetrieve);
		m_btnRetrieve.setBounds(108,121,84,24);

		m_btnCCConference.setLabel("CC Conf");
		callControlPanel.add(m_btnCCConference);
		m_btnCCConference.setBounds(12,157,84,24);

		m_btnConference.setLabel("Conference");
		callControlPanel.add(m_btnConference);
		m_btnConference.setBounds(108,157,84,24);

		m_btnSSConference.setLabel("SS Conf");
		callControlPanel.add(m_btnSSConference);
		m_btnSSConference.setBounds(204,157,84,24);

		m_btnCCTransfer.setLabel("CC Trans");
		callControlPanel.add(m_btnCCTransfer);
		m_btnCCTransfer.setBounds(12,193,84,24);

		m_btnTransfer.setLabel("Transfer");
		callControlPanel.add(m_btnTransfer);
		m_btnTransfer.setBounds(108,193,84,24);

		m_btnSSTransfer.setLabel("SS Trans");
		callControlPanel.add(m_btnSSTransfer);
		m_btnSSTransfer.setBounds(204,193,84,24);

		m_btnGetData.setLabel("Get Data");
		callControlPanel.add(m_btnGetData);
		m_btnGetData.setBounds(12,229,84,24);

		m_btnSetData.setLabel("Set Data");
		callControlPanel.add(m_btnSetData);
		m_btnSetData.setBounds(108,229,84,24);

		m_btnGetContext.setLabel("Get Context");
		callControlPanel.add(m_btnGetContext);
		m_btnGetContext.setBounds(204,229,84,24);

		label11.setText("Current Call (uid)");
		callControlPanel.add(label11);
		label11.setBounds(48,265,100,24);
		callControlPanel.add(m_edtCallID);
		m_edtCallID.setBounds(156,265,144,24);
	
		// Status panel
		statusPanel.setName("Status");
		statusPanel.setLayout(null);
		add(statusPanel);
		statusPanel.setBounds(324,0,384,72);

		label12.setText("Connection");
		statusPanel.add(label12);
		label12.setBounds(12,25,72,24);
		statusPanel.add(m_edtConnection);
		m_edtConnection.setBounds(84,25,96,24);

		label17.setText("Agent State");
		statusPanel.add(label17);
		label17.setBounds(192,25,72,24);
		statusPanel.add(m_edtAgentState);
		m_edtAgentState.setBounds(264,25,100,24);
	
		// Log panel
		logPanel.setName("Log Window");
		logPanel.setLayout(null);
		add(logPanel);
		logPanel.setBounds(324,72,384,564);

		m_btnClearLog.setLabel("Clear Log");
		logPanel.add(m_btnClearLog);
		m_btnClearLog.setBounds(155,517,72,24);
		logPanel.add(m_edtLogWindow);
		m_edtLogWindow.setBounds(12,22,360,480);
	
		String sVer =   CtiOs_VersionInfo.CTI_RELEASE_BASE + " Java Phone Sample (" +
						CtiOs_VersionInfo.MajorVersion() +
						"." + CtiOs_VersionInfo.MinorVersion() +
						"." + String.valueOf(CtiOs_VersionInfo.CTI_RELNUM_SVCPACK) +
						") Build " + CtiOs_VersionInfo.BuildNumber();
		setTitle(sVer);
	
		setResizable(false);
	
		// Listeners
		JavaPhoneWindow aJavaPhoneWindow = new JavaPhoneWindow();
		this.addWindowListener(aJavaPhoneWindow);
		JavaPhoneMouse aJavaPhoneMouse = new JavaPhoneMouse();
		m_btnConnect.addMouseListener(aJavaPhoneMouse);
		m_btnDisconnect.addMouseListener(aJavaPhoneMouse);
		m_btnLogin.addMouseListener(aJavaPhoneMouse);
		m_btnLogout.addMouseListener(aJavaPhoneMouse);
		m_btnReady.addMouseListener(aJavaPhoneMouse);
		m_btnNotReady.addMouseListener(aJavaPhoneMouse);
		m_btnMakeCall.addMouseListener(aJavaPhoneMouse);
		m_btnAnswer.addMouseListener(aJavaPhoneMouse);
		m_btnRelease.addMouseListener(aJavaPhoneMouse);
		m_btnHold.addMouseListener(aJavaPhoneMouse);
		m_btnRetrieve.addMouseListener(aJavaPhoneMouse);
		m_btnCCConference.addMouseListener(aJavaPhoneMouse);
		m_btnConference.addMouseListener(aJavaPhoneMouse);
		m_btnSSConference.addMouseListener(aJavaPhoneMouse);
		m_btnCCTransfer.addMouseListener(aJavaPhoneMouse);
		m_btnTransfer.addMouseListener(aJavaPhoneMouse);
		m_btnSSTransfer.addMouseListener(aJavaPhoneMouse);
		m_btnGetData.addMouseListener(aJavaPhoneMouse);
		m_btnSetData.addMouseListener(aJavaPhoneMouse);
		m_btnGetContext.addMouseListener(aJavaPhoneMouse);
		m_btnClearLog.addMouseListener(aJavaPhoneMouse);
	
		sessionPanel.setBorder(sessionBorder);
		agentControlPanel.setBorder(agentControlBorder);
		callControlPanel.setBorder(callControlBorder);
		statusPanel.setBorder(statusBorder);
		logPanel.setBorder(logBorder);
	
		// CTIOS related initialization.
		Initialize();
	
		// Create a CTI OS Session object for us to use to connect
		// the the server.
		m_ctiSession = new CtiOsSession();
		if (m_ctiSession == null)
		{
			m_Log.Trace(Logger.TRACE_MASK_CRITICAL,
						"JavaPhoneFrame.constructor: Failed to create CtiOsSession.");
			System.exit(1);
		}

		// Set our Agent object to null until we're ready to login
		m_ctiAgent   = null;
	
		// Create an instance of our class to handle CTI events
		m_eventSink = new EventSink(this);

		// Subscribe our EventSink object to the Session "All Events" list
		if (m_ctiSession.AddEventListener(m_eventSink, eAllInOneList) < 0)
		{
			m_Log.Trace(Logger.TRACE_MASK_CRITICAL,
						"JavaPhoneFrame.constructor: Failed to add "+
						"subscriber for AllInOne events.");
			System.exit(1);
		}

	}  // Constructor

	///////////////////////////////////////////////////////////////////////////
    /**
     * Shows or hides the component depending on the boolean flag b.
     * @param b  if true, show the component; otherwise, hide the component.
     * @see java.awt.Component#isVisible
     */
	///////////////////////////////////////////////////////////////////////////
    public void setVisible(boolean b)
	{
		if(b)
		{
			setLocation(50, 50);
		}
		super.setVisible(b);

	} // setVisible

	///////////////////////////////////////////////////////////////////////////
    /**
     * Main entry point for the application
     */
	///////////////////////////////////////////////////////////////////////////
	static public void main(String args[])
	{
		LogWrapper lwConsole = null;
		LogWrapper lwLogFile = null;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -