【问题标题】:How to use Freshdesk API to create a new ticket with custom fields using javascript如何使用 Freshdesk API 使用 javascript 创建带有自定义字段的新工单
【发布时间】:2017-06-26 19:24:29
【问题描述】:

我有一个函数,当用户在表单上单击“提交”时会触发该函数。除了 custom_fields 之外,所有内容都将提交给 freshdesk。

我正在使用带有控制器的 Angular 1.4,所以 ctrl 是我的控制器。这是我的代码:

   function postTicket() {
  var formdata = new FormData();

  var customFields = {
    "serial_number": ctrl.newTicket.serialnumber
  };
  customFields = JSON.stringify(customFields);


  formdata.append('description', ctrl.newTicket.description);
  formdata.append('subject', ctrl.newTicket.subject);
  formdata.append('type', ctrl.newTicket.type);
  formdata.append('email', ctrl.newTicket.email);
  formdata.append('custom_fields', customFields);
  formdata.append('status', 2); // open
  formdata.append('priority', 1); // low

  supportResource.postTicket(formdata).then(
    results => {
      console.log('it worked! ', results);
      ctrl.formSent = true;
    },
    error => {
      console.log('something went wrong. ', error);
    });
}

这是 supportResource 代码:

function postTicket(ticket) {
  return $q(function(fulfill, reject) {
    $http({
      url: `https://${MYACCOUNT}.freshdesk.com/api/v2/tickets`,
      method: 'POST',
      headers: {
        'Authorization': 'Basic ' + btoa(MYKEY),
        'Content-Type': undefined
      },
      data: ticket
    }).then(
      results => {
        fulfill(results.data);
      },
      error => reject(error));
  });
}

我得到以下错误:“值集是字符串类型。它应该是一个键/值对”

我遵循了这里的示例: https://github.com/freshdesk/fresh-samples/blob/master/jquery/create_ticket_with_attachment.html

我也看到了这个:https://support.freshdesk.com/support/solutions/articles/216548-create-and-update-tickets-with-custom-fields-using-api

但是这个例子使用的是 CURL,我不确定如何使用 FormData() http://developer.mozilla.org/en-US/docs/Web/API/FormData 发送数据

【问题讨论】:

    标签: javascript angularjs freshdesk


    【解决方案1】:

    我想在这里分享解决方案,以防其他人遇到此问题。这特定于freshdesk API 以及它如何期望数据。 Form-data 的语法非常简单:

    语法

    此方法有两个版本:一个二参数版本和一个三参数版本:

    • formData.append(名称,值);
    • formData.append(name, value, filename);

    因此,通过将 name 从字符串更改为将 custom_field 名称引用为关联数组,如下所示:custom_fields[serial_number] 然后 API 了解正在使用的密钥并能够读取表单-数据

    function postTicket() {
      var formdata = new FormData();
    
      formdata.append('description', ctrl.newTicket.description);
      formdata.append('subject', ctrl.newTicket.subject);
      formdata.append('type', ctrl.newTicket.type);
      formdata.append('email', ctrl.newTicket.email);
      formdata.append('custom_fields[serial_number]', ctrl.newTicket.serialnumber);
      formdata.append('status', 2); // open
      formdata.append('priority', 1); // low
    
      supportResource.postTicket(formdata).then(
        results => {
          console.log('it worked! ', results);
          ctrl.formSent = true;
        },
        error => {
          console.log('something went wrong. ', error);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多