3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mattermostの新規チャンネル追加を通知するbotを作った

Posted at

最近社内でMattermostを使うようになり、全てのチャンネルを閲覧するようにしているが、新規にチャンネルが増えても分からない。少し調べてみたがチャンネル追加を通知するような設定は無いようだった。
そこで、チャンネルが新規に追加されたら適当なチャンネルにその情報を投稿するbotを作ってみた。
Mattermostの公式HPにはJavaScript、Go用のドライバはあるが、Javaしか書けないマンなのでJavaで書いた。

作成したbot

cronで定期的に動かし、その時点のチャンネル一覧と、前回実行時に書き出しておいたチャンネルIDの一覧を比べて差異があったものの情報を投稿する。

利用したAPI

  • ログイン
    • URL:/api/v3/users/login
    • リクエストメソッド:POST
    • POSTするデータ
      • login_id
      • password
    • レスポンスヘッダのTokenから認証用トークンを取得できる。
      以後リクエストヘッダに「Authorization: Bearer {{トークン}}」を追加して通信することで認証された状態となる
  • チームの取得
    • URL:/api/v3/teams/all
    • リクエストメソッド:GET
    • チーム名、チームIDが取得できる。ここで取得したIDを使ってチャンネル情報を取得する
  • 参加しているチャンネル一覧の取得
    • URL:/api/v3/teams/{{チームID}}/channels/
    • リクエストメソッド:GET
    • ダイレクトメッセージや非公開グループも取れてしまうので、typeの値を見て判断する。
      • O:公開チャンネル
      • P:非公開チャンネル
      • D:ダイレクトメッセージ
  • 参加していないチャンネル一覧の取得
    • URL:/api/v3/teams/{{チームID}}/channels/more
    • リクエストメソッド:GET
  • Incoming Webhookでの投稿
    • URL:Incoming Webhookの作成時に表示されるURL
    • リクエストメソッド:POST
    • POSTするデータ
      • text
      • channel
      • username
      • icon_url
    • Incoming Webhookを使わずAPIのみでも投稿できるが、Incoming Webhookを使うとBOTと投稿時にマークがつくので分かり易い

参考

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?