同期応答
通常、Webhookは呼び出し元に対して即座に応答し、Shopify Flowのワークフローはバックグラウンドで実行されます。**「同期応答」**を有効にすると、アプリはワークフローがデータを返すまで呼び出し元のHTTPリクエストを保持し、そのデータを代わりに返します。
呼び出し元が単なる応答ではなく、具体的な回答を必要とする場合に役立ちます。たとえば、結果を表示するフォームや、計算値を必要とするシステム、検索機能などが挙げられます。
電源を入れてください
「詳細設定」→「Webhookでの同期応答」。
ワークフローを構築する
同期 Webhook は、標準の Webhook トリガーではなく、同期 Webhook トリガーを起動します。このトリガーには、応答を待機している個々のリクエストを識別するための追加フィールド「invocationId」が含まれています。
| 手順 | 何 |
|---|---|
| トリガー | 同期 Webhook トリガー |
| 条件 | Webhook ID これは、WebhookのIDに相当します |
| 直前のアクション | Webhookの応答を返す |
このアクションには3つのフィールドが必要です:
| フィールド | 何を入れるか |
|---|---|
| 呼び出しID | トリガーから{{invocationId}}をバインドしてください。これを指定しないと、返信が待機中の呼び出し元と照合できず、破棄されてしまいます。 |
| レスポンス本体 | 発信者が受け取る内容については、以下をご覧ください。 |
| コンテンツの種類 | オプションです。デフォルトはapplication/jsonです。プレーンテキストの場合はtext/plainを使用してください。 |
レスポンス本文の作成
トリガーの変数を使用して、フィールドに本文を直接入力することができます。ほとんどのワークフローでは、これだけで十分です:
{"ok": true, "orderId": "{{fieldOne}}", "email": "{{fieldTwo}}"}
すべてのトリガーフィールドが利用可能です:{{fieldOne}} から {{fieldFour}}、{{rawBody}}、{{webhookId}} までです。
ロジックが必要な処理(お客様情報の検索、合計額の計算、大きなオブジェクトの整形など)については、ワークフローの早い段階で「**コードを実行」**アクションを使用し、その結果をここにバインドするようにしてください。
返事が来ないときは
ワークフローが15秒以内に応答しない場合、呼び出し元には通常の応答が返されます。これは、非同期のWebhookが返すのと同じ200です。エラーとなることは決してなく、呼び出し元が待機状態になることもありません。呼び出しは引き続き履歴に表示され、ワークフローは完了する可能性もあります。ただ、応答が遅すぎて利用できないだけです。
一般的な原因:
- ワークフローは有効になっていません。
- これは、同期トリガーではなく、標準のWebhookトリガーに基づいて構築されています。
- **「Return Webhook Response」**に到達することなく、ブランチが終了しました。
- インヴォケーション ID がバインドされていませんでした。
知っておくと役立つこと
- **最初に返信したものが優先されます。**2つのワークフローが同じリクエストに応答した場合、呼び出し元には 1つ目;2つ目は破棄されます。
- **重複した配送は決して待ってくれません。**リクエストが 重複配送防止 即座に処理が完了します。ワークフローは実行されないため、 返事をする言葉が見つかりません。
- 一般的な往復処理時間は2~4秒ですが、Shopifyでは、以下の点について処理時間の保証は行っていません。 Shopify Flow。同期応答を「ベストエフォート」として扱う:実際には高速ですが、15秒の 最終手段としてのフォールバック。

