コード例 #1
0
        private void opendev_Click(object sender, EventArgs e)
        {
            if (BriSDKLib.QNV_OpenDevice(BriSDKLib.ODT_LBRIDGE, 0, "") <= 0 || BriSDKLib.QNV_DevInfo(0, BriSDKLib.QNV_DEVINFO_GETCHANNELS) <= 0)
            {
                AppendStatus("打开设备失败");
                MessageBox.Show("打开设备失败");
                return;
            }
            selchannel.Items.Clear();
            spkamvalue.Items.Clear();
            micamvalue.Items.Clear();

            for (Int16 i = 0; i < BriSDKLib.QNV_DevInfo(-1, BriSDKLib.QNV_DEVINFO_GETCHANNELS); i++)
            {//在windowproc处理接收到的消息
                BriSDKLib.QNV_Event(i, BriSDKLib.QNV_EVENT_REGWND, (Int32)this.Handle, "", new StringBuilder(0), 0);
                selchannel.Items.Add(i + 1);
            }
            selchannel.SelectedIndex = 0;

            for (int i = 0; i < 16; i++)
            {
                spkamvalue.Items.Add(i);
            }
            spkamvalue.SelectedIndex = 0;

            for (int i = 0; i < 7; i++)
            {
                micamvalue.Items.Add(i);
            }
            micamvalue.SelectedIndex = 0;

            AppendStatus("打开设备成功");
            return;
        }
コード例 #2
0
 private void resumeplayfile_Click(object sender, EventArgs e)
 {
     if (m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle > 0)
     {
         BriSDKLib.QNV_PlayFile((short)selchannel.SelectedIndex, BriSDKLib.QNV_PLAY_FILE_RESUME, m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle, 0, "");
     }
 }
コード例 #3
0
 private void resumerecfile_Click(object sender, EventArgs e)
 {
     if (m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle > 0)
     {
         BriSDKLib.QNV_RecordFile((short)selchannel.SelectedIndex, BriSDKLib.QNV_RECORD_FILE_RESUME, m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle, 0, "");
     }
 }
コード例 #4
0
ファイル: MainWindow.xaml.cs プロジェクト: xhonker/cefsharp
        /// <summary>
        /// 窗口加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Utils.WriteLog("Window_Loaded");
            string serverAddress = ConfigurationManager.AppSettings["server"];

            #region browser
            #region 初始化环境 禁用gpu 防止闪烁
            var setting = new CefSharp.CefSettings();
            setting.CefCommandLineArgs.Add("disable-gpu", "1");
            setting.Locale    = "zh-CN";
            setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 LY_CRM_BOX";
            CefSharp.Cef.Initialize(setting);
            #endregion
            browser = new ChromiumWebBrowser();
            //browser.Address = System.AppDomain.CurrentDomain.BaseDirectory + "index.html";
            // 解决input框无法输入中文的BUG
            browser.PreviewTextInput += Browser_PreviewTextInput;

            browser.Address = serverAddress;

            browser.LifeSpanHandler = new prohibitNewPageJump();
            //browser.Address = "http://ie.icoa.cn";
            //注册JS调用函数
            browser.RegisterJsObject("__phone", new CallBackForJs());
            // 菜单处理事件
            browser.MenuHandler = new MenuHandler();
            // 下载处理事件
            browser.DownloadHandler = new browerDownLoad();

            this.main.Children.Add(browser);
            // 浏览器按键事件
            browser.KeyDown += Browser_KeyDown;

            #endregion

            #region 盒子初始化
            if (VoipHelper.OpenDevice() == 0)
            {
                VoipHelper.deviceState = false;
                MessageBox.Show("电话硬件设备连接存在问题,请关闭软件检查硬件后重试。");
            }

            hwnd = (new System.Windows.Interop.WindowInteropHelper(this)).Handle;//盒子事件注册
            for (Int16 i = 0; i < BriSDKLib.QNV_DevInfo(-1, BriSDKLib.QNV_DEVINFO_GETCHANNELS); i++)
            {
                //在windowproc处理接收到的消息
                BriSDKLib.QNV_Event(i, BriSDKLib.QNV_EVENT_REGWND, (int)hwnd, "", new StringBuilder(0), 0);
            }
            VoipHelper.init();
            #endregion

            #region   录音
            uploadRecordingFile         = new BackgroundWorker();
            uploadRecordingFile.DoWork += uploadRecordingFile_DoWork;
            uploadRecordingFile.WorkerSupportsCancellation = true;
            uploadRecordingFile.RunWorkerAsync();
            #endregion

            Utils.PreventSleep();
        }
コード例 #5
0
        private void startrecfile_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog();

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                Int32 dwmask = 0;
                if (echoenable.Checked)
                {
                    dwmask |= BriSDKLib.RECORD_MASK_ECHO;
                }
                if (agcenable.Checked)
                {
                    dwmask |= BriSDKLib.RECORD_MASK_AGC;
                }
                m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle = BriSDKLib.QNV_RecordFile((short)selchannel.SelectedIndex, BriSDKLib.QNV_RECORD_FILE_START, recformat.SelectedIndex, dwmask, dlg.FileName);
                if (m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle <= 0)
                {
                    AppendStatus("文件录音失败:" + dlg.FileName);
                }
                else
                {
                    AppendStatus("开始文件录音:" + dlg.FileName);
                    AppendStatus("录音ID:" + m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle);
                }
            }
        }
コード例 #6
0
ファイル: Form1.cs プロジェクト: yaotion/RsRest
        private void opendevice_Click(object sender, EventArgs e)
        {
            if (BriSDKLib.QNV_OpenDevice(BriSDKLib.ODT_LBRIDGE, 0, "") <= 0 || BriSDKLib.QNV_DevInfo(0, BriSDKLib.QNV_DEVINFO_GETCHANNELS) <= 0)
            {
                AppendStatus("打开设备失败");
                MessageBox.Show("打开设备失败");
                return;
            }
            for (Int16 i = 0; i < BriSDKLib.QNV_DevInfo(-1, BriSDKLib.QNV_DEVINFO_GETCHANNELS); i++)
            {//在windowproc处理接收到的消息
                BriSDKLib.QNV_Event(i, BriSDKLib.QNV_EVENT_REGWND, (Int32)this.Handle, "", new StringBuilder(0), 0);
            }

            //打开CC模块
            if (BriSDKLib.QNV_OpenDevice(BriSDKLib.ODT_CC, 0, BriSDKLib.QNV_CC_LICENSE) <= 0)//加载CC模块
            {
                AppendStatus("加载CC模块失败");
                MessageBox.Show("加载CC模块失败");
                return;
            }
            else
            {
                //注册本窗口接收CC模块的事件
                //在windowproc处理接收到的消息
                BriSDKLib.QNV_Event(BriSDKLib.CCCTRL_CHANNELID, BriSDKLib.QNV_EVENT_REGWND, (Int32)this.Handle, "", new StringBuilder(0), 0);
                AppendStatus("加载CC模块完成");
            }
            AppendStatus("打开设备成功");
            return;
        }
コード例 #7
0
 private void stopplayfile_Click(object sender, EventArgs e)
 {
     if (m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle > 0)
     {
         BriSDKLib.QNV_PlayFile((short)selchannel.SelectedIndex, BriSDKLib.QNV_PLAY_FILE_STOP, m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle, 0, "");
         m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle = 0;
         AppendStatus("停止播放文件");
     }
 }
コード例 #8
0
 private void stoprecfile_Click(object sender, EventArgs e)
 {
     if (m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle > 0)
     {
         AppendStatus("停止文件录音 ID:" + m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle);
         long lRet = BriSDKLib.QNV_RecordFile((short)selchannel.SelectedIndex, BriSDKLib.QNV_RECORD_FILE_STOP, m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle, 0, "");
         m_tagpstnData[(short)selchannel.SelectedIndex].lRecFileHandle = 0;
         AppendStatus("停止文件录音 Ret:" + lRet);
     }
 }
コード例 #9
0
ファイル: Form1.cs プロジェクト: yaotion/RsRest
 private void setserver_Click(object sender, EventArgs e)
 {
     if (BriSDKLib.QNV_CCCtrl(BriSDKLib.QNV_CCCTRL_SETSERVER, ccsvraddr.Text, 0) <= 0)
     {
         AppendStatus("修改服务器IP地址失败 " + ccsvraddr.Text);
     }
     else
     {
         AppendStatus("修改服务器IP地址完成,可以重新登陆.. " + ccsvraddr.Text);
     }
 }
コード例 #10
0
 /// <summary>
 /// 停止录音
 /// </summary>
 /// <param name="handle"></param>
 public static void EndRecord()
 {
     BriSDKLib.QNV_RecordFile(VoipIndex, BriSDKLib.QNV_RECORD_FILE_STOP, recordingHanle, 0, "");
     if (MainWindow.uploadRecordingFile != null)
     {
         if (!MainWindow.uploadRecordingFile.IsBusy)
         {
             MainWindow.uploadRecordingFile.RunWorkerAsync();
         }
     }
 }
コード例 #11
0
 /// <summary>
 ///  软摘/挂机 1 摘机  0 挂机
 /// </summary>
 /// <param name="hook"></param>
 /// <returns></returns>
 public static void OffOnHook(int hook)
 {
     if (hook == 1)
     {
         StartRecord();
     }
     if (hook == 0)
     {
         EndRecord();
     }
     BriSDKLib.QNV_SetDevCtrl((short)VoipIndex, BriSDKLib.QNV_CTRL_DOHOOK, hook);
 }
コード例 #12
0
 private void startdial_Click(object sender, EventArgs e)
 {
     if (dialcode.Text.Length <= 0)
     {
         AppendStatus("拨号号码不能为空");
     }
     else
     {
         AppendStatus("开始拨号:" + dialcode.Text);
         BriSDKLib.QNV_General((short)selchannel.SelectedIndex, BriSDKLib.QNV_GENERAL_STARTDIAL, 0, dialcode.Text);
         dohook.Checked = true;//拨好时系统会自动摘机,改变显示状态
     }
 }
コード例 #13
0
ファイル: Form1.cs プロジェクト: yaotion/RsRest
 private Int32 StopCallCC(Int16 uChannelID)//停止转移到该CC
 {
     if (m_tagGateData[uChannelID].lCCHandle > 0)
     {
         BriSDKLib.QNV_CCCtrl_Call(BriSDKLib.QNV_CCCTRL_CALL_STOP, m_tagGateData[uChannelID].lCCHandle, "", 0);
         m_tagGateData[uChannelID].lCCHandle = 0;
         AppendStatus("通道线路断开,停止转移到CC");
         return(1);
     }
     else
     {
         return(0);
     }
 }
コード例 #14
0
        /// <summary>
        /// 开始录音
        /// </summary>
        /// <param name="path">路径</param>
        /// <returns>返回录音句柄</returns>
        public static int StartRecord()
        {
            if (!string.IsNullOrEmpty(callId))
            {
                var path = string.Format("{0}\\{1}.wav", recordPath, callId.ToString().Trim());
                recordingHanle = BriSDKLib.QNV_RecordFile(VoipIndex, BriSDKLib.QNV_RECORD_FILE_START, BriSDKLib.BRI_WAV_FORMAT_PCM8K16B, BriSDKLib.RECORD_MASK_ECHO | BriSDKLib.RECORD_MASK_AGC, path);

                if (recordingHanle < 0)//录音失败
                {
                    Utils.WriteLog("录音失败");
                    BriSDKLib.QNV_RecordFile(VoipIndex, BriSDKLib.QNV_RECORD_FILE_STOPALL, 0, 0, "0");
                    OffOnHook(0);
                    return(-1);
                }
            }
            return(recordingHanle);
        }
コード例 #15
0
ファイル: Form1.cs プロジェクト: yaotion/RsRest
        private void logonbtn_Click(object sender, EventArgs e)
        {
            if (BriSDKLib.QNV_CCCtrl(BriSDKLib.QNV_CCCTRL_ISLOGON, "", 0) > 0)
            {
                BriSDKLib.QNV_CCCtrl(BriSDKLib.QNV_CCCTRL_LOGOUT, "", 0);
                AppendStatus("已经在线,先离线.");
            }
            string strValue = cccode.Text + "," + ccpwd.Text;                       //','分隔

            if (BriSDKLib.QNV_CCCtrl(BriSDKLib.QNV_CCCTRL_LOGIN, strValue, 0) <= 0) //开始登陆
            {
                MessageBox.Show("登陆失败,CC:" + cccode.Text);
            }
            else
            {
                AppendStatus("开始登陆,CC: " + cccode.Text);
            }
        }
コード例 #16
0
        /// <summary>
        /// 初始化盒子 设置相关配置
        /// </summary>
        public static void init()
        {
            BriSDKLib.QNV_SetParam(VoipIndex, BriSDKLib.QNV_PARAM_BUSY, 10);        //修复 意外远程挂机
            lineToSpk(0);                                                           //初始化线路声音到耳机 关闭  因为来电有干扰声音 很刺耳
            BriSDKLib.QNV_SetDevCtrl(VoipIndex, BriSDKLib.QNV_CTRL_DOMICTOLINE, 1); //打开麦克风到电话线
            BriSDKLib.QNV_SetDevCtrl(VoipIndex, BriSDKLib.QNV_CTRL_LINEOUT, 1);     //打开线路输出功能
            BriSDKLib.QNV_SetDevCtrl(VoipIndex, BriSDKLib.QNV_CTRL_DOPLAYTOSPK, 1); //打开播放的语音到耳机
            BriSDKLib.QNV_SetDevCtrl(VoipIndex, BriSDKLib.QNV_CTRL_PLAYTOLINE, 1);  //打开播放的语音到线路
            BriSDKLib.QNV_SetParam(VoipIndex, BriSDKLib.QNV_PARAM_AM_MIC, 0);       //获取插在设备上的麦克风增益大小//
            BriSDKLib.QNV_SetParam(VoipIndex, BriSDKLib.QNV_PARAM_AM_SPKOUT, 10);   //设置插在设备上的耳机音量等级大小
            BriSDKLib.QNV_SetParam(VoipIndex, BriSDKLib.QNV_PARAM_AM_LINEOUT, 15);  //设置播放语音到线路的音量等级大小//
            BriSDKLib.QNV_SetParam(VoipIndex, BriSDKLib.QNV_PARAM_AM_LINEIN, 7);    //电话线路信号强
            BriSDKLib.QNV_SetParam(VoipIndex, BriSDKLib.QNV_PARAM_AM_DOPLAY, 15);

            createDirectory(crmRoot);
            createDirectory(Utils.crmLog);
            createDirectory(recordPath);
        }
コード例 #17
0
 private void startplayfile_Click(object sender, EventArgs e)
 {
     {
         OpenFileDialog dlg = new OpenFileDialog();
         if (dlg.ShowDialog() == DialogResult.OK)
         {
             //this.textBox1.Text = dlg.FileName;
             //PLAYFILE_MASK_REPEAT 使用重复播放
             m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle = BriSDKLib.QNV_PlayFile((short)selchannel.SelectedIndex, BriSDKLib.QNV_PLAY_FILE_START, 0, BriSDKLib.PLAYFILE_MASK_REPEAT, dlg.FileName);
             if (m_tagpstnData[(short)selchannel.SelectedIndex].lPlayFileHandle <= 0)
             {
                 AppendStatus("播放文件失败:" + dlg.FileName);
             }
             else
             {
                 AppendStatus("开始播放文件:" + dlg.FileName);
             }
         }
     }
 }
コード例 #18
0
ファイル: Form1.cs プロジェクト: yaotion/RsRest
        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);
                }
            }
        }
コード例 #19
0
ファイル: Form1.cs プロジェクト: yaotion/RsRest
        private Int32 StopChannel(Int32 lCCHandle)//CC呼叫停止,断开通道PSTN线路
        {
            long lID = GetCCHandleGateID(lCCHandle);

            if (lID >= 0)
            {//如果已经是接通了
                if (BriSDKLib.QNV_GetDevCtrl(m_tagGateData[lID].uChannelID, BriSDKLib.QNV_CTRL_DOHOOK) > 0)
                {
                    BriSDKLib.QNV_SetDevCtrl(m_tagGateData[lID].uChannelID, BriSDKLib.QNV_CTRL_DOHOOK, 0);
                }
                else//还没有接通,直接调用拒接
                {
                    BriSDKLib.QNV_General(m_tagGateData[lID].uChannelID, BriSDKLib.QNV_GENERAL_STARTREFUSE, 0, "");
                }
                AppendStatus("停止通道转移");
                m_tagGateData[lID].lCCHandle = 0;
                return(1);
            }
            else
            {
                return(0);
            }
        }
コード例 #20
0
 private void closedev_Click(object sender, EventArgs e)
 {
     BriSDKLib.QNV_CloseDevice(BriSDKLib.ODT_ALL, 0);
     selchannel.Items.Clear();
     AppendStatus("设备已关闭");
 }
コード例 #21
0
 /// <summary>
 /// 拒绝当前呼入来电 大于零=成功
 /// </summary>
 /// <returns></returns>
 public static int refuseCurrentIncoming()
 {
     return(BriSDKLib.QNV_General(0, BriSDKLib.QNV_GENERAL_STARTREFUSE, BriSDKLib.REFUSE_SYN, ""));
 }
コード例 #22
0
 private void dophone_CheckedChanged(object sender, EventArgs e)
 {
     BriSDKLib.QNV_SetDevCtrl((short)selchannel.SelectedIndex, BriSDKLib.QNV_CTRL_DOPHONE, dophone.Checked ? 0 : 1);
 }
コード例 #23
0
 /// <summary>
 /// 停止拒接
 /// </summary>
 /// <returns></returns>
 public static int stopCusttentIncoming()
 {
     return(BriSDKLib.QNV_General(0, BriSDKLib.QNV_GENERAL_STOPREFUSE, 0, ""));
 }
コード例 #24
0
 private void startflash_Click(object sender, EventArgs e)
 {
     BriSDKLib.QNV_General((short)selchannel.SelectedIndex, BriSDKLib.QNV_GENERAL_STARTFLASH, BriSDKLib.FT_ALL, "");
 }
コード例 #25
0
 private void refusecallin_Click(object sender, EventArgs e)
 {
     BriSDKLib.QNV_General((short)selchannel.SelectedIndex, BriSDKLib.QNV_GENERAL_STARTREFUSE, BriSDKLib.REFUSE_ASYN, "");
 }
コード例 #26
0
 private void doline2spk_CheckedChanged(object sender, EventArgs e)
 {
     BriSDKLib.QNV_SetDevCtrl((short)selchannel.SelectedIndex, BriSDKLib.QNV_CTRL_DOLINETOSPK, doline2spk.Checked ? 1 : 0);
 }
コード例 #27
0
 private void doplay_CheckedChanged(object sender, EventArgs e)
 {
     BriSDKLib.QNV_SetDevCtrl((short)selchannel.SelectedIndex, BriSDKLib.QNV_CTRL_DOPLAY, doplay.Checked ? 1 : 0);
 }
コード例 #28
0
 private void domic2line_CheckedChanged(object sender, EventArgs e)
 {
     BriSDKLib.QNV_SetDevCtrl((short)selchannel.SelectedIndex, BriSDKLib.QNV_CTRL_DOMICTOLINE, domic2line.Checked ? 1 : 0);
 }
コード例 #29
0
 private void micamvalue_SelectedIndexChanged(object sender, EventArgs e)
 {
     BriSDKLib.QNV_SetParam((short)selchannel.SelectedIndex, BriSDKLib.QNV_PARAM_AM_MIC, micamvalue.SelectedIndex);
 }
コード例 #30
0
 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
 {
     BriSDKLib.QNV_CloseDevice(BriSDKLib.ODT_ALL, 0);
 }