static private void StatusChangedCBMethod(int _state, ref STContact _contact) { if (StatusChanged != null) { StatusChanged(_state, _contact); } LogManager.SystemLog.Debug(string.Format("StatusChangedCBMethod name = {0}", _contact.ucAcc_)); }
public int GetContactInfo(StringBuilder _Account, ref STContact _pContactInfo) { try { LogManager.SystemLog.Debug(string.Format("Start UC_SDK_GetContactInfo")); int iRet = UCInterface.UC_SDK_GetContactInfo(_Account, ref _pContactInfo); if (iRet != 0) { LogManager.SystemLog.Error(string.Format("Start UC_SDK_GetContactInfo error {0}", iRet)); return(iRet); } LogManager.SystemLog.Debug(string.Format("End UC_SDK_GetContactInfo")); return(iRet); } catch (Exception ex) { LogManager.SystemLog.Debug(ex.ToString()); return(-1); } }
//获取本人和对方的话机号码 //get the phoneNos of your own and caller's private void GetPhone() { //7/28 UserConfigBusiness conf = new UserConfigBusiness(); STContact con = new STContact(); int iRet = conf.GetContactInfo(new StringBuilder(SingletonObj.LoginInfo.UserID), ref con); if (iRet == 0) { UcPhoneNo = con.ipphone1_; } string name1 = StringHelper.GetSubString(callName); int iRet1 = conf.GetContactInfo(new StringBuilder(name1), ref con); if (iRet1 == 0) { UcPhoneNo1 = con.ipphone1_; } else //modify by 00327190 2015/9/17 纯话机用户拨打Lync { UcPhoneNo1 = name1; } }
public extern static int UC_SDK_GetContactInfo(StringBuilder _Account, ref STContact _pContactInfo);
/// <summary> /// 设置呼叫前传 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void BtnFWD_Click(object sender, EventArgs e) { try { //通话时不能更改话机联动状态 //You can't change joint type in a call if (Lync.winCall != null) { DialogShow.Show(StringHelper.FindLanguageResource("CannotchangeFWDincall"), StringHelper.FindLanguageResource("error"), 2); return; } else { GetFWDInfo(); UserConfigBusiness conf = new UserConfigBusiness(); STContact con = new STContact(); int iRet = conf.GetContactInfo(new StringBuilder(SingletonObj.LoginInfo.UserID), ref con); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetContactInfo error"); return; } STCallExData data = new STCallExData(); if (!isSetFWDUnCond) { if (string.IsNullOrEmpty(con.mobile_)) { LogManager.SystemLog.Warn("user mobile is null"); Dialog.Show(StringHelper.FindLanguageResource("NoMoblePhone"), StringHelper.FindLanguageResource("error")); return; } data.Num = con.mobile_; LogManager.SystemLog.Info(string.Format("user mobile is {0}", data.Num)); iRet = call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); return; } //查询设置结果 GetFWDInfo(); if (isSetFWDUnCond) { Dialog.Show(StringHelper.FindLanguageResource("FWDSuccess"), StringHelper.FindLanguageResource("Success")); } else { Dialog.Show(StringHelper.FindLanguageResource("FWDFailed"), StringHelper.FindLanguageResource("error")); } } else { iRet = call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); return; } //查询设置结果 GetFWDInfo(); if (!isSetFWDUnCond) { Dialog.Show(StringHelper.FindLanguageResource("CancelFWDSuccess"), StringHelper.FindLanguageResource("Success")); } else { Dialog.Show(StringHelper.FindLanguageResource("CancelFWDFailed"), StringHelper.FindLanguageResource("error")); } } } } catch (System.Exception ex) { LogManager.SystemLog.Error(ex.ToString()); } }
/// <summary> /// 语音邮箱呼叫前传 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void BtnMail_Click(object sender, EventArgs e) { //语音邮箱 //通话时不能更改话机联动状态 //You can't change joint type in a call if (Lync.winCall != null) { DialogShow.Show(StringHelper.FindLanguageResource("Cannotchangemailincall"), StringHelper.FindLanguageResource("error"), 2); return; } else { GetMailFrwInfo(); //7/30 先查询语音邮箱配置 UserConfigBusiness conf = new UserConfigBusiness(); STContact con = new STContact(); int iRet = conf.GetContactInfo(new StringBuilder(SingletonObj.LoginInfo.UserID), ref con); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("GetContactInfo error"); return; } //7/30 STCallExData data = new STCallExData(); //int iRet = 0; if (!isSetVoiceMailUnCond) { //if (string.IsNullOrEmpty(con.email_)) //{ // LogManager.SystemLog.Warn("email_ is null"); // Dialog.Show(StringHelper.FindLanguageResource("NoVoicemail"), StringHelper.FindLanguageResource("error")); // return; //} //data.Num = con.email_; //2015/8/13 data.Num = "1"; LogManager.SystemLog.Info(string.Format("email_ is {0}", data.Num)); iRet = call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); isSetVoiceMailUnCond = false; Dialog.Show(StringHelper.FindLanguageResource("FWDMailFail"), StringHelper.FindLanguageResource("error")); return; } else { GetMailFrwInfo(); if (isSetVoiceMailUnCond == true) { Dialog.Show(StringHelper.FindLanguageResource("FWDMailSuccess"), StringHelper.FindLanguageResource("Success")); } else { Dialog.Show(StringHelper.FindLanguageResource("FWDMailFail"), StringHelper.FindLanguageResource("error")); } } } else { iRet = call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data); if (iRet != (int)UCServiceRetvCode.UC_SDK_Success) { LogManager.SystemLog.Error("SetCallExService error"); isSetVoiceMailUnCond = true; Dialog.Show(StringHelper.FindLanguageResource("CancelFWDMailFail"), StringHelper.FindLanguageResource("error")); return; } else { GetMailFrwInfo(); if (!isSetVoiceMailUnCond) { Dialog.Show(StringHelper.FindLanguageResource("CancelFWDMailSuccess"), StringHelper.FindLanguageResource("Success")); } else { Dialog.Show(StringHelper.FindLanguageResource("CancelFWDMailFail"), StringHelper.FindLanguageResource("error")); } } } } }
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; } }
/// <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 }