public IEnumerable <Booking> GetBookings() { var cmd = new CodecCommand("Bookings", "List"); cmd.Args.Add("Days", 1); cmd.Args.Add("DayOffset", 0); var bookings = new List <Booking>(); var response = Codec.SendCommand(cmd); if (response.Code != 200) { CloudLog.Error("Error getting bookings search, Codec Responded with {0} code", response.Code); return(bookings); } var result = response.Xml.Element("Command").Element("BookingsListResult"); Debug.WriteInfo("Bookings List"); Debug.WriteNormal(Debug.AnsiPurple + result + Debug.AnsiReset); if (result.Attribute("status").Value == "Error") { var message = result.Element("Reason").Value; CloudLog.Error("Error getting bookings search: {0}", message); return(bookings); } bookings.AddRange(result.Elements("Booking").Select(data => new Booking(data))); return(bookings.ToArray()); }
internal CallHistoryResults Get(CodecCommand cmd) { #if true Debug.WriteInfo("Getting Call History"); foreach (var arg in cmd.Args) { Debug.WriteInfo(" " + arg.Name, arg.Value.ToString()); } #endif var response = _codec.SendCommand(cmd); Debug.WriteInfo(response.Xml.ToString()); var result = response.Xml.Element("Command").Element("CallHistoryGetResult"); var info = result.Element("ResultInfo"); var offset = int.Parse(info.Element("Offset").Value); var limit = int.Parse(info.Element("Limit").Value); var callHistoryItems = result.Elements("Entry").Select(item => new CallHistoryItem(_codec, item)).ToList(); #if DEBUG Debug.WriteSuccess("CallHistory Results", callHistoryItems.Count.ToString()); foreach (var item in callHistoryItems) { Debug.WriteInfo(item.ToString()); } #endif return(new CallHistoryResults(callHistoryItems, offset, limit)); }
public string CreatePhoneBookFolder(string name) { var cmd = new CodecCommand("/Phonebook/Folder", "Add"); cmd.Args.Add("Name", name); var result = _codec.SendCommand(cmd); return(result.Xml.Element("Command").Elements().First().Element("Name").Value); }
public void ExternalSourceAdd(string sourceId, string sourceName, int connectorId, ExternalSourceType type) { var cmd = new CodecCommand("UserInterface/Presentation/ExternalSource", "Add"); cmd.Args.Add("ConnectorId", connectorId); cmd.Args.Add("SourceIdentifier", sourceId); cmd.Args.Add("Name", sourceName); cmd.Args.Add("Type", type.ToString()); _codec.SendCommand(cmd); }
public CallHistoryResults Get(Filter filter, int offset, int limit) { var cmd = new CodecCommand("CallHistory", "Get"); cmd.Args.Add(filter); cmd.Args.Add("Offset", offset); cmd.Args.Add("Limit", limit); cmd.Args.Add("DetailLevel", "Full"); return(Get(cmd)); }
public void CreatePhoneBookEntry(string name, string folderId, string email, string number) { var cmd = new CodecCommand("/Phonebook/Contact", "Add"); cmd.Args.Add("Name", name); cmd.Args.Add("FolderId", folderId); cmd.Args.Add("Number", email); cmd.Args.Add("Protocol", "SIP"); var result = _codec.SendCommand(cmd); var id = result.Xml.Element("Command").Elements().First().Element("Name").Value; cmd = new CodecCommand("/Phonebook/ContactMethod", "Add"); cmd.Args.Add("ContactId", id); cmd.Args.Add("Number", number); cmd.Args.Add("Protocol", "Auto"); _codec.SendCommand(cmd); }
public void Authenticate(ParticipantRole role, string pin) { var cmd = new CodecCommand("Conference/Call", "AuthenticationResponse"); cmd.Args.Add("CallId", Id); cmd.Args.Add(role); if (!string.IsNullOrEmpty(pin)) { cmd.Args.Add("Pin", pin); } var response = Codec.SendCommand(cmd); #if DEBUG Debug.WriteInfo("Response from authenticate", response.Code.ToString()); if (response.Xml != null) { Debug.WriteNormal(response.Xml.ToString()); } #endif }
internal void GetBookingsAsync() { var cmd = new CodecCommand("Bookings", "List"); cmd.Args.Add("Days", 1); cmd.Args.Add("DayOffset", 0); Codec.SendCommandAsync(cmd, (id, ok, response) => { var bookings = new List <Booking>(); #if DEBUG Debug.WriteInfo("Bookings List"); Debug.WriteNormal(Debug.AnsiPurple + response + Debug.AnsiReset); #endif if (response.Attribute("status").Value == "Error") { var message = response.Element("Reason").Value; CloudLog.Error("Error getting bookings search (async): {0}", message); } bookings.AddRange(response.Elements("Booking").Select(data => new Booking(data))); _bookings = bookings; if (BookingsUpdated == null) { return; } try { BookingsUpdated(Codec, bookings); } catch (Exception e) { CloudLog.Exception(e, "Error calling event handler"); } }); }
public PhonebookSearchResults Search(PhonebookType type, string searchString, int limit, int offset, string folderId) { var cmd = new CodecCommand("Phonebook", "Search"); cmd.Args.Add(type); cmd.Args.Add("SearchString", searchString); cmd.Args.Add("Limit", limit); cmd.Args.Add("Offset", offset); cmd.Args.Add("Recursive", !string.IsNullOrEmpty(searchString)); if (!string.IsNullOrEmpty(folderId)) { cmd.Args.Add("FolderId", folderId); } #if DEBUG Debug.WriteInfo("Searching Phonebook"); var sw = new Stopwatch(); sw.Start(); foreach (var arg in cmd.Args) { Debug.WriteInfo(" " + arg.Name, arg.Value.ToString()); } #endif var response = _codec.SendCommand(cmd); #if DEBUG Debug.WriteInfo("Phonbook search response", "Code = {0}, Stopwatch = {1}", response.Code, sw.ElapsedMilliseconds); #endif if (response.Code != 200) { CloudLog.Error("Error getting phonebook search, Codec Responded with {0} code", response.Code); return(new PhonebookSearchResults(this, type, searchString, folderId, "Codec returned Error code: {0}", response.Code)); } var result = response.Xml.Element("Command").Element("PhonebookSearchResult"); if (result.Attribute("status").Value == "Error") { var message = result.Element("Reason").Value; CloudLog.Error("Error getting phonebook search: {0}", message); return(new PhonebookSearchResults(this, type, searchString, message)); } if (result.Attribute("status").Value == "OK" && result.IsEmpty) { return(new PhonebookSearchResults(this, type, searchString)); } try { var folders = result.Elements("Folder"); var contacts = result.Elements("Contact"); var info = result.Element("ResultInfo"); var totalRows = int.Parse(info.Element("TotalRows").Value); var items = folders.Select( xElement => new PhonebookFolder(_codec, xElement, type)).Cast <PhonebookItem>().ToList(); items.AddRange( contacts.Select( xElement => new PhonebookContact(_codec, xElement, type)).Cast <PhonebookItem>()); foreach (var folder in folders) { _folderNames[folder.Element("LocalId").Value] = folder.Element("Name").Value; } #if DEBUG Debug.WriteSuccess("Search Results", "{0} to {1} of {2}", offset + 1, offset + items.Count, totalRows); foreach (var phonebookItem in items) { Debug.WriteSuccess(phonebookItem.Type.ToString(), "{0} ({1}/{2})", phonebookItem.Name, phonebookItem.Id, phonebookItem.ParentId); } sw.Stop(); Debug.WriteInfo("Phonbook search returning", "Count = {0}, Stopwatch = {1}", items.Count, sw.ElapsedMilliseconds); #endif if (!String.IsNullOrEmpty((string)cmd.Args.First(a => a.Name == "SearchString").Value)) { return(new PhonebookSearchResults(this, type, searchString, folderId, items, offset, limit, totalRows, string.Empty, string.Empty)); } foreach (var element in result.Elements()) { string currentFolderId; switch (element.Name) { case "Contact": if (element.Element("FolderId") != null) { currentFolderId = element.Element("FolderId").Value; return(new PhonebookSearchResults(this, type, searchString, folderId, items, offset, limit, totalRows, currentFolderId, _folderNames[currentFolderId])); } return(new PhonebookSearchResults(this, type, searchString, folderId, items, offset, limit, totalRows, string.Empty, string.Empty)); case "Folder": if (element.Element("ParentFolderId") != null) { currentFolderId = element.Element("ParentFolderId").Value; return(new PhonebookSearchResults(this, type, searchString, folderId, items, offset, limit, totalRows, currentFolderId, _folderNames[currentFolderId])); } return(new PhonebookSearchResults(this, type, searchString, folderId, items, offset, limit, totalRows, string.Empty, string.Empty)); } } return(new PhonebookSearchResults(this, type, searchString, folderId, items, offset, limit, totalRows, string.Empty, string.Empty)); } catch (Exception e) { var message = string.Format("Error parsing phonebook data, {0}", e.Message); if (e is ThreadAbortException) { message = "Thread was aborted"; } else { CloudLog.Error(message); } return(new PhonebookSearchResults(this, type, searchString, message)); } }