我有FluidSurveys webhook的以下文档
我了解我如何通过POST请求将其挂钩到他们的API,但是我不知道如何知道webhook实际发送响应的位置.
我可以通过任何订阅网址吗?例如https://www.myapp.com/test和webhook会发送数据的地方?此外,在创建webhook之后,我不知道如何确保我的Rails应用程序将收到启动的响应.
我假设一个控制器方法对应于我提供给webhook的url.
如果我在处理webhook的控制器上是正确的,那会是什么样的?
任何指导都不胜感激.
解决方法
我将以调查创建的事件为例.您首先为此事件定义一个回调操作,您可以处理来自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应用程序中观察它.
希望这可以帮助…