@kotyのブログ

.NETとかJavaとかPythonとか勉強会のこととかを、田舎者SEがつづります。記事のライセンスは"CC BY"でお願いします。

やまーのAPIを使ってみた

yammerいいですよね。長く使っていると良いナレッジベースになりますし、他部署の方ともつながりができます。MSが買ってくれたおかげで、えらいひとにバレてもなんとか言い訳できるだろうし。できませんか、そうですか。

ところで、yammerを使っているとやってみたくなるのが社内システムとの連携です。今回ちょっとした連携の仕掛けを作ってみました。全部公開するわけにはいきませんが、yammerのAPIを叩く部分を紹介しようと思います。

開発および実行環境は下記です。

アプリケーションの登録

画像がなくてすみません。察してください。

このURL を開き、左側のメニューにある「Register New App」をクリックします。

入力項目を適当に入力し、continueをクリックします。

すると、登録したアプリのClientIDとClient secretが表示されます。

アクセストークンの取得

以下のことを一気通貫でやってくれるgemもあるんでしょうが、 自分はこちらを参考に手作業でやりました。

アプリケーションの登録時に表示されていたClientIDを下記にあてはめたURLを、ブラウザで開きます。 今回作ったのはサーバーアプリなのでredirect_uriは不要なのですが省略するとエラーします。なので適当に入力しておきます。ここでは、http%3A%2F%2Flocalhost としました。URLエンコードは不要かもしれません。。

https://www.yammer.com/your_network/dialog/oauth?client_id=[:client_id]&redirect_uri=http%3A%2F%2Flocalhost

するとoauthの認証画面が表示されるので「許可」をクリックします。すると、codeというクエリ文字列がついたURLにリダイレクトします。

次に、先に取得したclient_id、client_secret、codeを下記にあてはめたURLを、ブラウザで開きます。

https://www.yammer.com/oauth2/access_token.json?client_id=[:client_id]&client_secret=[:client_secret]&code=[:code]

すると、JSON文字列が表示されます。ここで目をこらしてみると、tokenというキーがあります。以下、このトークンを使ってAPIを叩きます。

rubyの開発環境の準備

gemが入っている前提で。

Gemfileは以下です。下の2個はテストのためのものなので、プロダクトとしては上の2個で十分です。

gem 'yam'
gem 'httpclient'

gem 'rspec'
gem 'timecop'

yammer API の簡単な紹介

require 'yam'

#APIのインスタンスを作る。
yam = Yam.new(アクセストークン, 'https://www.yammer.com/api/v1/')

#メッセージを取得
res = yam.get('/messages')
res.messages.each({|message|
  #本文
  puts message.body.parsed
  #ユーザー情報を取得してみる。
  user = yam.get('/users/' + message.sender_id.to_s)
  puts user.contact.email_addresses[0].address
}

#メッセージを投稿
yam.post('/messages', body: '今日はサビ残')

APIの戻り値の内容というかデータ構造を調べたかったのですがruby歴3日の私には良い方法が分からず、putsでコンソールに出して調べました。。。

利用したgemは、生のAPIに沿って作られているようなので、APIリファレンスを見れば細かい使い方も何となく分かるんじゃないでしょーか。