同期応答

通常、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秒の 最終手段としてのフォールバック。