Chatworkタスクのリマインド管理

はじめに
表題の通りChatworkの未完了タスクをリマインドする機能を作ってみました。
言語はFrameworkなどを使わないベタRubyで。
言語はFrameworkなどを使わないベタRubyで。
流れ
ChatworkのAPI仕様と簡単なRubyが書ければ難しいことは無い。
1. ChatworkのAPIトークンを発行してもらう
2. rubyインストール (環境に応じて適当に)
3. rubyプログラムを実装
4. どこかサーバーのcronなどで毎日rubyプログラムを実行
肝は3番。
1. ChatworkのAPIトークンを発行してもらう
2. rubyインストール (環境に応じて適当に)
3. rubyプログラムを実装
4. どこかサーバーのcronなどで毎日rubyプログラムを実行
肝は3番。
プログラムの内容
上記の1, 2は割愛。
プログラムは以下です。APIなどの情報は仮のものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | require 'net/https' require 'json' require 'mail' uri = URI.parse('https://api.chatwork.com') client = Net::HTTP.new(uri.host, 443) client.use_ssl = true @token = 'hogefugahogefugahogefugahogefuga' res = client.get('/v2/my/tasks', {'X-ChatWorkToken' => @token}) @limit_day = 3 # JSON.parse(res.body) JSON.parse(res.body).each do |body| next if body["limit_time"].zero? or body["limit_time"] == "" @schedule = Time.at(body["limit_time"]) if (@schedule - (60*60*24 * @limit_day)) <= Time.now and @schedule > Time.now and body["status"] != "done" # @limit_day日以内 @body = "" body.each do |k, v| if v.is_a?(Array) v.each do |kk, vv| @body += "#{kk} : #{vv}\r\n" end else @body += "#{k} : #{v}\r\n" end end mail = Mail.new(from: 'hogefuga@sterfield.co.jp', to: 'hogefuga@sterfield.co.jp', subject: "#{@limit_day}日以内のタスクが完了していません。", body: @body) mail.deliver! end end |
@limit_day に「通知したい直近の未完了タスクの日数範囲」を指定。
上記の例だと3日以内の終わっていないタスクがあったらメールを送るというもの。
スケジュール登録
普通のcronと変わりなし。
以下のようにプログラムを指定して毎日10時に実行。
毎朝タスクを意識するように10時。
1 | 0 10 * * * root ruby /var/www/chatwork_task_notify.rb |
通知結果は・・・
task_id : 7777777
room : {“room_id”=>8888888, “name”=>”てすとタスク”, “icon_path”=>”https://appdata.chatwork.com/icon/ico_group.png”}
assigned_by_account : {“account_id”=>9999999, “name”=>”masanao ohba”, “avatar_image_url”=>”https://appdata.chatwork.com/avatar/9999/9999999.rsz.png”}
message_id : hogefugahogefugahoge
body : てすとのタスクです
limit_time : 1502290799
status : open
以上。
Author Profile

スターフィールド編集部
SHARE