无法使用 JavaScript fetch 从 Zendesk 票证 API 获取响应

问题描述 投票:0回答:1

我正在尝试创建一个 HTML 表单,用于在 Zendesk 中创建票证。该表格还将包括文件上传。 现在我可以使用 API 创建票证,但无法从 API 调用中获得响应。我需要响应才能从创建的票证中获取票证 ID。我可以使用此 ID 将上传的文件附加到票证中。 但就像我说的,我无法检索回复。

代码:

function createTicket() {      
    var id;
    var easyWalker = $("#choose_product option:selected").html();
    var batchNumber = document.getElementById("batch_number").value;
    var color = document.getElementById("color").value;
    var firstName = document.getElementById("first_name").value;
    var lastName = document.getElementById("last_name").value;
    var email = document.getElementById("email").value;
    var phone = document.getElementById("phone").value;
  
    console.log("creating ticket");

    var myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/json");
    myHeaders.append("Authorization", "Basic " + auth);
    myHeaders.append("Cookie", "__cfruid=f6f220be875e5825ba2ea5650a7a58d04ceb1299-1695207433; _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--0bf2100788cb010d0183feca16aaf88ccaf719ca");
    
    var raw = JSON.stringify({
            "ticket": {
                "subject": "New Easywalker Warranty Registry from " + firstName + " " + lastName,
                "description": 
                  "Product: " + easyWalker + "\n" +
                  "Batch Number: " + batchNumber + "\n" +
                  "Color: " + color + "\n" +
                  "Name: " + firstName + " " + lastName + "\n" +
                  "Email: " + email + "\n" +
                  "Phone Number: " + phone,
                "requester": {
                  "name": firstName + " " + lastName,
                  "email": email
                }
            }
        });
    
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: raw,
      redirect: 'follow'
    };
    
    fetch("https://easywalkersupport.zendesk.com/api/v2/tickets", requestOptions)
      .then(response => id = response)
      .then(result => console.log(result))
      .catch(error => console.log('error', error));

    return id;
}

我知道响应不是 id,但我不知道我需要访问什么属性才能这样做,因为我看不到结果。以前我使用console.log(result),但控制台中没有显示任何内容。

目前我在控制台中收到此错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://easywalkersupport.zendesk.com/api/v2/tickets. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 201.
,尽管票证是在 Zendesk 中创建的。

有人可以帮我提供解决方案以及给定解决方案的实施示例吗?

提前致谢!

伊万

javascript zendesk-api
1个回答
0
投票

您正在使用端点

/api/v2/tickets
,该端点适用于代理和管理员。请参阅:门票与请求

为了创建自定义 HTML,我建议您使用端点

/api/v2/requests
,该端点供最终用户使用。请参阅:创建请求

作为最后的建议,我通常在需要自定义 HTML 表单的项目中所做的事情是在网站和 Zendesk API 之间有一个中间件服务器。 Zendesk 有本教程解释如何使用 Node.js 或 Python 完成这项工作。 自定义门票表格网络应用程序

© www.soinside.com 2019 - 2024. All rights reserved.