同步响应

通常情况下,Webhook 会立即响应调用方,而您的 Shopify Flow 工作流程会在后台运行。启用**“同步响应**”后,应用会保持调用方的 HTTP 请求处于打开状态,直到您的工作流程发送回数据,然后返回该数据。

当调用方需要的是答案而非简单的确认时,这会很有用 - - 例如显示结果的表单、需要计算值的系统,或是查找操作。

打开它

“高级设置” -> “Webhook 的同步响应”。

构建工作流程

同步 Webhook 会触发**“同步 Webhook 触发器**”,而非标准 Webhook 触发器。该触发器包含一个额外字段 invocationId,用于标识正在等待响应的具体请求。

步骤 什么
触发器 同步 Webhook 触发器
条件 Webhook ID 等于您的 Webhook 的 ID
上一项操作 Webhook 响应

该操作涉及三个字段:

字段 放什么进去
调用 ID 请在触发器中绑定 {{invocationId}}。如果没有该绑定,您的回复将无法与等待的调用者匹配,从而被丢弃。
响应正文 呼叫方将收到什么 - - 请参见下文。
内容类型 可选。默认值为application/json;若要使用纯文本,请使用text/plain。

编写响应正文

您可以直接在该字段中使用触发器的变量编写正文,这已经满足了大多数工作流程的需求:

{"ok": true, "orderId": "{{fieldOne}}", "email": "{{fieldTwo}}"}

所有触发字段均可用:{{fieldOne}} 至 {{fieldFour}}、{{rawBody}} 以及 {{webhookId}}。

对于任何需要逻辑处理的操作 - - 例如查询客户信息、计算总金额、对较大对象进行处理等 - - 请在工作流程的前面步骤中使用“运行代码”操作,并将该操作的结果绑定到此处。

当没有收到回复时

如果您的工作流程在 **15 **秒内未作出响应,调用方将收到常规响应 - - 即与非同步 Webhook 返回的 200 相同的响应。这绝非错误,调用方也不会处于悬而未决的状态。该调用仍会显示在“历史记录”中,工作流程也可能仍会完成;只是响应来得太晚,无法使用。

常见原因:

  • 该工作流程未启用。
  • 它是基于标准的 Webhook 触发器构建的,而不是基于同步触发器。
  • 一个分支在未到达**“返回 Webhook 响应”阶段时**就结束了。
  • 该召唤ID未被绑定。

值得了解的事项

  • **先回复者胜出。**如果两个工作流程对同一请求作出响应,调用方将获得 第一个;第二个被舍弃。
  • **重复交付从不等待。**被 重复配送防护 立即返回 - - 没有工作流程运行,因此 无话可答。
  • 典型的往返时间约为 2 到 4 秒,但 Shopify 并未针对 Shopify Flow。将同步响应视为尽力而为:实际上速度很快,但有15秒的 作为最后手段的备选方案。