Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
 /// <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);
     }
 }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
 public Clients()
 {
     Rest  = "https://api.chat2desk.com/v1/clients/";
     token = Configer.GetToken();
 }
Esempio n. 11
0
        /// <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);
        }