HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

Chatwork APIを使ってみる (2)

はじめに

前回の続きです。

hrroct.hatenablog.com

今回はより実践的、具体的な使い方を紹介します。

developer.chatwork.com

ドキュメントはこちらです。

タスク管理の補助に使ってみる

Chatworkにはタスク機能がついているのですが、タスク管理をしようとすると、なかなかに大変です。
タスク管理はタスク管理専用のアプリケーションを使うべきであることは承知の上ですが…。
会社の縛りでうまく行かないこともあるのが、残念なところです ;(

さて。
個人的には、他人のタスクが見えづらいのが困ります。
もちろん見ること自体はできますが、人数やタスクが増えると「□自分のタスクのみ表示」にチェックを入れてる人が多いのではないでしょうか。

そこで、

  • 特定の人間と自分のタスクをみたい。
  • かつ、本日が期限のタスクだけでいい。
  • 複数のグループチャットから探したい。

という要望に対応してみます。

コードはこんな感じ

<?php

$targetAccounts = array(MEMBER_IDS);
$targetRoomIds = array(ROOM_IDS);

$message = '';
// 部屋とアカウントでループして、タスクを探します。
foreach ($targetRoomIds as $targetRoomId) {
    foreach ($targetAccounts as $accountId) {

        // タスク検索APIを使います。部屋とアカウントを指定します。
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/".$targetRoomId."/tasks?account_id=".$accountId."&status=open");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-ChatWorkToken: TOKEN_CODE"));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return = curl_exec($ch);
        curl_close($ch);
        $taskList = json_decode($return, true);

        // 「今日」の日時の開始と終了を割り出す
        $now = time();
        $year  = date('Y', $now);
        $month = date('m', $now);
        $day   = date('d', $now);
        $todayStart = mktime(0,0,0,$month,$day,$year);
        $todayEnd   = mktime(23,59,59,$month,$day,$year);

        // 取得したタスクをループ
        if (!empty($taskList)) {
            foreach ($taskList as $eachTask) {
                // 実行した日のタスクだけ出力
                if ($todayStart < $eachTask['limit_time'] && $todayEnd > $eachTask['limit_time']) {
                    // 出力の方法は、工夫してみてください
                    $message .= 'https://www.chatwork.com/#!rid'.$targetRoomId.'-'.$eachTask['message_id'].PHP_EOL;
                    $message .= '■担当者: '.$eachTask['account']['name'].PHP_EOL;
                    $message .= '[info]'.$eachTask['body'].'[/info]'.PHP_EOL;
                }
            }
        }
    }
}
$message = '[info][title]■■■本日のタスク■■■[/title]'.$message .'[/info]';
  • MEMBER_IDSROOM_IDSTOKEN_CODEにご自分の環境に合うものをセットしてください。
  • 最終的に、$messageを前回の記事のように投稿してあげれば完成です。
  • これをcronに設定して毎朝動くするようにすると便利です。

Chatworkは装飾に[info][/info]とか[info][title][/title][/info]が使えるので、活用すると見やすくなります。

終わりに

上記コードだと、タスクがない場合に微妙な表示になったりします。
それぞれのニーズや使い方によって、調整をして使ってください。

以上でした!