gpt4 book ai didi

ruby-on-rails - 在 Rails 中使用 Webhook

转载 作者:行者123 更新时间:2023-12-03 22:46:49 25 4
gpt4 key购买 nike

我不熟悉 Webhooks,但我觉得它们适合我的应用程序。

我有 FluidSurveys webhook 的以下文档

我了解如何通过 POST 制作 webhook请求他们的API ,但我不知道如何判断 webhook 实际将发送响应的位置。
我可以传递任何我想要的订阅网址吗?例如https://www.myapp.com/test是在哪里webhook会发送数据吗?此外,在 webhook 之后已创建我不确定如何确保我的 Rails 应用程序将收到启动的响应。
我假设一个 Controller 方法与我提供给 webhook 的 url 相对应。

如果我在处理 webhook 的 Controller 上是正确的,那会是什么样子?

任何指导表示赞赏。

最佳答案

网络 Hook 通过 连接到您的应用程序回调地址 你提供。这只是响应 的 Controller 中的一个操作。发布 请求并处理 webhook 请求。每次远程服务发生变化时,远程服务都会向您提供的回调 URL 发出请求,从而触发操作代码。

我将以 为例已创建调查 事件。您首先定义一个 回调此事件的操作,您可以在其中处理来自 webhook 的请求。如前所述here webhook 响应以下正文:

survey_creator_name=&survey_name=MADE+A+NEW+SURVEY&survey_creator_email=timothy@example.com&survey_url=http%3A%2F%2Fexample.com%2Fsurveys%2Fbob%2Fmade-a-new-survey%2F``

让我们暂时保留标题,它们不包含重要信息。可用的正文参数( survey_creator_namesurvey_name 等)将反射(reflect)有关远程服务上可用的新调查的所有详细信息。所以让我们写一个 回调操作 处理此请求:
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路线。

现在您需要订阅 回调地址 到 Webhooks API。首先你会想知道 which hooks可供您使用。您可以通过在 /api/v2/webhooks/ 发出 GET 请求来完成此操作。 .在响应中,您将找到事件名称、调查和收集器参数。

最后你 subscribe通过向 POST /api/v2/webhooks/subscribe/ 发出请求,到前面列出的钩子(Hook)之一。具有以下内容的 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如果钩子(Hook)创建成功,或者代码 409 , 如果相同回调 URL 的 webhook 已经存在。或者别的什么,如果这不好:)

您现在可以通过在远程服务上创建一个调查来测试该钩子(Hook),然后观察它在您的 Rails 应用程序中被复制。

希望这可以帮助...

关于ruby-on-rails - 在 Rails 中使用 Webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com