【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( ̄  ̄)