Pythonでチャットワークにメッセージを送る方法


こんにちは。
タダケン(@tadaken3)です。

Pythonでチャットワークにメッセージを送る方法をご紹介します。

本ブログでは、Google Apps Scirptでチャットワークにメッセージを送る方法を何度かご紹介していますが、Pythonでチャットワークにメッセージを送る方法も仕組みとしては同じです。

チャットワークが提供しているWEB APIに所定の方法でアクセスすることで、Pythonからチャットワークにメッセージが送れます。

スポンサーリンク

Requestsモジュールをインストールする

APIにアクセスするにはRequestsモジュールを使用します。
Requestsモジュールはpipでインストールできます。

初心者向けPythonでパッケージ管理をしてくれるツールpipのはじめての使い方
非エンジニアでWindowsユーザー向けにPythonを学んでいく方法をお伝えしています。今回はPythonのパッケージ管理をするツールpipの初心者向けの最初の使い方についてお伝えします。
pip install パッケージ名

コマンドプロンプトを立ち上げて、以下のコマンドを実行するとインストールが開始されます。

pip install requests

API KeyとRoom IDをセットする

チャットワークにメッセージを送るには、メッセージ本文とは他に以下の2つの情報が必要です。

通知を送るルームを指定するためのルームID
チャットワークの認証するAPIのアクセストークン

チャットワークのAPIを取得する方法はこちらの記事です。

【祝】Zapier連携!Twitterのツイートをチャットワークに通知するぞ
チャットワークがZapier経由でGmailやTwitterなどの各種サービスと組み合わせて連携するができるようになりました!まずTwitterのツイートをチャットワークに送る連携をやってみました。

ルームIDの取得方法はこちらにまとまっています。わからない方はぜひご覧になってみてください。

Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
Google Apps Scriptの第一歩ですが、しょっぱなから真っ先にチャットワークを操作してしまいます。初回はGASのプロジェクトの作成、ライブラリの追加、スクリプトの記述と実行までです。

チャットワークのAPIではヘッダーにAPIキー、URLにルームIDを指定します。
Pythonのコードは以下のようになります。

#coding=UTF-8
import requests

BASE_URL = 'https://api.chatwork.com/v2'

#Setting
roomid   = 'YOUR ROOM ID' #ルームIDを記載
message  = 'にゃんぱすー'
apikey   = 'Your API KEY' #APIのKeyを記載

post_message_url = '{}/rooms/{}/messages'.format(BASE_URL, roomid)

headers = { 'X-ChatWorkToken': apikey}
params = { 'body': message }

formatメソッドを使って、ルームIDを付与したURLを生成しています。APIキーはディクショナリ形式でヘッダーに、メッセージ本体はパラメターとして設定します。

実際にPythonからメッセージを送ってみる

requestsモジュールでPOSTメソッドを実行するには以下のように書きます。

requests.post(URL,オプション)

今回はヘッダーとパラメーターをオプションで指定します。

#coding=UTF-8
import requests

BASE_URL = 'https://api.chatwork.com/v2'

#Setting
roomid   = 'YOUR ROOM ID' #ルームIDを記載
message  = 'にゃんぱすー'
apikey   = 'Your API KEY' #APIのKeyを記載

post_message_url = '{}/rooms/{}/messages'.format(BASE_URL, roomid)

headers = { 'X-ChatWorkToken': apikey}
params = { 'body': message }
r = requests.post(post_message_url,
                    headers=headers,
                    params=params)
print(r)

ステータスコードが200が返ってきていれば成功です。ステータスコードは、Webサーバからのレスポンスの意味を表しています。

まとめ

今回はRequestsモジュールを使って、チャットワークにメッセージを送る方法をご紹介しました。

RequestsはWEB APIを利用する際によく使われるモジュールなので、使い方を覚えると応用範囲が広がります。

次回もPythonに関するテクニックをご紹介していきますね。
どうぞ、お楽しみに!

日々、仕事効率化やプログラミングに関することをツイートしています。よろしければ、こちらからTwitterアカウントのフォローをお願い致します。

コメント

  1. 淡中圏 より:

    この方法だと、本文がURLのクエリパラメータとしてエンコードされてしまいます。
    すると、長い文章を送ろうとしたときに、414 Request URI too longになり、投稿できません。
    またURLのクエリパラメータに本文をエンコードするのはセキュリティ的にも不安があります。
    そこで、
    r = requests.post(post_message_url,
    headers=headers,
    params=params)
    ではなく、
    r = requests.post(post_message_url,
    headers=headers,
    data=params) # 訂正
    とすれば、リクエストのボディ部分に本文がエンコードされ、長い文章も送れますし、セキュリティ的にも安心なのではないか、と思います。

    • 淡中圏さん

      アドバイスありがとうございます!
      確かに…検証しつつ、必要に応じて記事内容を変更させていただきます。

      今後とも、弊ブログをどうぞよろしくお願いいたします。

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