Developers開発の実験等々、クイックサーブのメンバーが好き好きに書き込んでいく場所です。2.2.2概要チャットワークのAPIを使える状態にし、Rubyからチャットワークの各種操作を行う。今回の成果物についてはGithubから閲覧、ダウンロード可能。音声通話/ビデオ通話も可能チャットワークAPIとはチャットワークの基本的な機能をプログラムから利用するためのRestFullなAPI。現在(2017/05/20)は、プレビュー版のみの限定公開となっており、APIを利用するためには申請する必要があるチャットワークAPIの利用準備チャットワークAPIの利用申請チャットワークにログインしているブラウザで、利用申請ページにアクセスし、APIの利用申請を行う。利用が可能な状態になると、チャットワークで登録しているメールアドレスに、以下のような通知メールが届くのでそれまで待機(1営業日程度?)いつもお世話になっております。チャットワークAPI(プレビュー版)のご利用が可能となりましたのでお知らせいたします。APIトークンの確認メールが届いたら、ブラウザでチャットワークを開き、「動作設定」を開くと、以下のようにAPI発行メニューが追加されていることが確認できる。パスワードを入力することで、以下のようにAPIトークンを確認することができる(画像のトークンはダミー)トークンはこの画面で更新可能なので、必要に応じて更新する。APIトークンはプログラムでAPIを利用するのに必須のため、環境変数に保存しておく。https://api.chatwork.com/v2リクエストは必ずHTTPSを用いるリクエストヘッダに”X-ChatWorkToken”というキーでAPIトークンを指定する必要があるAPIの制限は5分で100回程度レスポンスは必ずJSONで返却されるただし、APIの成否判定の多くはレスポンスヘッダに含まれているAPIの動作確認さっそくプログラムを作っても良いが、API及びAPIトークンが正しく機能しているかを確認するため、curlコマンドで試しにAPIを呼び出してみる。hogehoge”を含めるすると、以下のレスポンスが返却される{"account_id":2091543,"room_id":59255776,"name":"笹木信吾","chatwork_id":"","organization_id":1118988,"organization_name":"","department":"","title":"","url":"https://github.com/Sa2Knight","introduction":"","mail":"sasaki@91932.com","tel_organization":"","tel_extension":"","tel_mobile":"090-7067-7376","skype":"","facebook":"","twitter":"","avatar_image_url":"https://appdata.chatwork.com/avatar/1623/1623307.rsz.png"}レスポンスを見る限り、無事にチャットワークAPIを用いて、自身のユーザ情報を取得できていることがわかる。RubyからチャットワークAPIを利用するChatworkクラスの作成とりあえずチャットワークAPIをRubyで叩くためのエンドポイントとなるChatworkクラスを作成する。endend例によって、APIトークンを指定してオブジェクトを生成する。トークンの指定を省略した場合に、環境変数”CHATWORKAPI”を参照するようにしてあるので、今回はそれを前提にする。APIのエンドポイントは全てのAPIで共通なので、クラス定数@@API_BASEで定義しておく。HTTP通信するメソッドの実装どのAPIでも共通となる、HTTPリクエストを投げてレスポンスを戻すメソッドを作成する。createRequestObjectは、そのヘルパーメソッドで、指定したHTTPメソッド(:get,:post,:put,:delete)に応じた、空のHTTPRequestオブジェクトを返却する。createHttpObject、対象のURL,HTTPメソッド,パラメータを指定すると、以下のことをしてくれる。endend上記のメソッドを用いて、各APIに対応したメソッドを実装する。各APIごとのメソッドを実装するあとはAPIドキュメントを参考に、各種APIを呼び出すためのメソッドを順に実装する。全て実装するのは疲れるので、とりあえず以下を実装した。既存のタスクを操作するためのAPIが無い。タスクを作ることは出来るのに完了したり編集したりすることがでない謎。実装例どのメソッドも基本的に実装内容は同じ(URL、メソッド、パラメータの有無などが異なるだけ)なので、全てを記載しないが、ここでは以下の2種類について記載する。JSON.parse(res.body)endcreateTask(タスクを新規登録する)createTaskは少しだけ複雑で、タスクを新規登録するルーム(チャット)IDとタスクの内容、担当者のユーザID一覧を指定して登録する。オプションでタスクの期限を指定することができる。APIが要求するパラメータでは、担当者のユーザID一覧はカンマ区切りで、期限はUNIXTIMEで指定する必要がある。これはそのままだと使いづらいので、メソッド側では担当者のユーザID一覧を配列で、期限をDateTimeオブジェクトで受け取るようにしている。メソッド内でそれをAPI用に変換して実行している。本項では、以下の手順で動作確認する動作確認用の新しいチャットルームを作成する(自分のみ参加)チャット内で適当に発言するチャット内にタスクを追加するチャットルームの情報を取得するチャットルームの発言一覧を取得するチャットルームのタスク一覧を取得するなお、動作確認中に使用するユーザのIDを’2091543′,及び作成するチャットルームのIDを’76097933’とし、以下のようにChatworkオブジェクトを生成済みとする。動作確認用に、「API動作確認ルーム」というチャットルームを作成する。参加者は、自身のみを管理者ユーザとして設定する。'動作確認用のルームです')実行すると、以下のように新規チャットルームが作成されたことがわかる。Time.now)実行すると、タスクが登録されたことが確認できるチャットの情報を取得する先程作成したチャットルームの情報を取得する。"status"=>"open"}]所感チャットワークのAPIはそれは見事なRestFull設計で感動を覚えるほど使いやすかっただがまだプレビュー版で、既存タスクの更新ができないなど、痒いところに手が届かないので正式リリースが待たれるAPIを叩くライブラリを作ったはいいが、問題はこれをどう活用するか。そこは全然考えてない。コメントをキャンセルメールアドレスが公開されることはありません。