ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

ペイロードを受信するようサーバーを設定する

受信するwebhookのペイロードを管理するためのサーバー設定を学んでください。

ここには以下の内容があります:

webhookがメッセージを配信する準備ができたので、受信するペイロードを処理するための基本的なSinatraサーバーをセットアップしましょう。

webhookのURLはhttp://localhost:4567/payloadに設定したことを思い出してください。 開発をローカルで行っているので、ローカルの開発環境をインターネットに公開し、GitHubがメッセージを送信して、ローカルサーバーでそれを処理できるようにしてやらなければなりません。

注釈: このプロジェクトの完全なソースコードは、platform-samplesリポジトリからダウンロードできます。

ngrokの利用

最初に、ローカルホストをインターネットに公開するプログラムをインストールします。 そのためにngrokを使用します。 すべての主要なオペレーティングシステムについて、ngrokは無料でダウンロードできます。

ダウンロードができたら、コマンドラインで./ngrok http 4567と実行すればローカルホストを公開できます。 以下のような行が表示されるはずです。

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

この格好いい*.ngrok.io というURLをコピーしてください! ここでペイロードのURLにもどり、このサーバーをそのフィールドに貼り付けます。 http://7e9ea9dc.ngrok.io/payloadのようになるはずです。

こうすることで、ローカルホストを/payloadというパスでインターネットに公開するようセットアップできました。

サーバーの作成

ここからが面白いところです! サーバーを/payloadPOSTリクエストに対して待ち受けさせたいですが、これはGitHubにそこがwebhookのURLだと伝えたからです。 ngrokはローカル環境を公開しているので、オンラインでどこかに本物のサーバーをセットアップする必要はなく、ローカルでコードをうまくテストできます。

小さなSinatraのアプリケーションをセットアップして、この情報で何かをさせてみましょう。 初期のセットアップは以下のようになるでしょう。

require 'sinatra'
require 'json'

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

(Sinatraの仕組みに詳しくない方は、Sinatraのガイドを読むことをお勧めします。)

このサーバーを起動してください。

webhookはIssuesと関連するイベントを待ち受けるようにセットアップしたので、先へ進んで新しいIssueをテストしているリポジトリで作成してください。 作成できたら、ターミナルに戻ってください。 以下のような出力があるでしょう。

$ ~/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"=>"...

成功です! webhookを待ち受けるようにサーバーを設定することに成功しました。 これでサーバーは、適切だと考えられる方法でこの情報を処理できるようになりました。 たとえば、「本物の」Webアプリケーションをセットアップしているなら、JSONの出力をデータベースに記録したいかもしれません。

楽しみと利益のためにwebhookを扱うための追加情報については、webhookのテストガイドを参照してください。

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.