ruby-on-rails – 使用Webhooks与Rails
我不熟悉Webhooks,但我觉得他们对我的应用程序是正确的.
我有FluidSurveys webhook的以下文档 我了解我如何通过POST请求将其挂钩到他们的API,但是我不知道如何知道webhook实际发送响应的位置. 如果我在处理webhook的控制器上是正确的,那会是什么样的? 任何指导都不胜感激. 解决方法
Webhook通过您提供的回调URL挂接到您的应用程序.这只是您的一个控制器中的响应POST请求并处理webhook请求的操作.每当远程服务发生变化时,远程服务会向您提供的回调URL发出请求,从而触发操作代码.
我将以调查创建的事件为例.您首先为此事件定义一个回调操作,您可以处理来自webhook的请求.如here所述,webhook响应以下机构: survey_creator_name=&survey_name=MADE+A+NEW+SURVEY&survey_creator_email=bob@example.com&survey_url=http%3A%2F%2Fexample.com%2Fsurveys%2Fbob%2Fmade-a-new-survey%2F`` 现在让我们离开标题,它们不包含重要的信息.可用的身体参数(survey_creator_name,survey_name等)将反映关于远程服务上可用的新调查的所有详细信息.所以我们来写一个处理这个请求的回调操作: class HooksController def survery_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订阅到Webhooks API.首先你会想知道which hooks是可用的.您可以通过在/ api / v2 / webhooks /上放置GET请求来执行此操作.在响应中,您将找到事件名称,调查和收集器参数. 最后,您将subscribe通过向POST / api / v2 / webhooks / subscribe / URL提出以下内容的请求,将之前列出的一个钩子: { "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,或者代码409,如果具有相同回调URL的webhook已经存在.还是别的,如果这样糟糕的话:) 您现在可以通过在远程服务上创建一个调查来测试钩子,然后在Rails应用程序中观察它. 希望这可以帮助… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |