はじめに
本記事では、Mattermost にメッセージを自動投稿するボットを Python で簡単に作成する方法を紹介します。
思ったよりもスムーズに作成できたので、興味のある方はぜひ参考にしてみてください!
Webhook 機能を利用することで、サーバーへの通知や定期投稿が手軽に実現でき感動しました...!!
書こうと思ったきっかけ
個人的にWebhook(ウェブフック)の仕組みを理解したいと考え、前回技術検証した Mattermost を使って、今回は Webhook を使った自動投稿の検証をしてみようと思いました。
前回の記事の続きになります!まだの方はぜひ!!
※内容に不備などがございましたら、お手数ですが優しくご指摘いただけますと幸いです。
Webhook(ウェブフック)とは?
Webhook(ウェブフック)は、特定のイベントが発生した際に、事前に指定されたURLに自動でHTTPリクエストを送信する仕組みです。
引用画像:https://bcart.jp/functions/detail/158/
リアルタイムに外部サービスと連携でき、通知や処理の自動化に活用されます。たとえば、GitHubのプッシュ通知やチャットアプリへの自動投稿などがあります。
参考文献
実際にやってみた
検証内容の概要について
- Mattermost の Webhook URL を取得
- Python スクリプトで Webhook 経由で投稿
- 任意の時間に実行(例:cron で定期投稿も可)
Step 1: Webhook の作成(Mattermost)
- Mattermost に管理者または Bot 権限でログイン
- 任意のチャンネルに移動(Town Squareで検証を進めていきます)
- メニューから「インテグレーション > 入力用 Webhook」を選択
Incoming Webhooksになります!
- 「新しい入力用Webhookを追加」
- 名前:
my-bot
- チャンネル: 任意の投稿先チャンネル
- 「Save」を押すと Webhook URL(例:
https://mattermost.example.com/hooks/xxxxxxxx
)が発行される
こんな感じです!
Apple Silicon 対応のPython環境を作成
ステップ1:venv で仮想環境を作成する
cd ~/Desktop/macbook\ pro/docker
python3 -m venv venv
source venv/bin/activate
ステップ2:ライブラリをクリーンにインストール
pip install --upgrade pip
pip install requests
こんな感じで問題なく仮想環境を構築できました!
Step 2: Python スクリプトを書く
import requests
WEBHOOK_URL = "https://mattermost.example.com/hooks/xxxxxxxx"
MESSAGE = "こんにちは!ボットからのメッセージです🌟"
def post_to_mattermost():
res = requests.post(WEBHOOK_URL, json={"text": MESSAGE})
print("投稿成功" if res.status_code == 200 else f"投稿失敗: {res.status_code}")
if __name__ == "__main__":
post_to_mattermost()
コードの中でしていること
Mattermost の Webhook を使って指定メッセージを送信する処理 を行っています。
簡単にまとめると以下の通りです:
-
WEBHOOK_URL
に 送信先の Webhook URL を指定 -
MESSAGE
に 送るメッセージを定義 -
requests.post()
で メッセージを送信 - 成功すれば「投稿成功」、失敗すれば ステータスコード付きで「投稿失敗」 と表示
実行すると、Mattermost に「こんにちは!ボットからのメッセージです🌟」 が投稿されます。
実行方法
python mattermost_bot.py
問題なくメッセージが届いていることが確認できました!
補足
- 投稿内容に
@channel
や@here
を含めれば通知にも使えます。 - 複雑な処理が必要な場合は、Mattermost の Bot Token を使って API 経由でやり取りする方法もありますが、Webhook を使う方法が最も簡単だと思いました!
まとめ
ここまでお読みいただき、ありがとうございました!
Mattermost の Webhook 機能を使えば、簡単にチャット通知ボットを作ることができます。
Python スクリプトと組み合わせれば、定期実行やイベント駆動型の通知などもすぐに実現できます。
まずは Webhook の仕組みを試して、用途に応じて拡張してみてください...!(楽しい検証だったので、またいろいろ試してみようと思います!!)
おまけ:定期投稿したい場合(Linux)
crontab -e
cron(クーロン) というスケジューラーを使って、毎日特定の時間に Python スクリプトを実行する設定も可能です...
# 毎日9時に投稿
0 9 * * * /usr/bin/python3 /path/to/mattermost_bot.py