Zapier - 无效 API 响应

Zapier - Invalid API Response

我正在使用 Zapier 将 CRM 与 Facebook 线索广告集成,我可以在 Facebook 中创建线索并在 CRM 中创建线索,没有任何问题。

成功 post 后(即成功创建线索),我很好奇我应该返回什么,我本以为

          return Ok();

就够了。相反,我收到一条错误消息:

- 得到了一个非对象结果,期望从 create () 得到一个对象 发生了什么(你看到这个是因为你是管理员): 执行 creates.ZapLead.operation.perform 与捆绑 无效 API 响应: - 得到一个非对象结果,期望从 create ()

得到一个对象

我应该返回什么?

生成 post 的代码是:

perform: (z, bundle) => {
  const promise = z.request({
    url: 'https://{{bundle.authData.subdomain}}.ngrok.io/api/zapier/create/lead/' + bundle.inputData.lead_type + '/' + bundle.inputData.core_customerTypeId,
    method: 'POST',
    body: JSON.stringify({
      fields: bundle.inputData
    }),
    headers: {
      'content-type': 'application/json'
    }
  });

  // return promise.then((response) => JSON.parse(response.content));
  return promise.then((response) => {   
    if (response.status != 200) {
      throw new Error(`Unexpected status code ${response.status}`);
    }
});

有什么想法吗?

谢谢,

我想我找到了。看来我需要 return 如果成功的话:

{"Success":"Success","Attempt":null,"Id":null,"RequestId":null}

来自 Zapier Platform 团队的 David。

虽然您的回答在技术上是正确的,但我想添加一些有关错误的上下文以及您的解决方案为何有效。

Zapier 期望一个 javascript 对象(基本上是任何有效的并包装在 {} 中的对象)从创建函数中出来。这就是 JSON.parse(response.content) 工作的原因,它是 returning 服务器所说的任何内容。如果它不是 200,您的代码将抛出错误,但如果 200,则不会 return 任何东西。因为 undefined 不是 [=13] 类型=],你看到的错误被抛出。

虽然 {"Success":"Success","Attempt":null,"Id":null,"RequestId":null} 完全是一个有效的响应(它是一个对象!),但对于最终用户来说 return 有关已创建的新潜在客户的数据更有用。这样,它就可以在下游用于其他操作。

如果您还有其他问题,请告诉我!


附带说明一下,我们对如何使该错误消息更加清晰持开放态度;这是一个开发者与很多人斗争的地方。