0
0

More than 1 year has passed since last update.

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

Posted at

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です。
基本的に参加してるチャットルームしか投稿出来ないですが、それでもルームIDとトークンがあれば簡単に悪用される恐れがあるので、実装はバックエンドで行う、トークンなどの大事な情報は.envで管理する様にしましょう!

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

公式ドキュメント

Chatwork APIドキュメント

参考記事

chatwork api PHP - Google Search

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0