Webhooksкрючок в приложение через URL в обратного вызова вы предоставляете. Это всего лишь действие в одном из ваших контроллеров, который отвечает на POST и обрабатывает запрос webhook. Каждый раз, когда что-то меняется на удаленную службу, удаленная служба делает запрос на URL-адрес обратного вызова, который вы предоставили, и, следовательно, запускает код .
Я приведу пример с опросом, созданным. Вы начинаете с определения действия callback для этого события, где вы обрабатываете запрос, поступающий из веб-камеры. Как указано here 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 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
маршрут.
Теперь вам необходимо подписать этот код обратного вызова в API Webhooks. Сначала вы захотите узнать, что which hooks доступны вам. Вы делаете это, поставив запрос GET на /api/v2/webhooks/
. В ответе вы найдете название события, обследование и коллекционер параметры.
Наконец, вы 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-адреса обратного вызова уже существует. Или что-то еще, если это пошло плохо :)
Теперь вы можете проверить крючок, создав опрос удаленной службы, а затем наблюдайте, как он реплицируется в ваше приложение Rails.
Надеется, что это помогает ...
Рискуя быть придурком, «Я не знаком с' thing', но я чувствую, что это правильно для меня», кажется, как неправильного подход к выбору технологии. Этот вопрос может быть лучше сформулирован как «Мне нужно выполнить« цель », какое наилучшее решение?». – Nick