チャットワークAPIが楽しい①

イッパイアッテナでは、業務ツールとしてチャットワークを利用しているのですが、チャットワークにもAPIがあるんですね!触ってみたら、とっても楽しかったのでご紹介します。

Google Apps Scriptでも使えて、スプレッドシートやGoogleカレンダーとも連動も可能です。APIドキュメントもきちんとあって触りやすいです。

APIキーの取得方法

チャットワークの利用プランによってAPIキーの取得方法が違うようです。

フリープラン・パーソナルプランの方

チャットワークの右上メニュー内にある「API設定」から。

ビジネスプラン・エンタープライズプラン・KDDI ChatWorkの方

APIの利用申請から、組織管理者へ申請します。これは社内で組織管理者がどなたなのかによって承認の速度もマチマチだと思われます〜。

PHPからメッセージを送ってみる

メッセージを送るチャットを選びます。チャットのURLからルームIDが確認できます。

https://www.chatwork.com/#!rid【ここの数字がルームID】

チャットワークのメッセージ記述方法を使えば、TOで相手を指定してメッセージを送ることもできます。TOにはアカウントIDを指定します。プロフィール画面で見れるIDは「チャットワークID」で、「アカウントID」とは別物なのでご注意ください。アカウントIDの確認方法はこちらに詳しくありますが、引用した時に、aid=に続く数字がアカウントIDになります。

APIキー、ルームID、TOの値を変更して実行してみてください。本文を変更すれば、いろいろなメッセージを送ることができます。

<?php
// 自分のAPIトークン
$api_key = 'APIキー';

// 操作したいルームID
$room_id = 'ルームID';

// TOで送る相手
$to = '[To:アカウントID] 相手の氏名';

// 本文
$body = '[info][title]PHPからメッセージを送るよ[/title]インフォメーションテストです。[/info]';

// API URL
$api_url = 'https://api.chatwork.com/v2/rooms/' . $room_id . '/messages';

// 追加ヘッダー
$headers = array(
    'X-ChatWorkToken: ' . $api_key
);

// POST値
$data = array(
    'body' => $to . $body,
);

// curlで接続
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $api_url );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $data ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
$res = curl_exec( $curl );
curl_close( $curl );

// 結果を取得
$result = json_decode( $res );

if ( isset( $result->errors ) ) {
    echo 'メッセージの送信に失敗しました。';
} else {
    echo 'メッセージの送信に成功しました。';
}
?>

PHPからタスクも送れる

メッセージだけでなく、タスクも送信できます。APIキー、ルームID、タスクを送る相手のアカウントIDを変更して実行してみてください。本文と期限も変更できます。

<?php
// 自分のAPIトークン
$api_key = 'APIキー';

// 操作したいルームID
$room_id = 'ルームID';

// 本文
$body = '進捗はいかが?';

// 期限
$limit = strtotime( '2018-7-1 00:00:00' );

// タスクを送る相手
$to_ids = 'アカウントID';

// API URL
$api_url = 'https://api.chatwork.com/v2/rooms/' . $room_id . '/tasks';

// 追加ヘッダー
$headers = array(
 'X-ChatWorkToken: ' . $api_key
);

// POST値
$data = array(
 'body' => $body,
 'limit' => $limit,
 'to_ids' => $to_ids,
);

// curlで接続
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $api_url );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $data ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
$res = curl_exec( $curl );
curl_close( $curl );

// 結果を取得
$result = json_decode( $res );

if ( isset( $result->errors ) ) {
 echo 'タスクの送信に失敗しました。';
} else {
 echo 'タスクの送信に成功しました。';
}
?>

とっても簡単ですね!