私はWebhookに慣れていませんが、Webhookは私のアプリにとって正しいものだと感じています。
FluidSurveys webhook に関する次のドキュメントがあります
POST
リクエストを介してAPI
にWebhookを作成する方法は理解していますが、Webhookが実際に応答を送信する場所を確認する方法がわかりません。必要なサブスクリプションURLを渡すことはできますか?例えばhttps://www.myapp.com/test
そしてwebhook
がデータを送信する場所はどこですか?また、webhook
が作成された後、Railsアプリが開始された応答を受信することを確認する方法がわかりません。URLに対応するコントローラーメソッドを想定していますWebhookに提供します。
Webhookを処理するコントローラーが正しければ、どのようになりますか?
任意のガイダンスをいただければ幸いです。
WebhookshookコールバックURLあなたが提供します。これは、[〜#〜] post [〜#〜]要求に応答し、Webhook要求を処理するコントローラーの1つでのアクションです。リモートサービスに何かが変更されるたびに、リモートサービスは指定されたコールバックURLにリクエストを送信するため、actionコードがトリガーされます。
survey createdイベントで例を示します。まず、このイベントのcallbackアクションを定義します。ここで、Webhookからのリクエストを処理します。述べたように ここ ウェブフックは次の本文で応答します:
survey_creator_name=&survey_name=MADE+A+NEW+SURVEY&[email protected]&survey_url=http%3A%2F%2Fexample.com%2Fsurveys%2Fbob%2Fmade-a-new-survey%2F``
ヘッダーはそのままにしておきましょう。重要な情報は含まれていません。利用可能なボディパラメータ(survey_creator_name
、survey_name
など)は、リモートサービスで利用可能な新しい調査に関するすべての詳細を反映します。それでは、このリクエストを処理するコールバックアクションを書いてみましょう:
class HooksController
def survey_created_callback
# If the body contains the survey_name parameter...
if params[:survery_name].present?
# Create a new Survey object based on the received parameters...
survey = Survey.new(:name => params[:survey_name]
survey.url = params[:survey_url]
survey.creator_email = params[:survey_creator_email]
survey.save!
end
# The webhook doesn't require a response but let's make sure
# we don't send anything
render :nothing => true
end
end
このためのルートを追加しましょう(config/routes.rb
内):
scope '/hooks', :controller => :hooks do
post :survey_created_callback
end
これにより、POST /hooks/survey_created_callback
ルートが有効になります。
次に、このコールバックURLをWebhooksAPIにサブスクライブする必要があります。まず、知りたいと思うでしょう どのフック が利用可能です。これを行うには、/api/v2/webhooks/
にGETリクエストを送信します。応答には、イベント名、調査、およびコレクターがあります。パラメーター。
最後に、次の内容でPOST /api/v2/webhooks/subscribe/
URLにリクエストを送信することにより、前述のフックの1つに subscribe します。
{
"subscription_url": "http://your-absolute-url.com/hooks/survey_created_callback",
"event": "[EVENT NAME FROM THE HOOKS LIST]",
"survey": "[SURVEY FROM THE HOOKS LIST]",
"collector": "[COLLECTOR FROM THE HOOKS LIST]"
}
これに対する応答は、フックが正常に作成された場合はコード201
になり、同じコールバックURLのWebhookがすでに存在する場合はコード409
になります。または何か他のもの、これがうまくいかなかった場合:)
これで、リモートサービスで調査を作成し、それがRailsアプリで複製されるのを確認することで、フックをテストできます。
お役に立てれば...