Поля Zendesk Custom User/Organization

Итак, у меня возникла проблема в zendesk с двумя возможными решениями, но я не знал, сработает ли одно из них. Наша система построена с настраиваемыми полями, созданными для каждого из наших клиентов и организаций. Сначала я попытался использовать оболочку C#, однако нет способа получить доступ к настраиваемым полям с помощью этих методов, если я не могу найти его.

Так что, если нет способа сделать это через оболочку C#, я пытаюсь сделать это с помощью полного отдыха. Вот этот код.

string url = "https://{mydomain}.zendesk.com/api/v2/user_fields/7.json";
        string creds = Convert.ToString(Encoding.UTF8.GetBytes(EMAIL + "/"+ TOKEN));
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Headers.Add("Authorization", "Basic" + creds);

        request.Method = "GET";

        HttpWebResponse resp = request.GetResponse() as HttpWebResponse;

        if (resp.StatusCode == HttpStatusCode.OK)
        {
            using (Stream respStream = resp.GetResponseStream())
            {
                StreamReader reader = new StreamReader(respStream, Encoding.UTF8);
                string test = reader.ReadToEnd();
            }
        }
        else
        {
            Console.WriteLine(string.Format("Status Code: {0}, Status Description: {1}", resp.StatusCode, resp.StatusDescription));
        }

Прямо сейчас все, что я должен сделать, это получить ответ, который вернет мне имя всех столбцов, однако я продолжаю получать 401 несанкционированный ответ. Любые предложения относительно того, что я делаю не так?

1 ответ

Для обёртки Zendesk C#...

IndividualTicketResponse tr = zapi.Tickets.GetTicket(9);
        var customField = tr.Ticket.CustomFields.Where(x => x.Id == 23653058).Single();//.Select(x => x.Id).Single();
        customField.Value = "Updated via c# wrapper";
        IndividualTicketResponse ticketResponse = zapi.Tickets.UpdateTicket(tr.Ticket);

Я не использую токен, но если не использовать оболочку, это сработало для меня...

 string serverURL = "https://myzensubdomain.zendesk.com/api/v2/tickets/9.json";
        string userName = "username@domain.com";
        string userPassword = "mySecretPassword";


        TicketCustomFieldUpdate dataTicket = new TicketCustomFieldUpdate();


        CustomField cf = new CustomField();
        cf.id = 23653058;
        cf.value = "It worked!";
        dataTicket.ticket = new Ticket();
        dataTicket.ticket.custom_fields = new List<CustomField>();
        dataTicket.ticket.custom_fields.Add(cf);

        string stJSON = clsJSONHelper.JsonSerializer<TicketCustomFieldUpdate>(dataTicket);


        NetworkCredential myCred = new NetworkCredential(userName, userPassword, serverURL);
        CredentialCache myCache = new CredentialCache();
        myCache.Add(new Uri(serverURL), "Basic", myCred);

        HttpWebRequest wreq = (HttpWebRequest)HttpWebRequest.Create(serverURL);
        wreq.Credentials = new NetworkCredential(userName, userPassword);
        wreq.ContentLength = 0;            
        wreq.Method = "PUT";
        wreq.ContentType = "application/json";
        wreq.PreAuthenticate = true;


        ASCIIEncoding encoding = new ASCIIEncoding();
        byte[] byte1 = encoding.GetBytes(stJSON);
        wreq.ContentLength = byte1.Length;

        using (Stream strm = wreq.GetRequestStream())
        {
            strm.Write(byte1, 0, byte1.Length);
        }

        var wresp = (HttpWebResponse)wreq.GetResponse();
        using (var strmr = new StreamReader(wresp.GetResponseStream()))
        {
            var responseText = strmr.ReadToEnd();
            context.Response.Write(responseText);
        }
Другие вопросы по тегам