Пример #1
0
        /// <summary>
        /// 盒子事件
        /// </summary>
        /// <param name="lParam"></param>
        private void HandleWindowProc(System.IntPtr lParam)
        {
            BriSDKLib.TBriEvent_Data EventData = (BriSDKLib.TBriEvent_Data)Marshal.PtrToStructure(lParam, typeof(BriSDKLib.TBriEvent_Data));
            Debug.WriteLine("event==>>" + EventData.lEventType);

            switch (EventData.lEventType)
            {
            case BriSDKLib.BriEvent_PhoneHook:    //电话机摘机
                boxHandler.phoneHook();
                break;

            case BriSDKLib.BriEvent_PhoneHang:    //电话机挂机
                boxHandler.phoneHang();
                break;

            case BriSDKLib.BriEvent_GetCallID:    //接收到来电号码
                boxHandler.getCallID(VoipHelper.FromASCIIByteArray(EventData.szData));
                break;

            case BriSDKLib.BriEvent_Busy:    //忙音
                boxHandler.busy();
                break;

            case BriSDKLib.BriEvent_RemoteHook:     //对方接听
                boxHandler.remoteHook();
                break;

            case BriSDKLib.BriEvent_RemoteHang:    //远程挂机
                boxHandler.remoteHang();
                break;

            case BriSDKLib.BriEvent_PhoneDial:    //摘机手动拨号
                boxHandler.phoneDial(VoipHelper.FromASCIIByteArray(EventData.szData));
                break;

            case BriSDKLib.BriEvent_RingBack:    //电话机检查拨号结束
                boxHandler.ringBack(EventData.lResult);
                break;

            case BriSDKLib.BriEvent_EnableHook:     // 软摘/挂机 1是摘机  0是挂机
                boxHandler.enableHook(EventData.lResult);
                break;

            default:
                break;
            }
        }
Пример #2
0
        private Int32 StartCallCC(BriSDKLib.TBriEvent_Data EventData)
        {
            AppendStatus("启动呼叫转移到CC");
            string strDestCC = destcc.Text;

            if (strDestCC.Length == 0 || strDestCC.Length > 18)
            {
                AppendStatus("目标CC号错误:" + strDestCC);
                return(0);
            }
            else
            {//呼叫CC,使用 pEvent->uChannelID通道做为语音输入输出设备
                string strCallParam = strDestCC;
                string strData      = FromASCIIByteArray(EventData.szData);
                if (strData.Length > 0)//","分隔参数
                {
                    strCallParam += ",";
                    strCallParam += "2 1 ";//发送PSTN号码过去,(使用该格式可以兼容CC商务终端,如果转移到的目标CC是使用CC商务终端登陆的话就可以在界面弹出接收到的来电号码)
                    strCallParam += strData;
                }
                m_tagGateData[EventData.uChannelID].lCCHandle = BriSDKLib.QNV_CCCtrl_Call(BriSDKLib.QNV_CCCTRL_CALL_START, 0, strCallParam, EventData.uChannelID);
                if (m_tagGateData[EventData.uChannelID].lCCHandle > 0)
                {
                    m_tagGateData[EventData.uChannelID].uChannelID = EventData.uChannelID;
                    m_tagGateData[EventData.uChannelID].szCC       = strDestCC;
                    AppendStatus("启动呼叫转移成功 CC:" + strDestCC);
                    //----------
                    //如果直接先接通,因为正在转移CC,无任何声音,就需要考虑给对方播放等候提示音,等CC接通后停止播放提示音
                    //AnswerChannel(pEvent->uChannelID);
                    //
                    return(1);
                }
                else
                {
                    AppendStatus("呼叫CC失败:" + strDestCC);
                    return(0);
                }
            }
        }
Пример #3
0
        protected override void DefWndProc(ref System.Windows.Forms.Message m)
        {
            switch (m.Msg)
            {
            case BriSDKLib.BRI_EVENT_MESSAGE:
            {
                BriSDKLib.TBriEvent_Data EventData = (BriSDKLib.TBriEvent_Data)Marshal.PtrToStructure(m.LParam, typeof(BriSDKLib.TBriEvent_Data));
                string strValue = "";
                switch (EventData.lEventType)
                {
                case BriSDKLib.BriEvent_PhoneHook:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":电话机摘机";
                } break;

                case BriSDKLib.BriEvent_PhoneHang:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":电话机挂机";
                } break;

                case BriSDKLib.BriEvent_CallIn:
                {                ////两声响铃结束后开始呼叫转移到CC
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":来电响铃";
                } break;

                case BriSDKLib.BriEvent_GetCallID:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":接收到来电号码 " + FromASCIIByteArray(EventData.szData);
                } break;

                case BriSDKLib.BriEvent_StopCallIn:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":停止呼入,产生一个未接电话 ";
                } break;

                case BriSDKLib.BriEvent_GetDTMFChar: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":接收到按键 " + FromASCIIByteArray(EventData.szData); break;

                case BriSDKLib.BriEvent_RemoteHang:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":远程挂机 ";
                } break;

                case BriSDKLib.BriEvent_Busy:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":接收到忙音,线路已经断开 ";
                } break;

                case BriSDKLib.BriEvent_DialTone: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":检测到拨号音 "; break;

                case BriSDKLib.BriEvent_PhoneDial: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":电话机拨号 " + FromASCIIByteArray(EventData.szData); break;

                case BriSDKLib.BriEvent_RingBack: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":拨号后接收到回铃音 "; break;

                case BriSDKLib.BriEvent_DevErr:
                {
                    if (EventData.lResult == 3)
                    {
                        strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":设备可能被移除 ";
                    }
                } break;

                default: break;
                }
                if (strValue.Length > 0)
                {
                    AppendStatus(strValue);
                }
            } break;

            default:
                base.DefWndProc(ref m);
                break;
            }
        }
Пример #4
0
        protected override void DefWndProc(ref System.Windows.Forms.Message m)
        {
            switch (m.Msg)
            {
            case BriSDKLib.BRI_EVENT_MESSAGE:
            {
                BriSDKLib.TBriEvent_Data EventData = (BriSDKLib.TBriEvent_Data)Marshal.PtrToStructure(m.LParam, typeof(BriSDKLib.TBriEvent_Data));
                string strValue = "";
                //AppendStatus("接收到消息:" + " type=" + EventData.lEventType.ToString() + " result=" + EventData.lResult + " data=" + FromASCIIByteArray(EventData.szData));
                switch (EventData.lEventType)
                {
                case BriSDKLib.BriEvent_PhoneHook:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":电话机摘机";
                } break;

                case BriSDKLib.BriEvent_PhoneHang:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":电话机挂机";
                } break;

                case BriSDKLib.BriEvent_CallIn:
                {               ////两声响铃结束后开始呼叫转移到CC
                    if (EventData.lResult == 2 &&
                        FromASCIIByteArray(EventData.szData) == BriSDKLib.RING_END_SIGN_CH &&
                        m_tagGateData[EventData.uChannelID].lCCHandle == 0)
                    {
                        StartCallCC(EventData);
                        return;
                    }
                    else
                    {
                        strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":来电响铃";
                    }
                } break;

                case BriSDKLib.BriEvent_GetCallID:
                {
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":接收到来电号码 " + FromASCIIByteArray(EventData.szData);
                    //如果接收到来电号码就立即开始呼叫转移到CC
                    StartCallCC(EventData);
                    //
                } break;

                case BriSDKLib.BriEvent_StopCallIn:
                {
                    StopCallCC(EventData.uChannelID);
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":停止呼入,产生一个未接电话 ";
                } break;

                case BriSDKLib.BriEvent_GetDTMFChar: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":接收到按键 " + FromASCIIByteArray(EventData.szData); break;

                case BriSDKLib.BriEvent_RemoteHang:
                {
                    StopCallCC(EventData.uChannelID);
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":远程挂机 ";
                } break;

                case BriSDKLib.BriEvent_Busy:
                {
                    StopCallCC(EventData.uChannelID);
                    strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":接收到忙音,线路已经断开 ";
                } break;

                case BriSDKLib.BriEvent_DialTone: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":检测到拨号音 "; break;

                case BriSDKLib.BriEvent_PhoneDial: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":电话机拨号 " + FromASCIIByteArray(EventData.szData); break;

                case BriSDKLib.BriEvent_RingBack: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":拨号后接收到回铃音 "; break;

                case BriSDKLib.BriEvent_CC_ConnectFailed: strValue = "通道" + (EventData.uChannelID + 1).ToString() + ":连接CC服务器失败 "; break;

                case BriSDKLib.BriEvent_CC_LoginFailed:           //登陆失败
                {
                    strValue = "登陆失败 原因=" + EventData.lResult.ToString();
                    BriSDKLib.QNV_CCCtrl(BriSDKLib.QNV_CCCTRL_LOGOUT, "", 0);               //释放资源
                    MessageBox.Show("登陆失败");
                } break;

                case BriSDKLib.BriEvent_CC_CallOutSuccess: strValue = "正在呼叫"; break;

                case BriSDKLib.BriEvent_CC_CallOutFailed:
                {
                    BriSDKLib.QNV_CCCtrl_Call(BriSDKLib.QNV_CCCTRL_CALL_STOP, EventData.lEventHandle, "", 0); //停止CC呼叫
                    StopChannel(EventData.lEventHandle);                                                      //停止PSTN通道
                    strValue = "呼叫失败 原因=" + EventData.lResult.ToString();
                } break;

                case BriSDKLib.BriEvent_CC_Connected:
                {
                    AnswerCCHandle(EventData.lEventHandle);
                    strValue = "CC已经连通";
                } break;

                case BriSDKLib.BriEvent_CC_CallFinished:
                {
                    StopChannel(EventData.lEventHandle);
                    strValue = "呼叫结束 原因=" + EventData.lResult.ToString();
                } break;

                case BriSDKLib.BriEvent_CC_LoginSuccess: strValue = "CC登陆成功"; break;

                case BriSDKLib.BriEvent_CC_CallIn: break;

                case BriSDKLib.BriEvent_CC_ReplyBusy: strValue = "CC对方回复忙"; break;

                case BriSDKLib.BriEvent_CC_RecvedMsg: strValue = "CC接收到消息"; break;

                case BriSDKLib.BriEvent_CC_RecvedCmd: strValue = "CC接收到命令"; break;

                default: break;
                }
                if (strValue.Length > 0)
                {
                    AppendStatus(strValue);
                }
            } break;

            default:
                base.DefWndProc(ref m);
                break;
            }
        }