1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
namespace NavisionComponent
{
[ComVisible(true)]
public interface INavisionCTI
{
void startMonitoring();
void stopMonitoring();
void showConfiguration();
void dial(string number);
void disconnect();
void answer();
void blindTransfer(string numero);
}
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface INavisionCTIEvents
{
void onIncomingCall(string caller, string callee);
void onOutgoingCall(string caller, string callee);
void onConnected();
void onDisconnected(int duration);
}
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(INavisionCTIEvents))]
[ComVisible(true)]
public class NavisionCTI: INavisionCTI
{
CTI cti;
string ligne;
public delegate void incomingCallHandler(string caller, string callee);
public delegate void outgoingCallHandler(string caller, string callee);
public delegate void connectedHandler();
public delegate void disconnectedHandler(int duration);
public event outgoingCallHandler onOutgoingCall;
public event connectedHandler onConnected;
public event incomingCallHandler onIncomingCall;
public event disconnectedHandler onDisconnected;
public NavisionCTI()
{
cti = new CTI();
cti.onCallConnected += new CTI.CallConnectedEventHandler(cti_onCallConnected);
cti.onCallDisconnected += new CTI.CallDisconnectedEventHandler(cti_onCallDisconnected);
cti.onNewIncomingCall += new CTI.NewCallEventHandler(cti_onNewIncomingCall);
cti.onNewOutgoingCall += new CTI.NewCallEventHandler(cti_onNewOutgoingCall);
}
void cti_onNewOutgoingCall(object sender, InfosAppel e)
{
if (onOutgoingCall != null)
{
onOutgoingCall(e.Caller, e.Callee);
}
}
void cti_onNewIncomingCall(object sender, InfosAppel e)
{
if (onIncomingCall != null)
onIncomingCall(e.Caller, e.Callee);
}
void cti_onCallDisconnected(object sender, InfosAppel e)
{
if (onDisconnected != null)
onDisconnected((int)e.Duration);
}
void cti_onCallConnected(object sender, InfosAppel e)
{
if (onConnected != null)
onConnected();
}
public void startMonitoring()
{
if (cti.IsMonitoring)
cti.monitoringStop();
while (!cti.monitoringStart())
cti.configuration();
ligne = cti.getMonitoredLines()[0];
}
public void stopMonitoring()
{
cti.monitoringStop();
}
public void showConfiguration()
{
cti.configuration();
}
public void dial(string number)
{
cti.dial(ligne, number);
}
public void disconnect()
{
cti.disconnect(ligne);
}
public void answer()
{
cti.answer(ligne);
}
public void blindTransfer(string numero)
{
cti.blindTransfer(ligne, numero);
}
}
} |
Partager