private void SearchButton_Click(object sender, RoutedEventArgs e) { try { SearchStartTime = DateTime.Now; SearchResultListBox.Items.Clear(); SearchResultListBox.Items.Add("Search ..."); if (PeopleSearchRadioButton.IsChecked == true) { ContactManager.BeginSearch(SearchKeywordTextBox.Text, SearchProviders.Default, SearchFields.AllFields, SearchOptions.Default, 50, SearchCallback, new object[] { SearchKeywordTextBox.Text, SearchProviders.Default }); } else if (SkillSearchRadioButton.IsChecked == true) { ContactManager.BeginSearch(SearchKeywordTextBox.Text, SearchProviders.Expert, SearchFields.AllFields, SearchOptions.Default, 50, SearchCallback, new object[] { SearchKeywordTextBox.Text, SearchProviders.Expert }); } } catch (Exception ex) { SearchStatisticsTextBox.Text = "Exception: " + ex.Message; } }
public async Task <SkypeUser> FindUser(string userEmail) { ContactManager manager = client.ContactManager; TaskCompletionSource <SearchResults> resultTaskCompletionSource = new TaskCompletionSource <SearchResults>(); manager.BeginSearch( userEmail, SearchProviders.Default, SearchFields.EmailAddresses, SearchOptions.ContactsOnly, 64, (x) => { try { if (x.IsCompleted) { resultTaskCompletionSource.SetResult(manager.EndSearch(x)); return; } else { resultTaskCompletionSource.SetException( new InvalidOperationException("Callback was raised but search wasn't finished.")); return; } } catch (Exception e) { resultTaskCompletionSource.SetException(e); return; } }, null); SearchResults results = await resultTaskCompletionSource.Task; if (results.Contacts.Count == 1) { SkypeUser user = new SkypeUser(results.Contacts[0]); this.AddUserToSubscription(user); return(user); } else { throw new InvalidOperationException("Multiple users were found with the specified email."); } }
public static void ImportContacts(LyncClient _client) { ContactManager _contactManager = _client.ContactManager; XmlDocument doc = new XmlDocument(); if (!File.Exists("BuddyList.xml")) { Console.WriteLine("BuddyList.xml does not exist."); Environment.Exit(0); } doc.Load("BuddyList.xml"); XmlElement root = doc.DocumentElement; XmlNodeList groups = root.SelectNodes("ContactGroup"); GroupCollection current_groups = _contactManager.Groups; var current_group_colelction = new List <string>(); foreach (Group group in current_groups) { current_group_colelction.Add(group.Name); } foreach (XmlNode group in groups) { String group_name = group.ChildNodes.Item(0).FirstChild.Value; String group_type = group.Attributes.GetNamedItem("type").InnerText; if (group_type == "DistributionGroup") { _contactManager.BeginSearch( group_name, (ar) => { SearchResults searchResults = _contactManager.EndSearch(ar); if (searchResults.Groups.Count > 0) { Console.WriteLine(searchResults.Groups.Count.ToString() + " found"); foreach (Group dg in searchResults.Groups) { Console.WriteLine(System.Environment.NewLine + dg.Name); DistributionGroup dGroup = dg as DistributionGroup; if (!current_groups.Contains(dGroup)) { if (group_name == dGroup.Name) { _contactManager.BeginAddGroup(dGroup, null, null); } } } } else { Console.WriteLine("No groups found for search on " + group_name); } }, null); } else if (group_type == "FavoriteContacts" || group_type == "FrequentContacts") { //skip Favourites as it always exists continue; } else { //handle custom groups and favourites normally //check first if group exists or error if (!current_group_colelction.Contains(group_name)) { //continue to adding new group _contactManager.BeginAddGroup(group_name, null, null); Console.WriteLine(group_name + " created."); } else { //show message and do not try to create group Console.WriteLine(group_name + " already exists."); } } } //add the contacts to each group of typer Custom or Favourites System.Threading.Thread.Sleep(2000); Console.WriteLine("Importing contacts..."); foreach (XmlNode group in groups) { if (group.Attributes.GetNamedItem("type").InnerText != "DistributionGroup") { foreach (Group igroup in current_groups) { if (igroup.Name == group.ChildNodes.Item(0).FirstChild.Value) { Console.WriteLine(igroup.Name + " - " + igroup.Type.ToString()); //add contacts foreach (XmlNode contact in group.ChildNodes.Item(1).ChildNodes) { Console.WriteLine(contact.InnerText); Contact c = _contactManager.GetContactByUri(contact.InnerText); if (!igroup.Contains(c)) { igroup.BeginAddContact(c, null, null); } } } } } } Console.WriteLine("Finished import."); }