配置您的服务

现在我们的 WebHook 已经准备好发送信息了,我们将设置一个基础的 Sinatra 服务来处理外部发送来的事件内容。

在上一章我们将 WebHook 的 URL 设置为了 http://localhost:4567/。因为我们要在本地进行开发,所以需要将本地环境暴露到因特网上。然后就能收到 Coding 发送过来的 WebHook 请求了。

使用 ngrok

首先,我们需要安装一个程序来暴露我们的本地地址到因特网上。这里我们选择使用 ngrok 来实现。

安装完 ngrok 后,在本地运行 ./ngrok http 4567 指令就可以暴露自己的本地地址。你应该会看到一些类似下面的内容:

Forwarding    http://7e9ea9dc.ngrok.io -> 127.0.0.1:4567

复制那个 *.ngrok.io 地址!我们现在回到 WebHook 的『发送地址』设置,将刚才的地址粘贴进输入框。是一个类似这样的链接 http://7e9ea9dc.ngrok.io/payload

完成这些步骤后,我们就通过路径 /payload 将自己的本地地址暴露到因特网。

编写服务

有了 ngrok 将我们本地环境暴露到了因特网后,我们就可以在自己本地编写程序通过 /payload 监听 WebHook 的请求了。

下面是一个简单的 Sinatra 程序:

require 'sinatra'
require 'json'

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

这里可以了解更多关于 Sinatra 的信息)

启动这个服务。

前面我们新建 WebHook 时让它监听了任务事件,现在我们去设置了 WebHook 的那个项目中创建一个新的任务。创建任务后,返回我们的终端。您可能会看到一些类似这样的输出内容:

~/Developer/web-hooks-samples/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"=>"creat", "task"=>{"url"=>"...

恭喜你!您已经成功的配置好监听 WebHooks 的服务。您的服务现在可以获取到 WebHook 发出的数据了,那么接下来,您就可以选择如何处理这些数据。

开发中,可能需要进行一些调试测试,我们提供了一定的调试测试的办法。请阅读『测试 WebHooks』。