예제 #1
0
        private Plugin3CX(IMyPhoneCallHandler callHandler)
        {
            _callHandler = callHandler;
            callHandler.OnCallStatusChanged += callHandler_OnCallStatusChanged;

            _host = new ServiceHost(this);
            _host.AddServiceEndpoint(typeof(IMakeCallService), new NetNamedPipeBinding(NetNamedPipeSecurityMode.None), "net.pipe://localhost/MakeCallService");
            _host.Open();

            _incomingCallChannelFactory = new ChannelFactory <IIncomingCallService>(new NetNamedPipeBinding(NetNamedPipeSecurityMode.None), "net.pipe://localhost/IncomingCallService");
            IIncomingCallService incomingCallService = _incomingCallChannelFactory.CreateChannel();

            incomingCallService.Hello();
            incomingCallService.StatusChanged(Status());
        }
예제 #2
0
        private void callHandler_OnCallStatusChanged(object sender, CallStatus callinfo)
        {
            IIncomingCallService incomingCallService = _incomingCallChannelFactory.CreateChannel();

            //MessageBox.Show(callinfo.State.ToString());
            incomingCallService.StatusChanged(new CRMCallStatus(callinfo.CallID, callinfo.State));
            if (callinfo.State != CallState.Ringing)
            {
                return;
            }
            incomingCallService.IncomingCall(callinfo.OtherPartyNumber);

            //if (!callinfo.Incoming || callinfo.State != CallState.Ringing) return;

            //MessageBox.Show(callinfo.CallID);
            //MessageBox.Show(callinfo.Originator);
            //MessageBox.Show(callinfo.OriginatorName);

            //MessageBox.Show(callinfo.OtherPartyNumber);
            //MessageBox.Show(callinfo.OtherPartyName);

            //IIncomingCallService callbackChannel = OperationContext.Current.GetCallbackChannel<IIncomingCallService>();
            //callbackChannel.IncomingCall(callinfo.OtherPartyNumber);
        }