はじめに
以下の記事をなぞってみたメモになります。
#やりたいこと
chatworkを普段使っているので、毎月の定例報告などを流したい。
- 経費精算締め切り
- 朝会など定例会開始の呼びかけ
Chatwork API 利用申請
こちらから申請をします。
Chatwork API 獲得
申請をするとすぐにmailが飛んできたりして、使えますよ〜となりました。
ChatworkのPersonal Settingsの中にAPI発行タブが出てくるので、そこからAPIを獲得します。
Rubyコードを書きます。
とりあえず、ルームの情報を取ってくる
require 'rss'
require 'net/https'
require 'json'
CW_API_TOKEN = "API"
def request_api
uri = URI('https://api.chatwork.com/v1/rooms')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true # HTTPSでエンドポイントへ通信が必要です
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
header = { "X-ChatWorkToken" => CW_API_TOKEN } #api_tokenを、headerのX-ChatWorkTokenにセットすることが必要です
body = nil
res = http.get(uri, header) #あとはGETします
puts JSON.parse(res.body)
end
request_api
メッセージを送りたいルームのRoom IDをメモしておきます。
ルームにメッセージを送る
require 'rss'
require 'net/https'
require 'json'
CW_API_TOKEN = "API"
ROOM_ID = "ROOM_ID"
def post_msg_to_cw(data)
uri = URI('https://api.chatwork.com/v1/rooms/' + ROOM_ID + '/messages')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
header = { "X-ChatWorkToken" => CW_API_TOKEN }
body = "body=" + URI.encode(data)
res = http.post(uri, body, header)
puts JSON.parse(res.body)
end
post_msg_to_cw(ARGV[0])
あとはこのコードをcronでうまいこと設定すれば終わりです。
MacでCron
本来なら常に動いているサーバーのcronを使いたいところですが、今回はめんどいのでローカルのmacに入れときます。
*/10 11 19 * * ruby /Users/USERNAME/DIRECTORY/filename.rb "経費精算のお仕事をしましょう"
References
参考というか、ほぼそのままやったのですが、以下を見てやってみました。