1. チャットワークのAPIトークンを取得する
画面右上のユーザーのアイコンをクリック>サービス連携>APIトークンで確認
- 右上のUIからサービス連携を選択
2.先ずはpost manで叩いてみる
- 先ずは送りたいチャットルームのルームIDを取得する(URLの#!ridの後ろの数字をコピー)
https://www.chatwork.com/#!ridxxxxxxxxxxxxx
-
Authorizationを設定する(今回はテストで叩くだけなのでNo Authに設定する)
-
headerをセットする
- X-ChatWorkTokenに先程コピーしたトークンをコピペする。
- Content-Typeはtext/htmlに設定(ほかのやり方でも行けるみたいだがjsonは行けないみたい)
-
bodyをセットする
-
sendを押下
-
以下の様なレスポンスが返って来れば成功
{
"message_id": "xxxxxxxxxxxxxxx"
}
3. Laravelコード上での実装
$roomId = xxxxxxxxx;
$url = "https://api.chatwork.com/v2/rooms/{$roomId}/messages";
$token = xxxxxxxxxxxxxxxxxxxxxxxxxxx
$headers = [
'X-ChatWorkToken' => $token //1.でコピーしたtoken,
'Content-Type' => 'application/x-www-form-urlencoded'
];
$body = "テストメッセージ";
$params = [
'headers' => $headers
'form_params' => [
'body' => $body
]
];
$client = new \GuzzleHttp\Client();
$client->request('POST', $url, $params);
※GuzzleでAPIリクエストを行う場合、ヘッダーの書き方を
$params = [
'headers' => $headers,
'form_params' => [
'body' => $body
]
];
みたいに’form-params’を挟んで記述しないとエラーになるので注意。
注意点
チャットワークAPIに関して
APIトークン = ユーザーIDです。
基本的に参加してるチャットルームしか投稿出来ないですが、それでもルームIDとトークンがあれば簡単に悪用される恐れがあるので、実装はバックエンドで行う、トークンなどの大事な情報は.env
で管理する様にしましょう!
以上です。
同じようなやり方はたくさんあったが、Guzzleクライアントを使って実装してる記事は見つからなかったので書きました。
誰かの参考になれば幸いです。