menu-icon

Chatwork APIを使ってメッセージ投稿してみる

普段はSlackを使っているのですが、ChatworkのAPIについて調べることがあったので、使い方のメモを兼ねて、APIでメッセージ投稿してみます。

準備

APIトークンの取得

まず、APIのコールに必要なトークンを取得します。なお、プランによっては管理者への申請が必要らしいです。以下はフリープラン・パーソナルプランの場合です。

画面右上の自分のアイコンをクリック→表示されるメニューの[API設定]

表示される画面で、トークンが取得できます。

テスト用のチャット作成

APIでメッセージを投稿した場合でも、他の人から見ると自分の投稿と変わらない(Botアカウントのような形ではない)です。なので試すだけなら新規でグループチャットを作り、そこで色々やった方が良いと思います。

今回はtestという名前のグループチャットを新規作成し、使いました。

実践

今回はお試しなので、ターミナルでcurlコマンドを叩いてAPIをコールします。

対象のチャットのroom_idを調べる

APIを使用してチャットに投稿するには、対象のroom_idが必要になります。そこで自分のチャット一覧をAPIで取得し、room_idを調べます。APIドキュメントはこちらです。

以下のコマンドを実行します(トークンは適当です)。

$ curl -X GET -H "X-ChatWorkToken: hogetoken" "https://api.chatwork.com/v2/rooms"

すると、以下のようなレスポンスが返ってきますので、該当のチャットのroom_idを控えておきます(レスポンスのIDは適当です)。

[{"room_id":1000,"name":"test", --略-- }]

メッセージ投稿

room_idがわかりましたので、メッセージ投稿してみます。使用するAPIのドキュメントはコチラです。

$ curl -X POST -H "X-ChatWorkToken: hogetoken" -d "body=Hello+World" "https://api.chatwork.com/v2/rooms/1000/messages"

画面上でメッセージが投稿できたことが確認できました。

次はもう少し整形したメッセージを送ってみます。フォーマットはメッセージ記法のドキュメントにあります。

$ curl -X POST -H "X-ChatWorkToken: hogetoken" -d "body=%5Binfo%5D%5Btitle%5DApplication+Error%5B%2Ftitle%5D%E3%82%84%E3%81%B0%E3%81%84%E3%82%88%E3%82%84%E3%81%B0%E3%81%84%E3%82%88%5B%2Finfo%5D" "https://api.chatwork.com/v2/rooms/1000/messages"

このようにシステムメッセージっぽいものを投稿できました!

まとめ

Chatwork API を使ってみました。APIトークンは必ずユーザーに紐づくようなので、システムメッセージ的な使い方の場合、Bot専用ユーザーを用意した方が良さそうな気がしました。ご参考までに。