【Python】ChatworkでAPIを使って自動的にメッセージを送る

本ページはプロモーションが含まれています

Pythonでバッチを作った時にエラーや処理結果をChatworkに送るプログラムを作る機会があったので備忘的に書き残しています

シンプルな作りかつ公式ドキュメントにあるソースをちょっと弄った程度の簡単プログラムです

APIの利用に必要なもの

まず最初にプログラムのなかで必要なパラメータが2つありまして

  • APIトークン
  • ルームID

の取得方法をご紹介

APIトークンを取得

※ここでAPIトークンを取得したアカウントでメッセージを送ることになるので普段使いするアカウントではなく”通知用アカウント”を別で作ってトークンを取得することを推奨します

ログイン後に右上にあるアカウント名をクリックして表示されるメニューの中から”サービス連携“をクリック

ChatworkのWEBページへ飛ぶので左側のメニューで”APIトークン“をクリックするとAPIトークンが表示される画面に遷移するのでコピー

ルームIDを取得

次はメッセージを送りたいルームを指定するために対象のルームIDを取得します

①”通知対象にするグループチャット“をクリックしてアクティブにしておく
②”右上の歯車のアイコン“をクリック
③”グループチャットの設定“をクリック

の順にメニュー遷移する

グループチャットの設定画面左下に”ルームID“が表示されているので控えておく

Pythonのプログラム

※2025/04/03 APIリクエストの仕様変更反映してます

肝心のPythonプログラムがこちら

公式ページのソースをちょっと弄っただけですが、bool型にしてステータスコードが200かどうかでTrue・False判定してます

import requests

# messageの引数だけでも通知できるように初期値の設定
CHATWORK_TOKEN = '********************************'
CHATWORK_ROOM_ID = '999999999'

def send_to_chatwork(message, chatwork_token=CHATWORK_TOKEN, room_id=CHATWORK_ROOM_ID) -> bool:
    headers = {"X-ChatWorkToken": chatwork_token}
    url = f"https://api.chatwork.com/v2/rooms/{room_id}/messages"
    payload = {
        "self_unread": 0,
        "body": message
    }
    headers = {
        "accept": "application/json",
        "content-type": "application/x-www-form-urlencoded",
        "x-chatworktoken": chatwork_token
    }
    response = requests.post(url, data=payload, headers=headers)
    if response.status_code == 200:
        return True
    else:
        return False
import requests

# messageの引数だけでも通知できるように初期値の設定
CHATWORK_TOKEN = '********************************'
ROOM_ID = '999999999'


def send_to_chatwork(message, token=CHATWORK_TOKEN, room_id=CHATWORK_ROOM_ID) -> bool:
    headers = {"X-ChatWorkToken": token}
    url = f"https://api.chatwork.com/v2/rooms/{room_id}/messages"
    data = {"body": message}
    response = requests.post(url, headers=headers, data=data)
    if response.status_code == 200:
        print("Message sent successfully.")
        return True
    else:
        print("Failed to send message.")
        return False


def main():
    message = 'テスト通知'
    send_to_chatwork(message, '5cbc320450032388263d0073b7473a54', '331928429')


if __name__ == "__main__":
    main()

Chatwork上でメッセージを送信した時と同じようにプログラムでメッセージ送信されている

通知結果

↓のようにAPIトークンを発行したユーザーでメッセージを送ることができます

公式ドキュメント

公式ドキュメントはいくつかありますが、↓が簡易テストもできてわかりやすいです

Chatwork APIドキュメント
クラウド型ビジネスチャットツール「Chatwork」における開発者向けAPIの仕様詳細について記載しています

あとがき

LINEの通知プログラムも作りましたが仕事で使おうと思うとするとChatworkの方が利用シーン多いと思って作ってみました

気が向いたらTeams版も作ろうかと思います

LINEの通知プログラム

LINEの通知プログラムはコチラからどうぞ

※LINE Notifyは2025年3月で終了しました

コメント

タイトルとURLをコピーしました