Beispiel #1
0
 /// <summary>
 /// 对方接听
 /// </summary>
 public static void remoteHook()
 {
     Utils.WriteLog(string.Format("对方接听"));
     ConstDefault.retToJs remoteHook = new ConstDefault.retToJs();
     remoteHook.action = ConstDefault.PHONE_CALLING;
     Utils.resultToJavascript(remoteHook);
 }
Beispiel #2
0
        /// <summary>
        /// 返回给JS
        /// </summary>
        /// <param name="result"></param>
        public static void resultToJavascript(ConstDefault.retToJs result)
        {
            var msg     = new DispacthMsg();
            var payload = new Payload();

            msg.action = result.action;
            if (result.action == ConstDefault.PHONE_DIALING || result.action == ConstDefault.PHONE_RINGING)
            {
                payload.callId = VoipHelper.callId.ToString();
            }
            else if (result.action == ConstDefault.PHONE_IDEL)
            {
                payload.isBySelf = ConstDefault.isBySelf;
            }
            msg.payload = payload;

            payload.phoneNumber = result.phoneNumber;

            payload.time = GetTimeStamp();

            payload.isOffHook = result.isOffHook;
            if (result.deviceIsNormal)
            {
                payload.deviceIsNormal = true;
            }
            else
            {
                payload.deviceIsNormal = false;
            }
            string resultToJs = JsonConvert.SerializeObject(msg);

            System.Diagnostics.Debug.WriteLine("[回传js test]==>>" + resultToJs);
            WriteLog(string.Format("Client To Js ==>> {0}", resultToJs));
            MainWindow.browser.GetBrowser().MainFrame.EvaluateScriptAsync(string.Format("lyJsBridge.dispacthMsg({0})", resultToJs));
        }
Beispiel #3
0
 /// <summary>
 /// 忙音
 /// </summary>
 public static void busy()
 {
     Utils.WriteLog(string.Format("忙音"));
     ConstDefault.retToJs busy = new ConstDefault.retToJs();
     busy.action = ConstDefault.LINE_IS_BUSYORHANGUP;
     Utils.resultToJavascript(busy);
     MainWindow.form.Activate();
 }
Beispiel #4
0
        /// <summary>
        /// 接收到来电号码
        /// </summary>
        /// <param name="phone"> 手机号码</param>
        public static void getCallID(string phone)
        {
            Utils.WriteLog(string.Format("获取到来电号码 ==>> {0}", phone));
            #region 号码小于7位屏蔽
            if (phone.Length < 7)
            {
                Utils.WriteLog(string.Format("来电小于7位号码  号码为 ==>> {0}", phone));
                VoipHelper.StopVoice(VoipHelper.playHandle);
                VoipHelper.OffOnHook(0);
                return;
            }
            #endregion
            if (ConstDefault.isCalling)
            {
                return;
            }
            ConstDefault.isCalling = true;
            ConstDefault.isMissed  = true;
            VoipHelper.callState   = VoipHelper.telState.IN;
            MainWindow.form.Activate();
            MainWindow.form.Topmost = true;
            VoipHelper.playHandle   = VoipHelper.PlayVoice(VoipHelper.callBell);

            VoipHelper.callId = Utils.GetCallId();

            ConstDefault.retToJs getCallId = new ConstDefault.retToJs();
            getCallId.action      = ConstDefault.PHONE_RINGING;
            getCallId.phoneNumber = phone;
            Utils.resultToJavascript(getCallId);

            Utils.SetTimeOut(1000 * 30, new Action(() =>
            {
                MainWindow.form.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal,
                                                  (ThreadStart) delegate()
                {
                    if (ConstDefault.isMissed) // 如果是未接,30秒后 挂断。 因为 停止呼入时间有问题。
                    {
                        Utils.WriteLog(string.Format("来电30秒未处理"));
                        VoipHelper.StopVoice(VoipHelper.playHandle); // 单独挂断处理不行,因为有摘机才有挂机事件。
                        ConstDefault.isBySelf   = false;
                        ConstDefault.isCalling  = false;
                        MainWindow.form.Topmost = false;
                        VoipHelper.lineToSpk(0);
                        ConstDefault.retToJs resultToJs = new ConstDefault.retToJs();
                        resultToJs.action = ConstDefault.PHONE_IDEL;
                        Utils.resultToJavascript(resultToJs);
                    }
                }
                                                  );
            }));
        }
Beispiel #5
0
 /// <summary>
 /// 电话机检测拨号结束
 /// </summary>
 /// <param name="result"> 状态 是否回铃</param>
 public static void ringBack(int result)
 {
     if (result == 0 && VoipHelper.offHookCallNumber != null)
     {
         Utils.WriteLog(string.Format("电话摘机检查拨号结束==>> {0}", VoipHelper.offHookCallNumber));
         VoipHelper.callId = Utils.GetCallId();
         ConstDefault.retToJs ringBack = new ConstDefault.retToJs();
         ringBack.action          = ConstDefault.PHONE_DIALING;
         ringBack.phoneNumber     = VoipHelper.offHookCallNumber;
         ringBack.isOffHook       = true;
         VoipHelper.isOffHookCall = true;
         Utils.resultToJavascript(ringBack);
     }
 }
Beispiel #6
0
        /// <summary>
        /// 软摘机/挂机
        /// </summary>
        /// <param name="result">1摘机 0挂机</param>
        public static void enableHook(int result)
        {
            try
            {
                if (result == 1)//摘机
                {
                    Utils.WriteLog(string.Format("软摘机"));
                    VoipHelper.StopVoice(VoipHelper.playHandle);
                    VoipHelper.lineToSpk(1);
                    VoipHelper.domicToLine(1);
                    if (VoipHelper.callState == VoipHelper.telState.IN)
                    {
                        ConstDefault.isMissed = false;

                        ConstDefault.retToJs resultToJs = new ConstDefault.retToJs();
                        resultToJs.action = ConstDefault.PHONE_CALLING;
                        Utils.resultToJavascript(resultToJs);
                    }
                    else
                    {
                        ConstDefault.retToJs resultToJs = new ConstDefault.retToJs();
                        resultToJs.action      = ConstDefault.PHONE_DIALING;
                        resultToJs.phoneNumber = VoipHelper.callNumber;
                        Utils.resultToJavascript(resultToJs);
                    }
                }
                else //挂机
                {
                    Utils.WriteLog(string.Format("软挂机"));
                    VoipHelper.lineToSpk(0);
                    VoipHelper.offHookCallNumber = null;
                    VoipHelper.playHandle        = VoipHelper.StopVoice(VoipHelper.playHandle);
                    ConstDefault.isBySelf        = true;
                    ConstDefault.isCalling       = false;

                    if (VoipHelper.callState == VoipHelper.telState.IN)
                    {
                        MainWindow.form.Topmost = false;
                    }
                    if (VoipHelper.isHookError)
                    {
                        VoipHelper.isHookError = false;
                        return;
                    }

                    ConstDefault.retToJs resultToJs = new ConstDefault.retToJs();
                    resultToJs.action = ConstDefault.PHONE_IDEL;
                    Utils.resultToJavascript(resultToJs);
                }
            }
            catch (Exception err)
            {
                VoipHelper.isHookError = true;
                ConstDefault.retToJs errToJs = new ConstDefault.retToJs();
                errToJs.action = ConstDefault.PHONE_IDEL;
                Utils.resultToJavascript(errToJs);
                VoipHelper.OffOnHook(0);
                Utils.WriteLog(string.Format("软摘软挂错误==>>{0}", err));
                return;
            }
        }