TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

【PHP】ChatworkのAPI使ってみた

チャットワーク(Chatwork)のAPIを使って指定ルームにメッセージを送る
PHPのクラスを作ってみました。

バッチ処理の結果をチャットワークで見たい、メールの設定がめんどくさい、
みたいなときに使えるかも。。


クラスファイル:Chatwork.php

<?php

class Chatwork {
	
	private $tokenHeaderKey = "X-ChatWorkToken: ";
	private $apiToken;		//APIトークン
	private $reqHeader;		//リクエストヘッダ
	private $room = [];		//ルームID

	/*
	 * コンストラクタ
	 * $apiToken: 自分のAPIトークン
	*/
	public function __construct($apiToken) {
		$this->apiToken = $apiToken;
		$this->reqHeader = ["{$this->tokenHeaderKey}{$this->apiToken}"];
		$this->getRooms();
	}
	
	/*
	 * ルーム一覧を取得
	 * $apiToken: 自分が所属する部屋の一覧を取得
	*/
	private function getRooms() {
		$uri = "https://api.chatwork.com/v1/rooms";
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $uri);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $this->reqHeader);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$ret = json_decode(curl_exec($ch));
		curl_close($ch);

		foreach ($ret as $r) {
			$this->room[$r->name] = $r->room_id;
		}
	}
	
	/*
	 * ルームIDを取得
	 * $roomName: ルーム名
	 * return: ルームID、見つからない場合false
	*/
	public function getRoomID($roomName) {
		return isset($this->room[$roomName]) ? $this->room[$roomName] : false;
	}
	
	
	/*
	 * ルームIDを指定してメッセージを送る
	 * $roomid: ルームID
	 * $msg: 送信メッセージ(改行は\n)
	*/
	public function sendMessage($roomid, $msg) {
		// リクエストURI
		$uri = "https://api.chatwork.com/v1/rooms/{$roomid}/messages";

		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $uri);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $this->reqHeader);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['body' => $msg]));
		curl_exec($ch);
		curl_close($ch);
	}

}

Chatwork.phpをinclude。自分のAPIトークンをコンストラクタに渡してインスタンス化すればOK。

$cw = new Chatwork('[API token]');


メッセージを送りたい部屋のルームIDを指定してメッセージを送れます。

$cw->sendMessage("[roomID]", "[Message]");

部屋名からルームIDを取得することもできます。
(というかChatwork画面から各部屋のルームIDを知る方法がわからなかった。。)

$roomid = $cw->getRoomID('[Room name]');

ほんと最低限の実相しかしてないので、興味ある方は公式ドキュメントを
参考に実装してみてはいかがでしょうかd( ̄  ̄)


Git:
https://github.com/kentaro-a/use-chatwork-api

参考:チャットワークAPIドキュメント