同步响应
通常情况下,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秒的 作为最后手段的备选方案。

