Skip to main content

Configurar tu servidor para recibir cargas útiles

Aprende a conigurar un servidor para administrar las cargas útiles de webhook entrantes.

Ahora que nuestro webhook está listo para entregar mensajes, configuraremos un servidor básico de Sinatra para controlar las cargas entrantes.

Nota: Puede descargar el código fuente completo de este proyecto desde el repositorio platform-samples.

Escribir el servidor

Queremos que nuestro servidor escuche las solicitudes POST, en /payload, porque es donde hemos dicho a GitHub que está nuestra dirección URL. Como estamos usando ngrok para exponer nuestro entorno local, no necesitamos configurar un servidor real en línea, y podemos probar nuestro código cómodamente de manera local.

Vamos a configurar una pequeña app de Sinatra para que haga algo con la información. Nuestra configuración inicial podría tener un aspecto similar a este:

require 'sinatra'
require 'json'

post '/payload' do
  push = JSON.parse(request.body.read)
  puts "I got some JSON: #{push.inspect}"
end

(Si no está familiarizado con el funcionamiento de Sinatra, le recomendamos leer la guía de Sinatra).

Inicia este servidor.

Dado que hemos configurado nuestros webhooks para escuchar eventos relacionados con Issues, continúe y cree una nueva incidencia en el repositorio en el que está haciendo las pruebas. Una vez creada, regrese al terminal. Deberías ver algo más o menos como esto en tu salida:

$ ~/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: {"action"=>"opened", "issue"=>{"url"=>"...

¡Hecho! Configuraste exitosamente tu servidor para que escuche a los webhooks. Ahora el servidor puede procesar esta información de la manera que prefiera. Por ejemplo, si estuviera configurando una aplicación web "real", tal vez querría registrar parte de la salida JSON en una base de datos.

Para obtener más información sobre cómo trabajar con webhooks para divertirse y obtener beneficios, consulte la guía Prueba de webhooks.