2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NIJIBOXAdvent Calendar 2017

Day 14

ChatWork APIを叩いてみたらエラーになった話など

Last updated at Posted at 2017-12-14

ChatWorkのAPIを叩いてメッセージを投稿

chatworkのAPIをドキュメント(以下URL)を参考にすると
http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages

curl -X POST -H "X-ChatWorkToken: 自分のAPIトークン" -d "body=Hello+ChatWork%21" "https://api.chatwork.com/v2/rooms/{room_id}/messages"

とパラメータを指定して叩けばメッセージが登録されるらしいです。

room_id : チャットワークのルームのURLの#!ridより後の値
APIトークン : アカウントごとに発行するごとにできるAPIトークン値

Guzzleで叩いてみた

// xxxxxは各自設定を行う
define('ROOM_ID', 'xxxxxxx');
define('API_TOKEN', 'xxxxxxxxxxxxxxxxxxxxxx');

try {
    $client = new GuzzleHttp\Client();
    $request_url = "https://api.chatwork.com/v2/rooms/". ROOM_ID ."/messages";
    $client->post($request_url, [
        'headers'     => ['X-ChatWorkToken' => API_TOKEN],
        'body' => ['body' => 'hogehoge']
    ]);
} catch (GuzzleHttp\Exception\ClientException $e) {
    echo $e->getResponse()->getStatusCode();
    exit;
}

これを実行したところ、

FireShot Capture 16 - チャットワーク - test-room - https___www.chatwork.com_#!rid89667168.png

と投稿されました!

#エラった体験談

エラった1(ステータスコード:400)

APIを叩くときのbodyの中身が空文字の場合に、400が返ってきます。
上ケースではエラーになりませんでしたが、
文字数があまりにも多い場合にも、400が返ってくる挙動っぽいです。この場合にエラリました。
これは調べても該当ドキュメントが見つからず、まだよくわかってないのですが、
bodyにバイト数制限もしくは文字数制限があるんじゃないかと思ってます。
ちなみに


$hoge = '';
foreach (range(1,20000) as $value) {
  $hoge .= 'hoge';
}
try {
    $client = new GuzzleHttp\Client();
    $request_url = "https://api.chatwork.com/v2/rooms/". ROOM_ID ."/messages";
    $client->post($request_url, [
        'headers'     => ['X-ChatWorkToken' => API_TOKEN],
        'body' => ['body' => $hoge]
    ]);
} catch (GuzzleHttp\Exception\ClientException $e) {
    echo $e->getResponse()->getStatusCode();
    exit;
}

とした場合に400が返ってきました。
hoge * 10000なら200でしたので、このあたりに上限がありそうです。
私もこの文字数多すぎ問題でどうしようかと思ってるところです。。
心当たりがある人は確認してらいいかもしれません

エラった例2(ステータスコード:401)

アクセストークンが失効している場合には、401が返ってきます。
間違ったAPIトークンを設定している場合に401が返ってきました。
正しいAPIトークンかどうか確認してください。

以上です。

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?