通过 Zapier 的 API POST

Posted

技术标签:

【中文标题】通过 Zapier 的 API POST【英文标题】:API POST via Zapier 【发布时间】:2021-06-20 06:15:02 【问题描述】:

我正在尝试通过 Zapier 使用 REST API POST 来触发 salesforce marketingcloud 中的旅程。但 Zapier 总是返回错误“您必须返回单个对象或对象数组。”。我在这里做错了什么?

var obj =   
  method: 'POST',
  headers: 
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Authorization': 'Bearer '+inputData.mytoken,
  ,
  body: JSON.stringify(
    "ContactKey": inputData.data_TransactionID,
    "EventDefinitionKey":"APIEvent-XXXX",
    "Data": [
      "TransactionId": inputData.data_TransactionID,
      "DonationAmount": inputData.data_Amount,
      "DonationPurpose": inputData.data_Purpose,  
      "Email": inputData.data_email,
      "SubscriptionToken": inputData.data_SubToken,
      "FirstName": inputData.data_FirstName,
      "LastName": inputData.data_LastName
    ]
  )


fetch('https://mc4XXX.rest.marketingcloudapis.com/interaction/v1/events', obj)  
  .then(function(res) 
    return res.json();
   )
  .then(function(json) 
    callback(null, json);
   )
  .catch(callback);

【问题讨论】:

【参考方案1】:

如果不了解返回的 JSON 的结构,很难说,但我可以猜测一下。

错误是抱怨传递给callback 的值json。以下是该json 变量值的几个示例:

// cause an error
true
3
undefined
[]
[3]

// no error
 success: true 

[ cool: true ]

返回值的类型必须是对象 () 或每个项目都是对象的数组 ([])。

如果您在callback 之前先console.log(json),您将准确地看到您返回的内容,并且可以弄清楚如何将其包装在一个对象中。在黑暗中拍摄,但我猜callback(null, json) 可能有用。

【讨论】:

以上是关于通过 Zapier 的 API POST的主要内容,如果未能解决你的问题,请参考以下文章

从 PHP Curl 获取 POST Zapier webhook 响应

如何使用 Zapier 的 Twitter API 进行身份验证?

通过 API 修改数据

如何处理 Zapier 中的错误?

将 Curl 转换为 Zapier

Zapier 自定义响应对象