DUICUO

Python を使用して Mattermost で ChatOps チャットボットを作成する

ChatOpsは、人、プロセス、ツール、そして自動化を透明なワークフローに統合するコラボレーションモデルです。Mattermostは、組織が安全かつ効果的かつ効率的にコミュニケーションをとることを可能にする、オープンソースのセルフホスト型メッセージングプラットフォームです。Slack、Discord、その他のプロプライエタリなメッセージングプラットフォームに代わる、優れたオープンソースの選択肢です。この記事では、Mattermost上でChatOpsボットを作成する手順を、必要なコード例と解説を含めて概説します。

前提条件

始める前に、Mattermost サーバーにアクセスできること、Python がインストールされていること、pip を使用して Mattermost Python ドライバーがインストールされていることを確認してください。

Mattermostでロボットアカウントを作成する

ロボットアカウントを作成するには、Mattermostシステムコンソールにアクセスし、適切なアクセス権限を持つロボットアカウントを追加します。Pythonスクリプトで使用するために、ロボットのユーザー名とパスワードを取得してください。

Mattermost Pythonドライバーを設定する

​pip​を使用してMattermost Pythonドライバーをインストールし、Pythonスクリプトにインポートします。新しいドライバーインスタンスを作成し、Mattermostサーバーにログインします。

PythonでChatOpsボットを作成する

新しいPythonスクリプトを作成し、インポートに必要なライブラリを定義し、Mattermost駆動型APIを使用してボットの機能を実装します。メッセージ、コマンド、その他のイベントを処理するコードを記述し、Mattermost駆動型APIメソッドを使用してチャネルとユーザーにメッセージと通知を送信します。最後に、ChatOpsボットのデバッグとテストを行います。

ChatOps ボットのコード例

以下は、ユーザー メッセージに応答するシンプルな ChatOps ボットのサンプル Python コードです。

 mattermostdriverからドライバーをインポート

bot_username = 'bot_username'
bot_password = 'bot_password'
server_url = 'https://your.mattermost.server.url'
def main():
ドライバー= Driver({ 'url' : server_url, 'login_id' : bot_username, 'password' : bot_password, 'scheme' : 'https' })
ドライバー.ログイン()
チーム= driver.teams.get_team_by_name( 'チーム名' )
チャンネル= driver.channels.get_channel_by_name(チーム[ 'id' ], 'channel_name' )
@driver.on( 'メッセージ' )
def handle_message(post, **kwargs):
post[ 'message' ] == ' hello'の場合:
ドライバー.posts.create_post({
'channel_id' : 投稿[ 'channel_id' ],
「メッセージ」 : 「こんにちは!」
})
ドライバー.init_websocket()
__name__ == ' __main__'の場合:
主要()

機能を追加する

Mattermostで基本的なChatOpsボットを作成した後、機能を追加して機能を拡張できます。手順は以下のとおりです。

  • 追加したい機能を定義する:コードを書く前に、ChatOpsボットに追加したい機能を定義する必要があります。通知の送信からサードパーティツールとの統合まで、あらゆる機能が対象となります。
  • コードの作成:追加したい機能が決まったら、コードの作成を開始できます。コードは追加する機能によって異なりますが、Mattermost Pythonドライバーを使用してMattermost APIと連携し、その機能を実装できます。
  • コードのテスト:コードを記述したら、期待通りに動作するかを確認するためにテストすることが重要です。本番サーバーにデプロイする前に、開発サーバーまたはテストチャンネルでコードをテストできます。
  • コードのデプロイ:テストが完了し、期待通りに動作することが確認できたら、本番サーバーにデプロイできます。組織のデプロイプロセスに従い、新しいコードが既存の機能に影響を及ぼさないことを確認してください。
  • 新機能のドキュメント化:ChatOpsボットに追加した新機能はすべてドキュメント化することが重要です。これにより、他のチームメンバーがボットを使いやすくし、その機能を理解しやすくなります。

ChatOps Bot 機能の例としては、サードパーティ ツールとの統合や、特定のタスクのステータス更新の提供などが挙げられます。

 mattermostdriverからドライバーをインポート
輸入リクエスト
bot_username = 'bot_username'
bot_password = 'bot_password'
server_url = 'https://your.mattermost.server.url'
def main():
ドライバー= Driver({ 'url' : server_url, 'login_id' : bot_username, 'password' : bot_password, 'scheme' : 'https' })
ドライバー.ログイン()
チーム= driver.teams.get_team_by_name( 'チーム名' )
チャンネル= driver.channels.get_channel_by_name(チーム[ 'id' ], 'channel_name' )
@driver.on( 'メッセージ' )
def handle_message(post, **kwargs):
post[ 'message' ] == 'status'の場合:
# サードパーティツールAPIにリクエストを送信してステータスを取得します
レスポンス=リクエスト.get( 'https://api.thirdpartytool.com/status' )
response.status_code == 200 の場合:
ステータス= response.json()[ 'ステータス' ]
ドライバー.posts.create_post({
'channel_id' : 投稿[ 'channel_id' ],
'message' : f 'ステータスは {status} です'
})
それ以外
ドライバー.posts.create_post({
'channel_id' : 投稿[ 'channel_id' ],
「メッセージ」 : 「ステータスを取得できませんでした」
})
ドライバー.init_websocket()
__name__ == ' __main__'の場合:
主要()

この例では、ChatOpsボットはコマンド「 ​status​をリッスンし、サードパーティAPIにリクエストを送信して現在のステータスを取得します。その後、コマンドが発行されたMattermostチャンネルにステータスの更新を公開します。これにより、チームメンバーはチャットプラットフォームを離れることなく、タスクのステータスの更新を迅速に受け取ることができます。

オープンソースのChatOps

つまり、MattermostでChatOpsボットを作成するのは簡単なプロセスであり、組織のコミュニケーションとワークフローに多くのメリットをもたらすことができます。この記事では、ボットの作成を開始し、新しい機能を追加してカスタマイズするための手順とコード例を段階的に説明します。基本を理解したら、ChatOpsとMattermostをさらに深く探求し、チームのコラボレーションと生産性を最適化しましょう。