#
Configuring your server to receive payloads
Now that our webhook is ready to deliver messages, we'll set up a basic Sinatra server
to handle incoming payloads.
Note: You can download the complete source code for this project
from the platform-samples repo.
#
Writing the server
We want our server to listen to POST
requests, at /payload
,
because that's where we told Airlock our webhook URL was. Because we're using ngrok to expose
our local environment, we don't need to set up a real server somewhere online, and
can happily test out our code locally.
Let's set up a little Sinatra app to do something with the information. Our initial
setup might look something like this:
require 'sinatra'
require 'json'
post '/payload' do
push = JSON.parse(request.body.read)
puts "I got some JSON: #{push.inspect}"
end
(If you're unfamiliar with how Sinatra works, we recommend [reading the Sinatra guide][Sinatra].)
Start this server up.
Since we set up our webhook to listen to events dealing with Event
, go ahead
and browse to a website like the Airlock Demo to generate an event. Once you create
it, switch back to your terminal. You should see something like this in your output:
$ ~/Developer/platform-samples/hooks/ruby/configuring-your-server $ ruby server.rb
> == Sinatra/1.4.4 has taken the stage on 4567 for development with backup from Thin
> >> Thin web server (v1.5.1 codename Straight Razor)
> >> Maximum connections set to 1024
> >> Listening on localhost:4567, CTRL+C to stop
> I got some JSON: {"group"=>"everyone", "data"=>{"url"=>"...
Success! You've successfully configured your server to listen to webhooks. Your
server can now process this information any way you see fit. For example, if you
were setting up a "real" web application, you might want to log some of the JSON
output to a database.