16
18

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 1 year has passed since last update.

【Redmine】Redmineの更新をPowerAutomateを利用してTeamsに通知する

Posted at

この記事で取り扱うこと

  • 任意のRedmineの作成・更新をTeams宛に投稿すること。
  • Power Automateのサンプルフロー

この記事では取り扱わないこと

  • Redmineの構築方法
  • Power Automateの基本操作
  • Teams以外のチャットツールへの連携

ゴール

Teamsの任意のチャネルに対してRedmineのチケット作成情報が投稿されること。
image.png

はじめに

弊社の新人研修の一つにチケット管理ツールの講義がありますが、
その中でRedmineについて取り上げて利点や使い方を説明しています。

ツールについてダラダラと書きます。本編に関係ないので省略。

Redmineの類似としてWrike、Jira、Backlog、Trello、Notion、Excel、、など大小さまざまなツールが跋扈しています。
その中でもRedmineはそこそこフルスタックかつオープンソースなので、自分でデプロイ・メンテナンスすればコストは低く抑えられ、プラグインなどのカスタマイズも可能なのがメリットかなと思います。
デメリットはメリットの裏返しで、自由度が高すぎてルールをしっかり定めないとカオスになりがちなのと、Rails製アプリということもありRuby・Rails・DBなどのミドルウェアの管理を自分でやらなければならないことが挙げられます。
※ただし、SaaSとしてRedmineの機能を提供するような「My Redmine」や「Lychee Redmine」などもあります。その分月額利用料は掛かります。

Redmine自体、メールの設定さえ出来ていればメール配信は行えますが、
今はリアルタイムに見るならメールよりチャットツールの方が通知先として
利用されているのかなと思います。
チャットツールというと、Slackはツール間での通知の連携は柔軟な印象で、
Redmineもググったりすれば参考記事が色々出たので、
それと比較した際、参考記事などの無さからTeamsェ...と思っていました。
プラグインもあるにはあるけど、2017年モノということで怪しさ満点です)
ただ、どうやらPower AutomateにRedmine連携用のコネクタがあるようで、
今回はそちらを試してみます。

今回の記事では以下記事も参考にさせていただきました。
redmineとTeamsをMicrosoft PowerAutomateを使って連携する

前準備

  • 構築済みのRedmine
    今回はHerokuにデプロイしています。構築場所はAWSでもAzureでもオンプレでもどこでも構いません。
    今回は素のまま利用していますが、Basic認証やIP制限などまで掛けていると今回の方法で連携が行えるか怪しいので参考程度に閲覧ください。

Redmine連携用のトリガー

Power Automate上で関連の情報を見てみます。
image.png

「コネクトとアクションを検索する」で「Redmine」と検索すると上記のプロジェクトの作成、問題の作成・更新をトリガーとすることができます。
「問題」は「イシュー」を日本語化したものかと思うのですが正直微妙なので、
今回はRedmine側に合わせて「問題」→「チケット」と表記します。

上記のトリガーを利用する際にはID,APIKey,RedmineのURLを設定する必要があります。
image.png

上記設定や試行した際の挙動から、トリガーと記載されているものの
やっていることとしてはPower Automate側で特定の間隔に一度RedmineのAPIを叩いて
プロジェクトやチケットの更新を見ているものと考えています。

逆にRedmine側を更新するためのアクションも以下の通り用意されています。

image.png

Redmineの設定

上記の通り、APIを有効化し、API Keyを取得する設定を行います。参考

APIの設定

管理者の設定メニュー上で「API」→「RESTによるWebサービスを有効にする」をチェックします。
image.png

API Keyの発行

ユーザー毎の個人設定から右のメニューにあるAPI Keyを発行します。
image.png

これでPower Automateの連携用の情報が揃ったのでフロー作成に移ります。

カテゴリーの作成

後ほど、チケットのカテゴリーに応じて配信先を分けるようにするために
カテゴリーを作成しておきます。
image.png

Power Automateのフロー作成

それではフローを作成します。
概要は以下です。

  1. Redmineにチケットが作成された際にトリガーする
  2. 投稿先のチャネルを初期化し、作成されたチケットのカテゴリーに応じて投稿先を決定する(条件に当てはまらない場合には終了)
  3. 上記で決定した配信先に配信を行う

image.png

トリガーの設定

Redmineの「問題が作成されたとき」のトリガーを利用し、
接続の情報として以下を設定します。

  • 接続名:任意の文字列 ※Redmine上のIDと合わせるとAPI Keyとの関係が明確かと思います
  • API Key:先ほど払い出したAPI Key
  • Site url:RedmineのURL
    また、接続の設定後、Redmine上の対象のプロジェクトを選択します。

配信先チャネルの決定

image.png

  • 切替の条件
    トリガーの返り値として、チケットの情報が得られます。
    これらの情報は「動的なコンテンツ」を設定する際に自動的にサジェストされます。
    ただしカテゴリー名についてはサジェストされないため、上図のようにtriggerOutputs()?['body/category/name']のような式で取得しています。

  • 各条件での変数への設定
    カテゴリーの文字列に応じて変数にチャネルIDを設定しています。
    ここで、TeamsでのチャネルIDについては参考記事のように取得しました。
    また、条件に当てはまらない場合は配信を行わず終了としています。

Teamsへの配信

以下のように配信先、メッセージを設定しています。
image.png

  • 投稿者:フローボット
  • 投稿先・チーム・チャネル:チャネルは上記で設定したチャネルIDを利用します。チームについては固定としています。
  • メッセージ:トリガーから得られる動的なコンテンツを利用し、メッセージを構築しています。
    ※「チケットのリンク」の箇所ではhttps://{RedmineURL}/issues/⁠@{triggerOutputs()?['body/id']}のようにリンク先を設定することで、チケットへのリンクとしています。(ただこの記述の場合、2回目以降編集画面を開くとバグりました。。)

テスト配信

上記フローを保存したあと、Redmineでチケットを作成するとTeamsへの配信が行われます。即時で配信されるわけではなく、最大10分程度時間差がありました。
image.png
また、想定通りカテゴリーに応じて投稿先のチャネルが振り分けられることも確認しております。

ディスカッション

配信先の切替条件はカテゴリーが良い?

カテゴリーとしましたが、「トラッカー」などとすることも可能です。
デフォルトの設定ではカテゴリーは任意に追加が可能かつチケット作成時の設定が任意なので、実運用ではチケット作成時に必須項目かつマスタ管理されているような項目が良いかと思います。

チケットの更新の場合のフローはどうする?

理想としてはチャネルに投稿されたチケット別のメッセージに対して返信を行っていくことを考えています。
2022年6月現在Teamsの投稿への返信系のアクションがPower Automate上でバグがあるらしく、ご注意ください。

Teams側の通知設定はどうする?

任意のカテゴリーやトラッカーで配信先チャネルの切替が行えるようになったので、
障害連絡は全員通知ONにしてウォッチしておく、問合せはカスタマーサポート担当者が通知ONしておくなどと決めて周知しておくと良いかと思います。

最後に

アラート疲れしない程度に運用や設定を設計し、必要な情報がリアルタイムで得られる生活を目指しましょう。

16
18
3

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
16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?