準備するもの
chatwork APIトークンとルームIDが必要となります。
APIトークンの調べ方
アカウント名をクリック -> 「サービス連携」をクリック
![chatwork サービス連携](https://halfpower.work/wp-content/uploads/2022/08/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E9%80%A3%E6%90%BA.png)
「APIトークン」をクリック
![chatwork APIトークン](https://halfpower.work/wp-content/uploads/2022/08/API%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3.png)
APIトークンが表示される。
![chatwork APIトークン表示](https://halfpower.work/wp-content/uploads/2022/08/API%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E8%A1%A8%E7%A4%BA.png)
ルームIDの調べ方
投稿したいグループチャット、またはコンタクトをクリック
![chatwork グループチャットリスト](https://halfpower.work/wp-content/uploads/2022/08/%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%AA%E3%82%B9%E3%83%88.png)
その時に表示されるURLの”rid”より右の部分がルームID。
例)https://www.chatwork.com/#!rid999999999の場合
ルームIDは、”999999999″となる。
ここからはLaravelのコーディング
chatworkへの通知を行うコントローラー内で以下を追記。
public function polling(Request $request)
{
$token = 'APIトークン'; // 取得したAPIトークン
$room_id = 'ルームID'; // 取得したルームID
$headers = [
'X-ChatWorkToken: ' . $token,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/{$room_id}/messages");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
// エラー処理
die('Error: ' . curl_error($ch));
}
$messages = json_decode($response, true);
// 取得した$messagesの処理を行う
}
以下のような構造で返ってくる。
![chatwork API 受信メッセージの中身](https://halfpower.work/wp-content/uploads/2023/08/1.png)
宛先指定をした場合は、body部の先頭に”[To:xxxxxx]〇〇さん”が入る。
宛先用のカラムを用意してくれれば良いのに。。。
これはちょっと加工が必要だな。。。
![chatwork API 受信メッセージの中身 宛先指定](https://halfpower.work/wp-content/uploads/2023/08/2-1.png)
ファイルを添付した場合は、body部の最後にファイル情報が記述されている。
添付ファイルを取得することは出来ないのかな?
![chatwork API 受信メッセージの中身 ファイル添付](https://halfpower.work/wp-content/uploads/2023/08/3-1.png)
ファイルを複数添付した場合は、添付した数分にメッセージが分割される。
1メッセージに1添付ファイルとなる。当たり前だけどchatworkの仕様と同じ。
![chatwork API 受信メッセージの中身 ファイル添付複数](https://halfpower.work/wp-content/uploads/2023/08/4.png)
1度メッセージを取得すると新しいメッセージを受信するまではNULLが帰ってくる。
処理済みメッセージの仕分けをしなくて良いので助かる仕様。
![chatwork API 受信メッセージの中身 受信メッセージがない場合](https://halfpower.work/wp-content/uploads/2023/08/image.png)