タイトルの通り、ChatworkAPIをRubyから呼び出して遊んでみました。
APIを使ってみた理由
そもそもなぜAPIを使ってみたかというと、仕事でチャットワークを使っていると定期的な報告やアナウンス的な連絡などを自動化したいと思うことがあったからです。
この記事を書いている2015年12月25日時点ではChatWorkAPIはプレビュー版ということでAPIを呼び出すには利用申請が必要になります。
私の場合は申込みをしてから数日くらいで申請が受理されましたみたいなメールが届きました。※申込みしたのはだいぶ前ですが。。。
APIの利用ができるようになるとチャットワークの動作設定画面でAPIトークンを発行してもらえるようになります。
※APIトークンが流出して不正に利用されると問題になるので取扱いには注意した方がよさそう。
発行してもらったAPIトークンの使い方ですが、各APIを呼び出す際にリクエストヘッダに、
X-ChatWorkToken:APIトークン
を追加することで認証されるそうです。
APIの使い方
APIの使用についてはGithubのRAMLを読んでねということのようです。
RAMLフォーマットについてはよく知りませんでしたが、WebAPIの仕様は大体どのサービスも大きな違いはないので雰囲気で何をしないといけないかはつかめました。具体的な使い方については↓こちらのページに具体的に説明が書かれています。
developer.chatwork.com
※curlコマンドを使った例があるのが分かりやすいですね。ちなみにレスポンスはJSONフォーマットです。
やりたかったこと
私がやりたかったのはあるチャットにAPI経由でメッセージを投稿するということでしたが、チャットにメッセージを投稿するには、まず投稿したいチャット(API上ではroomと定義されている)のIDを知る必要があります。
チャットの情報は、
https://api.chatwork.com/v1/rooms
を呼び出すことでチャットの情報の一覧が取得できます。
とりあえずテスト目的で「マイチャット」のIDを探して、投稿したコードはこんな感じです。
require 'net/https' require 'json' uri = URI.parse('https://api.chatwork.com') client = Net::HTTP.new(uri.host, 443) client.use_ssl = true # チャットの情報一覧を取得してお目当てのroomIDを探す res = client.get('/v1/rooms', {'X-ChatWorkToken' => 'APIトークン'}) puts JSON.parse(res.body) # roomIDを指定してメッセージを投稿 res = client.post('/v1/rooms/ルームID/messages', 'body=こんにちわ!', {'X-ChatWorkToken' => 'APIトークン'}) # 正常に投稿されるとメッセージIDが返る puts JSON.parse(res.body)