👣

【Laraval】チャットワークのAPIをGuzzleクライアントを使ってメッセージを送る

2022/09/02に公開

1. チャットワークのAPIトークンを取得する

画面右上のユーザーのアイコンをクリック>サービス連携>APIトークンで確認

  1. 右上のUIからサービス連携を選択

  1. APIトークンを選んでをメモする

2.先ずはpost manで叩いてみる

  1. 先ずは送りたいチャットルームのルームIDを取得する(URLの#!ridの後ろの数字をコピー)
https://www.chatwork.com/#!ridxxxxxxxxxxxxx
  1. API URLをpost manのURLに貼る(メソッドはPOSTを設定)

  2. Authorizationを設定する(今回はテストで叩くだけなのでNo Authに設定する)

  3. headerをセットする

    1. X-ChatWorkTokenに先程コピーしたトークンをコピペする。
    2. Content-Typeはtext/htmlに設定(ほかのやり方でも行けるみたいだがjsonは行けないみたい)
  4. bodyをセットする

    1. データはx-www-form-urlencodedに設定
    2. KEY名はbodyに設定
  5. sendを押下

  6. 以下の様なレスポンスが返って来れば成功

{
    "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です。

以上です。
同じようなやり方はたくさんあったが、Guzzleクライアントを使って実装してる記事は見つからなかったので書きました。
誰かの参考になれば幸いです。

公式ドキュメント

Chatwork APIドキュメント

参考記事

chatwork api PHP - Google Search

Chatwork API でメッセージを送信する

Discussion