/// <summary> /// Возвращает указанное сообщение /// </summary> /// <param name="messageId">id сообщения</param> /// <returns></returns> public static Message GetMessage(string messageId) { System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; //формировании url запроса string reqURL = url + "messages/" + messageId;// /v1/messages/<id сообщения>/ //отправка запроса на сервер var client = new RestClient(reqURL); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic dynObj = JsonConvert.DeserializeObject(response.Content);//парсим json if (dynObj.status == "success") { Message message = new Message { ID = dynObj.data.id, text = dynObj.data.text, type = dynObj.data.type, read = Boolean.Parse(dynObj.data.read.ToString()), created = DateTimeOffset.ParseExact(dynObj.data.created.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHour(Configer.GetOffset()), clientID = dynObj.data.client_id, transport = dynObj.data.transport, }; return(message); } else { return(null); } }
/// <summary> /// Выбирает весь список клиентов /// </summary> /// <returns></returns> private List <Client> GetId() { try { List <Client> Clients = new List <Client>(); var client = new RestClient("https://api.chat2desk.com/v1/clients/"); var request = new RestRequest(Method.GET); // request.AddHeader("postman-token", "724df9c3-0411-af74-62f0-df48cc2aad9f"); // request.AddHeader("cache-control", "no-cache"); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic dynObj = JsonConvert.DeserializeObject(response.Content); foreach (dynamic C in dynObj.data) { Client c = new Client() { id = C.id }; Clients.Add(c); } return(Clients); } catch (JsonReaderException ex) { Console.WriteLine("Ошибка при получении списка клиентов: ", ex.Message); return(null); } }
/// <summary> /// Помечает указанное сообщение как прочитанное или непрочитанное /// </summary> /// <param name="messageId">id сообщения</param> /// <param name="read">статус</param> /// <returns></returns> public static bool SetRead(string messageId, bool read) { //формировании url запроса string reqURL = url + "messages/" + messageId + "/";// /v1/messages/<id сообщения>/ string readState = string.Empty; if (read) { readState = "read";// /v1/messages/<id сообщения>/read } else { readState = "unread";// /v1/messages/<id сообщения>/unread } reqURL += readState; //отправка запроса на сервер var client = new RestClient(reqURL); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic dynObj = JsonConvert.DeserializeObject(response.Content); //парсим json if (dynObj.status == "success") //если операция успешна { return(true); } else { return(false); } }
public static Dialog Get(int id) {//возвращает диалог Dialog dlg = new Dialog(); var client = new RestClient(Rest + id.ToString()); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic DynObj = JsonConvert.DeserializeObject(response.Content); dynamic dialog = DynObj.data; if (DynObj == null || DynObj.status == "error") { dlg.error = "Такого диалога не существует или произошла ошибка в запросе."; return(dlg); } dlg.ID = dialog.id; dlg.state = dialog.state; dlg.begin = DateTimeOffset.ParseExact(dialog.begin.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHours(Configer.GetOffset()); if (dlg.end != null) { dlg.end = DateTimeOffset.ParseExact(dialog.end.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHours(Configer.GetOffset()); } return(dlg); }
/// <summary> /// Метод SetClient Изменяет данные о клиенте. если параметр пуст, то нужно отправлять "" /// </summary> /// <param name="Id"></param> /// <param name="nickname"></param> /// <param name="comment"></param> /// <param name="extra_comment_1"></param> /// <param name="extra_comment_2"></param> /// <param name="extra_comment_3"></param> /// <returns></returns> public bool ChangeClient(int Id, string nickname, string extra_comment_1, string extra_comment_2) { int flag = 0; flag = GetIdClient(Id);// есть ли такой id if (Id >= 0) { if (flag == 1) { int f = 0; string query = "{";// для тела запроса var client = new RestClient(Rest + Id.ToString()); var request = new RestRequest(Method.PUT); request.AddHeader("cache-control", "no-cache"); request.AddHeader("content-type", "application/json"); request.AddHeader("authorization", Configer.GetToken()); // формирую строку запроса. если поле имеет пустые кавыки, то параметр игнорируем. if (nickname != "") { query += "\n\n \"nickname\": \"" + nickname + "\""; f = 1; } if (extra_comment_1 != "") { if (f != 0) { query += ","; } query += "\n \"extra_comment_1\": \"" + extra_comment_1 + "\""; f = 1; } if (extra_comment_2 != "") { if (f != 0) { query += ","; } query += "\n \"extra_comment_2\": \"" + extra_comment_2 + "\"\n"; } query += "}";// для тела запроса request.AddParameter("application/json", query, ParameterType.RequestBody); IRestResponse response = client.Execute(request); if (response.ErrorException != null)//произошла ли ошибка { Console.WriteLine("Исключение в методе SetClient() {0}", response.ErrorMessage); return(false); } } else if (flag == -1) { return(false); //если нет такого id то false } } return(true); }
public Client GetClient(int Id) { int f = 0; f = GetIdClient(Id); Client Clients = new Client(); if (f != -1) { string[] transport = new string[5]; int Count = 0; var client = new RestClient(Rest + Id.ToString()); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic dynObj = JsonConvert.DeserializeObject(response.Content); dynamic d = dynObj.data; Clients.id = Id.ToString(); Clients.name = d.name; Clients.phone = d.phone; Clients.assigned_name = d.assigned_name; Clients.avatar = d.avatar; Clients.region_id = d.region_id; Clients.country_id = d.country_id; Clients.external_id = d.external_id; Clients.extra_comment_1 = d.extra_comment_1; Clients.extra_comment_2 = d.extra_comment_2; Clients.extra_comment_3 = d.extra_comment_3; dynamic transports = dynObj.data.channels; foreach (dynamic t in transports)//так как канал это "массив", прогоняем и его в цикле { transport[Count] = t.transports.ToString(); Count++; } Clients.transports = new string[Count];//выделяю память для объекта Client for (int i = 0; i < Count; i++) { Clients.transports[i] = transport[i];//записываю каналы связи } } return(Clients); }
public bool SetTokens(string ChatHelpDesk, string Gmail, string Host) { if (ChatHelpDesk != null && ChatHelpDesk != "" && Host != "") { string name = "ChHToken.json"; string path = HostingEnvironment.ApplicationPhysicalPath; try { Configer.SetToken(ChatHelpDesk); var client = new RestClient("https://api.chat2desk.com/v1/companies/web_hook"); var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("content-type", "application/json"); request.AddHeader("authorization", Configer.GetToken()); request.AddParameter("application/json", JsonConvert.SerializeObject(new { url = Host }), ParameterType.RequestBody); IRestResponse response = client.Execute(request); } catch (Exception ex) { string ModelError = ex.Message; } } if (Gmail != null && Gmail != "") { string name = "Google.Apis.Auth.OAuth2.Responses.TokenResponse-user"; string path = HostingEnvironment.ApplicationPhysicalPath; try { using (FileStream fstream = new FileStream(path + name, FileMode.Create)) { //string json = JsonConvert.SerializeObject(Gmail); // преобразуем строку в байты byte[] array = System.Text.Encoding.Default.GetBytes(Gmail); // запись массива байтов в файл fstream.Write(array, 0, array.Length); } } catch (Exception ex) { string ModelError = ex.Message; } } return(true); }
/// <summary> /// GetIdClient проверяет на существование клиента /// </summary> /// <param name="Id">Идентификатор клиента</param> /// <returns>Значение типа int. Если значение 1: Существует, -1: клиента с таким id нет.</returns> public int GetIdClient(int Id) { var client = new RestClient(Rest + Id.ToString()); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); if (response.ErrorException != null) { Console.WriteLine(" Исключение в методе GetIdClient(int Id) {0}", response.ErrorMessage); return(-1); } dynamic dynObj = JsonConvert.DeserializeObject(response.Content); if (dynObj == null) { return(-1); } return(1); }
public static List <Dialog> Get() { //возвращает лист диалогов List <Dialog> dialogs = new List <Dialog>(); var client = new RestClient(Rest); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); dynamic dynObj = JsonConvert.DeserializeObject(response.Content); if (dynObj == null || dynObj.status == "error") { Dialog dlg = new Dialog(); dlg.error = "Диалогов нет или произошла ошибка в запросе."; dialogs.Add(dlg); return(dialogs); } foreach (dynamic dialog in dynObj.data) { Dialog dlg = new Dialog(); dlg.ID = dialog.id; dlg.state = dialog.state; dlg.begin = DateTimeOffset.ParseExact(dialog.begin.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime; if (dlg.end != null) { dlg.end = DateTimeOffset.ParseExact(dialog.end.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime; } dialogs.Add(dlg); } return(dialogs); }
public Clients() { Rest = "https://api.chat2desk.com/v1/clients/"; token = Configer.GetToken(); }
/// <summary> /// Возвращает список сообщений /// </summary> /// <param name="type">фильтр по типу</param> /// <param name="read">фильтр по прочитанным или непрочитанным</param> /// <param name="setRead">указывает необходимо ли пометить полученные сообщения как прочитанные</param> /// <returns></returns> public static MessagesResponse GetMessages(string type, bool?read, int?limit, bool setRead, string dialog_id, int offset = 0) { string reqURL = url + "messages"; //формирование URL строки с параметрами var uriBuilder = new UriBuilder(reqURL); var query = HttpUtility.ParseQueryString(uriBuilder.Query); if (type != null) { query["type"] = type; } if (read != null) { query["read"] = read.ToString(); } if (limit != null) { query["limit"] = limit.ToString(); } if (dialog_id != null) { query["dialog_id"] = dialog_id; } query["offset"] = offset.ToString(); uriBuilder.Query = query.ToString(); reqURL = uriBuilder.ToString(); //отправка запроса на сервер var client = new RestClient(reqURL); var request = new RestRequest(Method.GET); request.AddHeader("authorization", Configer.GetToken()); IRestResponse response = client.Execute(request); //получение коллекции сообщений List <Message> messages = new List <Message>(); dynamic dynObj = JsonConvert.DeserializeObject(response.Content);//парсим json if (dynObj.data != null) { foreach (dynamic dynMessage in dynObj.data) { Message message = new Message { ID = dynMessage.id.ToString(), text = dynMessage.text.ToString(), type = dynMessage.type.ToString(), read = bool.Parse(dynMessage.read.ToString()), created = DateTimeOffset.ParseExact(dynMessage.created.ToString().Replace("UTC", "GMT"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss GMT", null).UtcDateTime.AddHours(Configer.GetOffset()), clientID = dynMessage.client_id.ToString(), transport = dynMessage.transport.ToString(), dialog_id = dynMessage.dialog_id.ToString() }; if (setRead) //если пометить полученные сообщения как прочитанные { SetRead(message.ID, true); } messages.Add(message); } } MessagesResponse messagesResponse = new MessagesResponse { messages = messages, info = new MessagesResponse.MetaInfo { total = Int32.Parse(dynObj.meta.total.ToString()), limit = Int32.Parse(dynObj.meta.limit.ToString()) } }; return(messagesResponse); }