public void startContextCall(List<string> selectedUserList) { if (null != selectedUserList && selectedUserList.Count>0) { MakeCallBusiness call = new MakeCallBusiness(); StringBuilder str = new StringBuilder(); string strContact =""; for (int index = 0; index < selectedUserList.Count; index++) { str = new StringBuilder(selectedUserList[index]); call.insertMember(0,str); strContact+=(str+";"); } if (call.startContextCall() == 0) //插件呼叫管理模块的发起上下文呼叫业务接口 { WinCall winCall = new WinCall(toolbar.Lync, SingletonObj.LoginInfo.LyncName + ";" + strContact.TrimEnd(';')); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); winCall.Title = "Calling: " + str.ToString(); toolbar.Lync.winCall = winCall; } else { DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2); return; } } }
public void startContextCall(List <string> selectedUserList) { if (null != selectedUserList && selectedUserList.Count > 0) { MakeCallBusiness call = new MakeCallBusiness(); StringBuilder str = new StringBuilder(); string strContact = ""; for (int index = 0; index < selectedUserList.Count; index++) { str = new StringBuilder(selectedUserList[index]); call.insertMember(0, str); strContact += (str + ";"); } if (call.startContextCall() == 0) //插件呼叫管理模块的发起上下文呼叫业务接口 { WinCall winCall = new WinCall(toolbar.Lync, SingletonObj.LoginInfo.LyncName + ";" + strContact.TrimEnd(';')); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); winCall.Title = "Calling: " + str.ToString(); toolbar.Lync.winCall = winCall; } else { DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2); return; } } }
private void button_Click(object sender, RoutedEventArgs e) { //二次拨号 MakeCallBusiness call = new MakeCallBusiness(); string str =(((sender as Button).Content as StackPanel).Children[0] as Image).Tag.ToString(); txtNumber.Text += str; call.SendDTMF(Convert.ToChar(str)); txtNumber.Focus(); txtNumber.Select(txtNumber.Text.Length, 0); }
private void button_Click(object sender, RoutedEventArgs e) { //二次拨号 MakeCallBusiness call = new MakeCallBusiness(); string str = (((sender as Button).Content as StackPanel).Children[0] as Image).Tag.ToString(); txtNumber.Text += str; call.SendDTMF(Convert.ToChar(str)); txtNumber.Focus(); txtNumber.Select(txtNumber.Text.Length, 0); }
private void DeclineCommandProcess() { isAnswerMessage = false; if (!isVideo) { callBusiness.RejectCall(); //超时不做这个动作,只关界面 2015/7/28 } else { MakeCallBusiness bus = new MakeCallBusiness(); bus.RejectVideoCall(); } winCallReceive.isCloseButton = false; //7/27 winCallReceive.lync.setBtn(); //先设置图形 //if (winCallReceive.lync.toolBar.JointType == PhoneJointType.PC_Device) //{ // if (winCallReceive.lync.winCall.btnVideo.IsEnabled == false) // { // winCallReceive.lync.winCall.btnVideo.IsEnabled = true; // UpdateImage.UpdateData(winCallReceive.lync.winCall.imgVideo, "/Image/call/video_1.png"); // } //} if (winCallReceive.Visibility == Visibility.Visible) { winCallReceive.Close(); winCallReceive.lync.isHave = false; } string name = StringHelper.GetSubString(winCallReceive.callName); string url = StringHelper.GetLyncUrl(name); HistoryQueryBusiness query = new HistoryQueryBusiness(); query.InsertCallHistory(CallHistoryType.HISTORY_CALL_MISSED, url, name, -1); }
private void FinishCommandProcess() { //2015/7/27 为空和数字校验 if ("" == winCallReceive.txtOtherPhone.Text.Trim()) { DialogShow.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"), 2); return; } if (IsValidPhoneNumber(winCallReceive.txtOtherPhone.Text) == false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } if (winCallReceive.UcPhoneNo == winCallReceive.txtOtherPhone.Text || winCallReceive.UcPhoneNo1 == winCallReceive.txtOtherPhone.Text) { DialogShow.Show(StringHelper.FindLanguageResource("Cannottansfer"), StringHelper.FindLanguageResource("error"), 2); return; } MakeCallBusiness bus = new MakeCallBusiness(); bus.ForwardCall((int)MemberType.UC_IPPHONE, winCallReceive.txtOtherPhone.Text.ToString()); winCallReceive.Close(); }
private void btnAdd_Click(object sender, RoutedEventArgs e) { if (txtNumber.Text.ToString().Trim() == "" || txtNumber.Text.ToString()== "") { return; } else { boolnum(txtNumber.Text.ToString()); } if (boolnum(txtNumber.Text.ToString()) == true) { //modify by jinyeqing 00327190 2015/6/10 添加号码时先看是否是UC用户,如果是按照UC帐号添加,不是就按话机号码添加 MakeCallBusiness call = new MakeCallBusiness(); StringBuilder ucName = new StringBuilder(100); string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); if (call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != "" && call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != null) { foreach (DataRow d in dtSelectedContact.Rows) { if (d["Phone"].ToString() == txtNumber.Text.ToString()) { DialogShow.Show(StringHelper.FindLanguageResource("theNumisExist"), StringHelper.FindLanguageResource("error"), 2); return; } if (d["Url"].ToString() == ucName + strLyncURI) //2015/8/6 如果URL 一致,则不添加 { DialogShow.Show(StringHelper.FindLanguageResource("theNameisExist"), StringHelper.FindLanguageResource("error"), 2); return; } } DataRow dr = dtSelectedContact.NewRow(); string str = txtNumber.Text.ToString(); int page=0; GetAllLyncContacts(str, page); dtSource = dtContact.Copy(); string name = ""; //modify by 00327190 2015/8/6 如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复 UserConfigBusiness conf = new UserConfigBusiness(); STContact con = new STContact(); string name1 = StringHelper.GetSubString(ucName.ToString()); int iRet1 = conf.GetContactInfo(new StringBuilder(name1), ref con); if (0 == iRet1) { name = con.name_; } //modify by 00327190 2015/8/6 如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复 for (int i = 0; i < dtSource.Rows.Count; i++) { if (dtSource.Rows[i]["URL"].ToString().Trim() == call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI) { name = dtSource.Rows[i]["NAME"].ToString().Trim(); } } dr[0] = name; //2015/8/24 UTF8 转码UNICODE //byte[] buffer1 = Encoding.Default.GetBytes(call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName)); //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length); //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length); //dr[1] = item1 + strLyncURI; dr[1] = call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI; dr[2] = txtNumber.Text.ToString(); dtSelectedContact.Rows.Add(dr); listSelectedContact.DataContext = null; listSelectedContact.DataContext = dtSelectedContact; listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]); txtName.Text = ""; txtNumber.Text = ""; } //之前没有if ,只有中间的循环体部分 else { foreach (DataRow d in dtSelectedContact.Rows) { if (d["Phone"].ToString() == txtNumber.Text.ToString()) { return; } } DataRow dr = dtSelectedContact.NewRow(); dr[0] = txtName.Text.ToString(); dr[2] = txtNumber.Text.ToString(); dtSelectedContact.Rows.Add(dr); listSelectedContact.DataContext = null; listSelectedContact.DataContext = dtSelectedContact; listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]); txtName.Text = ""; txtNumber.Text = ""; } //是否是盲转窗体 if (isBlindTransCall) { btnOK_Click(null, null); } } else { lync.winCall.OpenDialogTiming(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } }
private void FinishCommandProcess() { //2015/7/27 为空和数字校验 if ("" == winCallReceive.txtOtherPhone.Text.Trim()) { DialogShow.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"), 2); return; } if (IsValidPhoneNumber(winCallReceive.txtOtherPhone.Text)==false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } if (winCallReceive.UcPhoneNo == winCallReceive.txtOtherPhone.Text || winCallReceive.UcPhoneNo1 == winCallReceive.txtOtherPhone.Text) { DialogShow.Show(StringHelper.FindLanguageResource("Cannottansfer"), StringHelper.FindLanguageResource("error"), 2); return; } MakeCallBusiness bus = new MakeCallBusiness(); bus.ForwardCall((int)MemberType.UC_IPPHONE, winCallReceive.txtOtherPhone.Text.ToString()); winCallReceive.Close(); }
private void DeclineCommandProcess() { isAnswerMessage = false; if (!isVideo) { callBusiness.RejectCall(); //超时不做这个动作,只关界面 2015/7/28 } else { MakeCallBusiness bus = new MakeCallBusiness(); bus.RejectVideoCall(); } winCallReceive.isCloseButton = false; //7/27 winCallReceive.lync.setBtn(); //先设置图形 //if (winCallReceive.lync.toolBar.JointType == PhoneJointType.PC_Device) //{ // if (winCallReceive.lync.winCall.btnVideo.IsEnabled == false) // { // winCallReceive.lync.winCall.btnVideo.IsEnabled = true; // UpdateImage.UpdateData(winCallReceive.lync.winCall.imgVideo, "/Image/call/video_1.png"); // } //} if (winCallReceive.Visibility == Visibility.Visible ) { winCallReceive.Close(); winCallReceive.lync.isHave = false; } string name = StringHelper.GetSubString(winCallReceive.callName); string url = StringHelper.GetLyncUrl(name); HistoryQueryBusiness query = new HistoryQueryBusiness(); query.InsertCallHistory(CallHistoryType.HISTORY_CALL_MISSED, url, name, -1); }
private void button_Click(object sender, RoutedEventArgs e) { Image img = ((sender as Button).Content as StackPanel).Children[0] as Image; if (img.Tag.ToString() == "call") { if (txtNumber.Text.ToString() == "") { return; } if (Lync.winCall != null) { this.Close(); Dialog.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error")); return; } //拨号 MakeCallBusiness call = new MakeCallBusiness(); StringBuilder ucName = new StringBuilder(100); call.GetUCAccount(txtNumber.Text.ToString(), ucName); string str = null; if (ucName.ToString() == "") { str = txtNumber.Text.ToString(); call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(str)); } else { str = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); call.insertMember((int)MemberType.UC_ACCOUNT, ucName); } if (call.startContextCall() == 0) //modify by 00327190 2015/6/18 只要返回值不为0,就不能执行以下操作 { this.Close(); WinCall winCall = new WinCall(Lync, SingletonObj.LoginInfo.LyncName + ";" + str.ToString()); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); Lync.winCall = winCall; } else { this.Close(); DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2); return; } } else if (img.Tag.ToString() == "back") { if (txtNumber.Text.Length > 0) { txtNumber.Text = txtNumber.Text.Substring(0, txtNumber.Text.Length - 1); } } else { txtNumber.Text = txtNumber.Text + img.Tag.ToString(); txtNumber.Focus(); txtNumber.Select(txtNumber.Text.Length, 0); } }
private void btnAdd_Click(object sender, RoutedEventArgs e) { if (txtNumber.Text.ToString().Trim() == "" || txtNumber.Text.ToString() == "") { return; } else { boolnum(txtNumber.Text.ToString()); } if (boolnum(txtNumber.Text.ToString()) == true) { //modify by jinyeqing 00327190 2015/6/10 添加号码时先看是否是UC用户,如果是按照UC帐号添加,不是就按话机号码添加 MakeCallBusiness call = new MakeCallBusiness(); StringBuilder ucName = new StringBuilder(100); string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); if (call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != "" && call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != null) { foreach (DataRow d in dtSelectedContact.Rows) { if (d["Phone"].ToString() == txtNumber.Text.ToString()) { DialogShow.Show(StringHelper.FindLanguageResource("theNumisExist"), StringHelper.FindLanguageResource("error"), 2); return; } if (d["Url"].ToString() == ucName + strLyncURI) //2015/8/6 如果URL 一致,则不添加 { DialogShow.Show(StringHelper.FindLanguageResource("theNameisExist"), StringHelper.FindLanguageResource("error"), 2); return; } } DataRow dr = dtSelectedContact.NewRow(); string str = txtNumber.Text.ToString(); int page = 0; GetAllLyncContacts(str, page); dtSource = dtContact.Copy(); string name = ""; //modify by 00327190 2015/8/6 如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复 UserConfigBusiness conf = new UserConfigBusiness(); STContact con = new STContact(); string name1 = StringHelper.GetSubString(ucName.ToString()); int iRet1 = conf.GetContactInfo(new StringBuilder(name1), ref con); if (0 == iRet1) { name = con.name_; } //modify by 00327190 2015/8/6 如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复 for (int i = 0; i < dtSource.Rows.Count; i++) { if (dtSource.Rows[i]["URL"].ToString().Trim() == call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI) { name = dtSource.Rows[i]["NAME"].ToString().Trim(); } } dr[0] = name; //2015/8/24 UTF8 转码UNICODE //byte[] buffer1 = Encoding.Default.GetBytes(call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName)); //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length); //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length); //dr[1] = item1 + strLyncURI; dr[1] = call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI; dr[2] = txtNumber.Text.ToString(); dtSelectedContact.Rows.Add(dr); listSelectedContact.DataContext = null; listSelectedContact.DataContext = dtSelectedContact; listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]); txtName.Text = ""; txtNumber.Text = ""; } //之前没有if ,只有中间的循环体部分 else { foreach (DataRow d in dtSelectedContact.Rows) { if (d["Phone"].ToString() == txtNumber.Text.ToString()) { return; } } DataRow dr = dtSelectedContact.NewRow(); dr[0] = txtName.Text.ToString(); dr[2] = txtNumber.Text.ToString(); dtSelectedContact.Rows.Add(dr); listSelectedContact.DataContext = null; listSelectedContact.DataContext = dtSelectedContact; listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]); txtName.Text = ""; txtNumber.Text = ""; } //是否是盲转窗体 if (isBlindTransCall) { btnOK_Click(null, null); } } else { lync.winCall.OpenDialogTiming(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } }
private void MenuItem_Click(object sender, RoutedEventArgs e) { if (Lync.winCall != null) { DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2); //不能同时发起两路通话 return; } List <CallItem> list = new List <CallItem>(); int index = -1; if (tabControlCall.SelectedIndex == 0) { list = listMissed.DataContext as List <CallItem>; index = listMissed.SelectedIndex; } else if (tabControlCall.SelectedIndex == 1) { list = listAnswered.DataContext as List <CallItem>; index = listAnswered.SelectedIndex; } else if (tabControlCall.SelectedIndex == 2) { list = listDialed.DataContext as List <CallItem>; index = listDialed.SelectedIndex; } else if (tabControlCall.SelectedIndex == 3) { list = listAll.DataContext as List <CallItem>; index = listAll.SelectedIndex; } if (index < 0) { return; } CallItem item = list[index]; MakeCallBusiness call = new MakeCallBusiness(); MemberType type; if (item.Phone.IndexOf("@") < 0) { type = MemberType.UC_IPPHONE; } else { type = MemberType.UC_ACCOUNT; } string str = ""; if (item.Phone.IndexOf(":") != -1) { str = item.Phone.Substring(item.Phone.IndexOf(":") + 1); } else { str = item.Phone; } //2015/8/24 UNICODE 转码 UTF8 //byte[] buffer1 = Encoding.UTF8.GetBytes(str.Trim().Replace(" ","")); //byte[] buffer2 = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, buffer1, 0, buffer1.Length); //string item1 = Encoding.UTF8.GetString(buffer2,0, buffer2.Length); //call.insertMember((int)type, new StringBuilder(item1)); call.insertMember((int)type, new StringBuilder(str)); if (call.startContextCall() == 0) { str = SingletonObj.LoginInfo.LyncName + ";" + str; Lync.winCall = new WinCall(Lync, str); Lync.winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; Lync.winCall.Show(); } else { Dialog.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error")); return; } }
private void CallForward_Click(object sender, RoutedEventArgs e) { if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null) { Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC")); return; } try { MakeCallBusiness call = new MakeCallBusiness(); STCallExData data = new STCallExData(); int iRet = 0; string buttonName = (sender as System.Windows.Controls.Button).Name; if (buttonName == "btnCallForwardUnCond") { //无条件呼叫前传 if ((bool)this.radCallForwardUnCondEn.IsChecked) { data.Num = this.txtCallForwardUnCond.Text.Trim(); if (IsValidPhoneNumber(data.Num) == false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } else if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error")); string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_2.png"); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data); if (iRet == 0) { string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_3.png"); //2015/8/11 一旦设置了无条件前转,则其他前转全部设置为关闭 data.Num = string.Empty; call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data); call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data); call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data); } } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data); if (iRet == 0) { string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_2.png"); } } } else if (buttonName == "btnCallForwardNoReply") { //不回复呼叫前转 this.lync.toolBar.GetFWDInfo(); if (lync.toolBar.isSetFWDUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radCallForwardNoReplyEn.IsChecked) { data.Num = this.txtCallForwardNoReply.Text.Trim(); if (IsValidPhoneNumber(data.Num) == false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } else if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data); } } } else if (buttonName == "btnCallForwardBusy") { //遇忙呼叫前转 this.lync.toolBar.GetFWDInfo(); if (lync.toolBar.isSetFWDUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radCallForwardBusyEn.IsChecked) { data.Num = this.txtCallForwardBusy.Text.Trim(); if (IsValidPhoneNumber(data.Num) == false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } else if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data); } } } else if (buttonName == "btnCallForwardOffline") { //离线呼叫前转 this.lync.toolBar.GetFWDInfo(); if (lync.toolBar.isSetFWDUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radCallForwardOfflineEn.IsChecked) { data.Num = this.txtCallForwardOffline.Text.Trim(); if (IsValidPhoneNumber(data.Num) == false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } else if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data); } } } else if (buttonName == "btnCallForwardDND") //DND取消了 2015/8/11 { //离线呼叫前转 if ((bool)this.radCallForwardDNDEn.IsChecked) { data.Num = this.txtCallForwardDND.Text.Trim(); if (IsValidPhoneNumber(data.Num) == false) { DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2); return; } else if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data); } } if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); Dialog.Show(StringHelper.FindLanguageResource("FWDFailed"), StringHelper.FindLanguageResource("error")); } else { Dialog.Show(StringHelper.FindLanguageResource("FWDSuccess"), StringHelper.FindLanguageResource("Success")); } } catch (System.Exception ex) { LogManager.SystemLog.Error(ex.ToString()); } }
//语音信箱转移 private void MailForward_Click(object sender, RoutedEventArgs e) { if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null) { Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC")); return; } try { MakeCallBusiness call = new MakeCallBusiness(); STCallExData data = new STCallExData(); int iRet = 0; string buttonName = (sender as System.Windows.Controls.Button).Name; if (buttonName == "btnVoiceForwardUnCond") { //无条件转语音邮箱 if ((bool)this.radVoiceForwardUnCondEn.IsChecked) { //data.Num = this.txtVoiceForwardUnCond.Text.Trim(); data.Num ="1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png"); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); if (iRet == 0) { string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_3.png"); //2015/8/11 一旦设置了无条件前转,则其他前转全部设置为关闭 data.Num = string.Empty; call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data); call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data); call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data); } } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); if (iRet == 0) { string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png"); } } } else if (buttonName == "btnVoiceForwardNoReply") { //无应答转语音邮箱 this.lync.toolBar.GetMailFrwInfo(); if (lync.toolBar.isSetVoiceMailUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radVoiceForwardNoReplyEn.IsChecked) { //data.Num = this.txtVoiceForwardNoReply.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data); } } } else if (buttonName == "btnVoiceForwardBusy") { //遇忙转语音邮箱 this.lync.toolBar.GetMailFrwInfo(); if (lync.toolBar.isSetVoiceMailUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radVoiceForwardBusyEn.IsChecked) { //data.Num = this.txtVoiceForwardBusy.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data); } } } else if (buttonName == "btnVoiceForwardOffline") { //离线转语音邮箱 this.lync.toolBar.GetMailFrwInfo(); if (lync.toolBar.isSetVoiceMailUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radVoiceForwardOfflineEn.IsChecked) { //data.Num = this.txtVoiceForwardOffline.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data); } } } else if (buttonName == "btnVoiceForwardDND") //DND不做了 2015/8/11 { //离线呼叫前转 if ((bool)this.radVoiceForwardDNDEn.IsChecked) { //data.Num = this.txtVoiceForwardDND.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); } } if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); //modify by jinyeqing Dialog.Show(StringHelper.FindLanguageResource("FWDMailFail"), StringHelper.FindLanguageResource("error")); } else { Dialog.Show(StringHelper.FindLanguageResource("FWDMailSuccess"), StringHelper.FindLanguageResource("Success")); } } catch (System.Exception ex) { LogManager.SystemLog.Error(ex.ToString()); } }
private void MenuItem_Click(object sender, RoutedEventArgs e) { if (Lync.winCall != null) { DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2); //不能同时发起两路通话 return; } List<CallItem> list = new List<CallItem>(); int index = -1; if (tabControlCall.SelectedIndex == 0) { list = listMissed.DataContext as List<CallItem>; index = listMissed.SelectedIndex; } else if (tabControlCall.SelectedIndex == 1) { list = listAnswered.DataContext as List<CallItem>; index = listAnswered.SelectedIndex; } else if (tabControlCall.SelectedIndex == 2) { list = listDialed.DataContext as List<CallItem>; index = listDialed.SelectedIndex; } else if (tabControlCall.SelectedIndex == 3) { list = listAll.DataContext as List<CallItem>; index = listAll.SelectedIndex; } if (index < 0) { return; } CallItem item = list[index]; MakeCallBusiness call = new MakeCallBusiness(); MemberType type; if (item.Phone.IndexOf("@") < 0) { type = MemberType.UC_IPPHONE; } else { type = MemberType.UC_ACCOUNT; } string str = ""; if (item.Phone.IndexOf(":") != -1) { str = item.Phone.Substring(item.Phone.IndexOf(":") + 1); } else { str = item.Phone; } //2015/8/24 UNICODE 转码 UTF8 //byte[] buffer1 = Encoding.UTF8.GetBytes(str.Trim().Replace(" ","")); //byte[] buffer2 = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, buffer1, 0, buffer1.Length); //string item1 = Encoding.UTF8.GetString(buffer2,0, buffer2.Length); //call.insertMember((int)type, new StringBuilder(item1)); call.insertMember((int)type, new StringBuilder(str)); if (call.startContextCall() == 0) { str = SingletonObj.LoginInfo.LyncName + ";" + str; Lync.winCall = new WinCall(Lync, str); Lync.winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; Lync.winCall.Show(); } else { Dialog.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error")); return; } }
public void StartLoadData() { try { UCUserInfo user = new UCUserInfo(); user = XmlHelper.GetUserConfig(); winOptionSetting.txtAccount.Text = user.UserID; winOptionSetting.comLang.SelectedIndex = Convert.ToInt32(user.Lang); winOptionSetting.txtPassword.Password = user.Password; winOptionSetting.txtPort.Text = user.Port; winOptionSetting.txtServer1.Text = user.Server; winOptionSetting.chkStart.IsChecked = user.AutoStart == "1" ? true : false; winOptionSetting.chkAvailable.IsChecked = user.Available; winOptionSetting.chkUnavailable.IsChecked = user.Unavailable; winOptionSetting.chkBusy.IsChecked = user.Busy; winOptionSetting.chkVoicemail.IsChecked = user.Voicemail; winOptionSetting.txtAvailable.Text = user.AvailableCallNumber; winOptionSetting.txtUnavailable.Text = user.UnavailableCallNumber; winOptionSetting.txtBusy.Text = user.BusyCallNumber; winOptionSetting.txtVoicemail.Text = user.VoicemailCallNumber; //设置呼叫前转信息 if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null) { return; } winOptionSetting.comMicrophone.SelectedIndex = GetMicrophone(); winOptionSetting.comSpeaker.SelectedIndex = GetSpeaker(); winOptionSetting.comCamera.SelectedIndex = GetCamera(); int iRet = (int)UCServiceRetvCode.UC_SDK_Success; ForwardServiceType type = ForwardServiceType.FORWARD_UNCONDITION; STCallExData data = new STCallExData(); MakeCallBusiness call = new MakeCallBusiness(); //无条件前传 iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radCallForwardUnCondEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); winOptionSetting.txtCallForwardUnCond.Text = data.Num; //遇忙前传 type = ForwardServiceType.FORWARD_ONBUSY; data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radCallForwardBusyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); winOptionSetting.txtCallForwardBusy.Text = data.Num; //无应答前传 type = ForwardServiceType.FORWARD_NOREPLY; data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radCallForwardNoReplyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); winOptionSetting.txtCallForwardNoReply.Text = data.Num; //离线前传 type = ForwardServiceType.FORWARD_OFFLINE; data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radCallForwardOfflineEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); winOptionSetting.txtCallForwardOffline.Text = data.Num; //modify by 00327190 2015/7/30 type = ForwardServiceType.VOICEMAIL_UNCONDITION; //无条件语音邮箱前转 data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radVoiceForwardUnCondEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); //winOptionSetting.txtVoiceForwardUnCond.Text = data.Num; //2015/8/24 // 无应答语音邮箱前转 type = ForwardServiceType.VOICEMAIL_NOREPLY; data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radVoiceForwardNoReplyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); //winOptionSetting.txtVoiceForwardNoReply.Text = data.Num; //2015/8/24 // 遇忙语音邮箱前转 type = ForwardServiceType.VOICEMAIL_ONBUSY; data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radVoiceForwardBusyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); //winOptionSetting.txtVoiceForwardBusy.Text = data.Num; //2015/8/24 // 离线语音邮箱前转 type = ForwardServiceType.VOICEMAIL_OFFLINE; data = new STCallExData(); iRet = call.GetCallExService((int)type, ref data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetCallExService error"); return; } winOptionSetting.radVoiceForwardOfflineEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true); //winOptionSetting.txtVoiceForwardOffline.Text = data.Num; //2015/8/24 } catch (System.Exception ex) { LogManager.SystemLog.Error(ex.ToString()); } }
//语音信箱转移 private void MailForward_Click(object sender, RoutedEventArgs e) { if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null) { Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC")); return; } try { MakeCallBusiness call = new MakeCallBusiness(); STCallExData data = new STCallExData(); int iRet = 0; string buttonName = (sender as System.Windows.Controls.Button).Name; if (buttonName == "btnVoiceForwardUnCond") { //无条件转语音邮箱 if ((bool)this.radVoiceForwardUnCondEn.IsChecked) { //data.Num = this.txtVoiceForwardUnCond.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png"); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); if (iRet == 0) { string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_3.png"); //2015/8/11 一旦设置了无条件前转,则其他前转全部设置为关闭 data.Num = string.Empty; call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data); call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data); call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data); } } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); if (iRet == 0) { string str = System.Windows.Forms.Application.StartupPath; lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png"); } } } else if (buttonName == "btnVoiceForwardNoReply") { //无应答转语音邮箱 this.lync.toolBar.GetMailFrwInfo(); if (lync.toolBar.isSetVoiceMailUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radVoiceForwardNoReplyEn.IsChecked) { //data.Num = this.txtVoiceForwardNoReply.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data); } } } else if (buttonName == "btnVoiceForwardBusy") { //遇忙转语音邮箱 this.lync.toolBar.GetMailFrwInfo(); if (lync.toolBar.isSetVoiceMailUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radVoiceForwardBusyEn.IsChecked) { //data.Num = this.txtVoiceForwardBusy.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data); } } } else if (buttonName == "btnVoiceForwardOffline") { //离线转语音邮箱 this.lync.toolBar.GetMailFrwInfo(); if (lync.toolBar.isSetVoiceMailUnCond1 == true) //如果设置了无条件前转,则不能设置其他前转 { Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error")); return; } else { if ((bool)this.radVoiceForwardOfflineEn.IsChecked) { //data.Num = this.txtVoiceForwardOffline.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data); } } } else if (buttonName == "btnVoiceForwardDND") //DND不做了 2015/8/11 { //离线呼叫前转 if ((bool)this.radVoiceForwardDNDEn.IsChecked) { //data.Num = this.txtVoiceForwardDND.Text.Trim(); data.Num = "1"; if (string.IsNullOrEmpty(data.Num)) { Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error")); return; } else { iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); } } else { data.Num = string.Empty; iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); } } if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); //modify by jinyeqing Dialog.Show(StringHelper.FindLanguageResource("FWDMailFail"), StringHelper.FindLanguageResource("error")); } else { Dialog.Show(StringHelper.FindLanguageResource("FWDMailSuccess"), StringHelper.FindLanguageResource("Success")); } } catch (System.Exception ex) { LogManager.SystemLog.Error(ex.ToString()); } }
/// <summary> /// 获取指定页数的数据 /// Access to the data of specified page /// </summary> /// <param name="strSearchKey">查询关键字</param> /// <param name="strSearchKey">Query keywords</param> void GetPageLyncContacts(string strSearchKey = "", int page = 0) { dtContact = new DataTable(); dtContact.Columns.Add("Name"); dtContact.Columns.Add("Url"); dtContact.Columns.Add("Phone"); if (dtSelectedContact.Columns.Count == 0) { dtSelectedContact.Columns.Add("Name"); dtSelectedContact.Columns.Add("Url"); dtSelectedContact.Columns.Add("Phone"); } MakeCallBusiness call = new MakeCallBusiness(); //Number of queries per query //每次查询的数量 int count = 100; int iSizeSTContactList = Marshal.SizeOf(typeof(STContactList)); int iSizeSTContact = Marshal.SizeOf(typeof(STContact)); int uiBufSize = (iSizeSTContactList + iSizeSTContact * (count - 1)); byte[] pSTContactList = new byte[uiBufSize]; UCServiceRetvCode iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, page * count, page * count + count - 1, pSTContactList); if (UCServiceRetvCode.UC_SDK_Success == iRet) { string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTContactList); byte[] tempInfoByte = new byte[iSizeSTContactList]; try { iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, page * count, page * count + count - 1, pSTContactList); if (UCServiceRetvCode.UC_SDK_Success == iRet) { Marshal.Copy(pSTContactList, 0, tempInfoIntPtr, (int)iSizeSTContactList); STContactList head = (STContactList)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContactList)); this.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString()); this.txtPage.Text = (page + 1).ToString(); for (int index = -1; index < (head.iTotal - 1) && index < count - 1; index++) { Marshal.Copy(pSTContactList, iSizeSTContactList + iSizeSTContact * index, tempInfoIntPtr, (int)iSizeSTContact); STContact item = (STContact)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContact)); if (item.name_ != null && item.name_ != "") { dtContact.Rows.Add(item.name_, string.IsNullOrEmpty(item.uri_) ? "" : item.uri_ + strLyncURI, item.mobile_); } } } } finally { Marshal.Release(tempInfoIntPtr); } } else { LogManager.SystemLog.Error("GetPageLyncContacts failed"); } #region 根据lync接口查询lync用户的联系人列表 //foreach (Microsoft.Lync.Model.Group.Group group in WinLync.LyncContactGroups) //{ // foreach (Contact contact in (ContactCollection)(group)) // { // int index = -1; // foreach (DataRow dr in dtContact.Rows) // { // if (dr["Url"].ToString() == contact.Uri) // { // index = 0; // } // } // if (index == -1) // { // string phone = ""; // List<object> list = contact.GetContactInformation(ContactInformationType.ContactEndpoints) as List<object>; // foreach (object point in list) // { // if (((Microsoft.Lync.Model.ContactEndpoint)point).Type == ContactEndpointType.WorkPhone) // { // phone = ((Microsoft.Lync.Model.ContactEndpoint)point).DisplayName; // } // } // string name = contact.GetContactInformation(ContactInformationType.DisplayName).ToString(); // dtContact.Rows.Add(name, contact.Uri, phone); // } // } //} #endregion }
/// <summary> /// 处理另一进程发过来的消息 /// </summary> /// <param name="cds"></param> void LyncMessageProcess(COPYDATASTRUCT cds) { try { LogManager.SystemLog.Debug(cds.cbData); if (cds.lpData == "LogOutUC")//注销UC { StartSignOutUC(); } else if (cds.lpData == "LoginUC")//登录 { if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null) { StartLoginUC(); } } else if (cds.lpData != "") { if (SingletonObj.LoginInfo == null) { Dialog.Show(StringHelper.FindLanguageResource("NoLogin"), StringHelper.FindLanguageResource("error")); return; } if (winCall == null) { string[] strList = cds.lpData.Split(';'); if (strList.Count((x) => { return x.IndexOf("phone-context") > -1 ? true : false; }) > 0) { List<string> strListTemp = new List<string>(); for (int i = 0; i < strList.Length; i++) { if (strList[i].IndexOf("phone-context") < 0) { strListTemp.Add(strList[i]); } } strList = new string[strListTemp.Count]; cds.lpData = ""; for (int i = 0; i < strListTemp.Count; i++) { cds.lpData += strListTemp[i] + ";"; strList[i] = strListTemp[i]; } cds.lpData = cds.lpData.Substring(0, cds.lpData.Length - 1); } MakeCallBusiness call = new MakeCallBusiness(); StringBuilder str = new StringBuilder(); string type = strList[0]; if (type == "VideoCall")//视频呼叫 { if (this.isHave == true) //有接听界面,则不允许做视频操作 { DialogShow.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"), 2); return; } else { if (strList.Length > 3) { Dialog.Show(StringHelper.FindLanguageResource("NoMultiplePersonVideo"), StringHelper.FindLanguageResource("error")); return; } if (toolBar.JointType == PhoneJointType.IPPhone_Device) { Dialog.Show(StringHelper.FindLanguageResource("NoSupportVideo"), StringHelper.FindLanguageResource("error")); return; } //call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2])); //winCall = new WinCall(this, cds.lpData); //winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; //winCall.Show(); //modify by 00327190 之前是只有上面隐掉的,会有问题,纯话机和UC账户要分开 2015/9/18 if (strList[2].IndexOf("@") != -1) { call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2])); winCall = new WinCall(this, cds.lpData); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); } else //如果是纯数字,则再分能不能查到对应的UC用户 2015/9/21 { StringBuilder ucName = new StringBuilder(100); call.GetUCAccountByPhoneNo(strList[2], ucName); if (ucName.ToString() == "") //纯话机 2015/9/21 { call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(strList[2])); winCall = new WinCall(this, cds.lpData); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); } else { call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2])); winCall = new WinCall(this, cds.lpData); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); } } } } else { //modify byjinyeqing 2015/6/3 多于20人不可以显示出来 if (strList.Length > 21) //第一行是call 所以应该是21 { DialogShow.Show(StringHelper.FindLanguageResource("somanypeople"), StringHelper.FindLanguageResource("error"), 2); return; } if (strList.Length == 3) //两人会话的操作(逻辑上为了与多人会议区别开来 modify by jinyeqing 2015/6/19) { str = new StringBuilder(strList[2].Substring(strList[2].IndexOf(':') + 1).TrimEnd('>')); string a = ";" + str.ToString().Trim(); if (boolnum(str.ToString().Trim()) == false) //不为纯数字就报警 ,若为纯数字,可能为话机用户,这里就不做和UC匹配的校验 //if (call.insertMember((int)MemberType.UC_ACCOUNT, str) != 0) //moidify by jinyeqing 2015/6/8 以前没有if判断 { if (call.insertMember((int)MemberType.UC_ACCOUNT, str) != 0) //if (call.GetUCAccountByPhoneNo(str.ToString(), ucName) == "" || call.GetUCAccountByPhoneNo(str.ToString(), ucName) == null) { string message = str + " " + StringHelper.FindLanguageResource("NoSuchUCAccount"); DialogShow.Show(message, StringHelper.FindLanguageResource("error"), 2); cds.lpData = cds.lpData.Replace(a, ""); this.isUcCount = false; call.startContextCall(); return; } } else //纯数字能找到UC账户的,就把数字替换成UCname { StringBuilder ucName = new StringBuilder(100); call.GetUCAccountByPhoneNo(str.ToString(), ucName); string strTemp = null; if (ucName.ToString() == "") { strTemp = str.ToString(); call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(strTemp)); } else { strTemp = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); call.insertMember((int)MemberType.UC_ACCOUNT, ucName); cds.lpData = cds.lpData.Replace(str.ToString().Trim(), strTemp); } } if (call.startContextCall() == 0) { winCall = new WinCall(this, cds.lpData.Substring(cds.lpData.IndexOf(';') + 1)); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); } else { DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2); return; } } else //三人至20人的会议 { if (this.isHave == true) //有接听界面,则不允许做会议操作 { DialogShow.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"), 2); return; } else { for (int index = 2; index < strList.Length; index++) { str = new StringBuilder(strList[index].Substring(strList[index].IndexOf(':') + 1).TrimEnd('>')); string a = ";" + str.ToString().Trim(); StringBuilder ucName = new StringBuilder(100); // call.insertMember((int)MemberType.UC_ACCOUNT, str); //modify by 00327190 之前是只有上面隐掉的,会有问题,纯话机和UC账户要分开 2015/9/18 if (str.ToString().IndexOf("@") != -1) { call.insertMember((int)MemberType.UC_ACCOUNT, str); } else //如果是纯数字,则再分能不能查到对应的UC用户 2015/9/21 { call.GetUCAccountByPhoneNo(str.ToString(), ucName); if (ucName.ToString() == "") //纯话机 { call.insertMember((int)MemberType.UC_IPPHONE, str); } else { call.insertMember((int)MemberType.UC_ACCOUNT, ucName); } } } call.startContextCall(); winCall = new WinCall(this, cds.lpData.Substring(cds.lpData.IndexOf(';') + 1)); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); } } } } else { DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2); //不能同时发起两路通话 return; } } } catch (System.Exception ex) { LogManager.SystemLog.Error(ex.ToString()); } }
private void button_Click(object sender, RoutedEventArgs e) { Image img = ((sender as Button).Content as StackPanel).Children[0] as Image; if (img.Tag.ToString() == "call") { if (txtNumber.Text.ToString()=="") { return; } if (Lync.winCall!=null) { this.Close(); Dialog.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error")); return; } //拨号 MakeCallBusiness call = new MakeCallBusiness(); StringBuilder ucName = new StringBuilder(100); call.GetUCAccount(txtNumber.Text.ToString(), ucName); string str = null; if (ucName.ToString()=="") { str = txtNumber.Text.ToString(); call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(str)); } else { str = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); call.insertMember((int)MemberType.UC_ACCOUNT, ucName); } if (call.startContextCall() == 0) //modify by 00327190 2015/6/18 只要返回值不为0,就不能执行以下操作 { this.Close(); WinCall winCall = new WinCall(Lync, SingletonObj.LoginInfo.LyncName + ";" + str.ToString()); winCall.callType = CallHistoryType.HISTORY_CALL_DIALED; winCall.Show(); Lync.winCall = winCall; } else { this.Close(); DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2); return; } } else if (img.Tag.ToString() == "back") { if (txtNumber.Text.Length > 0) { txtNumber.Text = txtNumber.Text.Substring(0, txtNumber.Text.Length - 1); } } else { txtNumber.Text = txtNumber.Text + img.Tag.ToString(); txtNumber.Focus(); txtNumber.Select(txtNumber.Text.Length, 0); } }
/// <summary> /// 获取前两百条数据 /// </summary> /// <param name="strSearchKey">查询关键字</param> void GetAllLyncContacts(string strSearchKey = "", int page = 0) { dtContact = new DataTable(); dtContact.Columns.Add("Name"); dtContact.Columns.Add("Url"); dtContact.Columns.Add("Phone"); if (dtSelectedContact.Columns.Count == 0) { dtSelectedContact.Columns.Add("Name"); dtSelectedContact.Columns.Add("Url"); dtSelectedContact.Columns.Add("Phone"); } MakeCallBusiness call = new MakeCallBusiness(); int maxCount = 200; //最多查询的数量 int count = 100; //每次查询的数量 int iSizeSTContactList = Marshal.SizeOf(typeof(STContactList)); int iSizeSTContact = Marshal.SizeOf(typeof(STContact)); int uiBufSize = (iSizeSTContactList + iSizeSTContact * (count - 1)); byte[] pSTContactList = new byte[uiBufSize]; UCServiceRetvCode iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, page * count, page * count + count - 1, pSTContactList); if (UCServiceRetvCode.UC_SDK_Success == iRet) { string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTContactList); byte[] tempInfoByte = new byte[iSizeSTContactList]; try { Marshal.Copy(pSTContactList, 0, tempInfoIntPtr, (int)iSizeSTContactList); STContactList head = (STContactList)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContactList)); this.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString()); this.txtPage.Text = (page + 1).ToString(); //for (int index = -1; index < head.iTotal - 1 && index < count - 1; index++) //{ // Marshal.Copy(pSTContactList, iSizeSTContactList + iSizeSTContact * index, tempInfoIntPtr, (int)iSizeSTContact); // STContact item = (STContact)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContact)); // dtContact.Rows.Add(item.name_, string.IsNullOrEmpty(item.uri_) ? "" : item.uri_ + strLyncURI, item.mobile_); //} //if (head.iTotal > count)//继续查询 //{ //最多查询maxCount条数据 if (head.iTotal < maxCount) { maxCount = head.iTotal; } int num = maxCount % count != 0 ? (maxCount / count + 1) : maxCount / count;//需要查询的次数 for (int iNum = 1; iNum < num; iNum++) { iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, iNum * count, iNum * count + count - 1, pSTContactList); if (UCServiceRetvCode.UC_SDK_Success == iRet) { Marshal.Copy(pSTContactList, 0, tempInfoIntPtr, (int)iSizeSTContactList); head = (STContactList)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContactList)); for (int index = -1; index < (maxCount - iNum * count - 1) && index < count - 1; index++) { Marshal.Copy(pSTContactList, iSizeSTContactList + iSizeSTContact * index, tempInfoIntPtr, (int)iSizeSTContact); STContact item = (STContact)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContact)); if (item.name_ != null && item.name_ != "") { dtContact.Rows.Add(item.name_, string.IsNullOrEmpty(item.uri_) ? "" : item.uri_ + strLyncURI, item.mobile_); } } } else { LogManager.SystemLog.Error("GetAllLyncContacts failed"); break; } } //} } finally { Marshal.Release(tempInfoIntPtr); } } else { LogManager.SystemLog.Error("GetAllLyncContacts failed"); } #region 根据lync接口查询lync用户的联系人列表 //foreach (Microsoft.Lync.Model.Group.Group group in WinLync.LyncContactGroups) //{ // foreach (Contact contact in (ContactCollection)(group)) // { // int index = -1; // foreach (DataRow dr in dtContact.Rows) // { // if (dr["Url"].ToString() == contact.Uri) // { // index = 0; // } // } // if (index == -1) // { // string phone = ""; // List<object> list = contact.GetContactInformation(ContactInformationType.ContactEndpoints) as List<object>; // foreach (object point in list) // { // if (((Microsoft.Lync.Model.ContactEndpoint)point).Type == ContactEndpointType.WorkPhone) // { // phone = ((Microsoft.Lync.Model.ContactEndpoint)point).DisplayName; // } // } // string name = contact.GetContactInformation(ContactInformationType.DisplayName).ToString(); // dtContact.Rows.Add(name, contact.Uri, phone); // } // } //} #endregion }