こんにちは、Misoca開発チームの@Pranc1ngPegasusです。
今年の7月からMisocaにjoinしました。自己紹介はこちら。
この記事は、Misoca Advent Calendar 2017の11日目の記事です。
突然ですが、みなさんはGeekbot(https://geekbot.io) を使っていますか? GeekbotはSlackプラグインの1つで、設定した時間に質問をしてくれて、回答内容をSlackチャンネルに流してくれるというツールです。 Misocaでは主にプロジェクト朝会前の情報共有に使っています。
プロジェクト開始時には必ず設定するので、自動化ツールを作ることにしましたが、Geekbotにはgemがなかったので作りました。
使い方
リポジトリのREADMEにも書いてあるのですが、改めて紹介します。 レスポンスは全てjson形式で返ってきます。
使い始めるまで
- まず、ここにアクセス、Slack認証をしてGeekbotのAPI_TOKENを取得します。
- それを
.env
などの設定ファイルに貼り付けます(もちろん直書きしてもいいです)。 client = Geekbot::Client.new(access_token: ENV['<your_access_token>'])
のようにして準備完了です。
チームメンバーの一覧を取得する
client.index_teams #=> GET /v1/teams
reportの一覧を取得する
client.index_reports #=> GET /v1/reports
standupの一覧を取得する
client.index_standups #=> GET /v1/standups
特定のstandupを取得する
client.show_standup(id: xxx) #=> GET /v1/standups/:id
standupを作成する
※ 現在Geekbot管理元に問い合わせ中ですが、APIから作成したstandupをUI側から操作することができません。
client.create_standup(params: param) #=> POST /v1/standups
standupを更新する
client.update_standup(id: xxx, params: param) #=> PATCH /v1/standups/:id
standupを置き換える
※ 現在Geekbot管理元に問い合わせ中ですが、現在リクエストを送ると500エラーが返ってきます。
client.replace_standup(id: xxx, params: param) #=> PUT /v1/standups/:id
standupを削除する
client.destroy_standup(id: xxx) #=> DELETE /v1/standups/:id
必要なparams
standupを作成したり、更新したりする場合に必要なパラメータは以下のようになっています。 リクエストを送信する際には全てのパラメータを送ってあげる必要があるようです。
{ "name": "MyStandup", "channel": "#general", "time": "10:30:00", "timezone": "Europe/London", "wait_time": 15, "days": [ "Mon", "Wed", "Fri" ], "questions": [ { "question": "What did you do since yesterday?" }, { "question": "What will you do today?" } ], "users": [ 10, 11, 12 ] }
感謝
Geekbot管理元のチャットサポートに問い合わせをしたときに、所在地のギリシャが早朝4:30にも関わらず爆速で返答をしてくれたPanosさんに感謝します。
gemを作成する上で、APIから作ったものがUIで編集できなかったり、エラーが返ってくるメソッドがあったりしましたが、 Panosさんに報告したところ、開発チームに連絡をして、現在改修に向かっているとのことなので、近いうちに全てのメソッドが使えるようになると思われます。
最後に
ないものは作る!というものづくりの精神でgemを作ってみました。 はじめてgemを作ってみたのですが、APIの動きやレスポンスに対するRuby側の動きなど、私自身のRubyへの理解が深まり、とても良い経験だったと感じています。
Misoca Advent Calendar 2017、明日の担当は@lulu-ululです。