Power Automate を利用して Teamsのチャネルに登録されたメッセージをSlackに送信してみた

Power Automate を利用して、Teams の特定のチャンネルに投稿されたメッセージを Slack に送信する処理を作成してみました。

なお、Power Automate については、Microsoft 365 Developer Program を使ってテストを行なっています。このあたりの話は別のブログで記載したいと思います。

動作前提

Teams にて「インシデント対応」というチームの作り、その中の「一般」チャネルに何かメッセージが入力されたらそれを検知し、Slackのその内容を送信する想定です。

Microsoft Teams

フロー作成

Power Automateにてフローを作成します。全体のフローは以下の通り6ステップとなっています。

Power Automate フロー全体

単純に Teamsのメッセージを受け取って Slack に投げるだけなのでもっと少ないステップになりそうですが、HTMLをプレーンテキストに変換し、配列を文字列にし、さらに不要なカッコや改行を取り除いて Slackに送信しているのでこうなりました。

このあたりの処理は以外と難しかったので、あとでこのブログに記録の為に追記しておこうと思います。

以下、細かな処理を記載しておきます。(2023.12.3)

「変数を初期化する Teamsメッセージ」では、手前のタスクでプレーンテキスト化した Teamsのメッセージを変数 teams_array に設定しています。
なおこのときプレーンテキストが(なぜか)配列の形”[“と”]”に囲まれているので、Typeとしては Arrayとしています。

Power Automate タスク詳細1

「変数を配列から文字列にする」では replace()関数をつかって、先ほどの teams_array の中身のTypeをArray から Stringの形にし、変数 teams_string に設定しています。

Power Automate タスク詳細2

「変数を初期化する 改行コード」では、次のタスクで利用する為に改行コード”\n”を LFcode という変数に設定しています。

Power Automate タスク詳細3

最後に「メッセージの投稿」では、変数 teams_string の中の改行コード”\n”を replace()関数を使用し(空白に)置き換えています。

Power Automate タスク詳細4

動作結果

以下が Slack の general チャンネルに Power Automateからメッセージを送信した結果です。

画面上の最初の方は Teams のメッセージを受け取ってそのまま Slackに投げたので HTMLとなっていますが、最後の方ではプレーンテキスト化し、”[“や改行”¥n”を取り除いてシンプルに URLだけが表示されるようになっています。

Slack – general

Slackからメール送信をさせてみた

前回、Jiraで登録された課題をSlackに通知する設定を行いました。

http://k2-ornata.com/jira-slack_connetion/

ただし、Slackをずっと見続けているわけではないですし、メールを使ってその後の処理を自動化したいといった思いもあり、Slackの全ての新規メッセージをメール通知する設定を行なってみました。

デフォルトのメール通知は限定的

メール通知の設定を変えるにはSlack(ブラウザ)の右肩のプロフィーフ画像をクリックして、「環境設定」を表示させます。

Slack – プロフィール画像

環境設定のポップアップ画面が表示されますので、左ペインの「通知」を選択し、まずは「通知のタイミング」を設定します。

1.通知のタイミング

デフォルトでは「ダイレクトメッセージ&メンション&キーワード」となっていますので、すべてをメール通知させたい場合は、「すべての新規メッセージ」を選択します。

Jira – 通知設定

次に画面を下にスクロールさせて「デスクトップでアクティブでない場合」のプルダウンを選択します。

2.利用者のアクティブ状況による通知設定

通常は「非アクティブの状態になったらすぐ」に設定されていますが、常に新規メッセージを通知したい場合は、「アクティブ状態でもモバイル通知をすぐに受け取る」を選択しておきます。

Jira – 通知設定

実際にメールが送信されるか試してみる

一つ注意点がありますが、メール送信はメッセージを追加した本人のメールアドレスには届かないようです。

したがって、このテストをするにはSlack参加メンバーが2名以上(2アカウント以上)必要です。

まずはどちらかのアカウントで、Slackに新しいメッセージ「アラート004〜006」を登録します。(実際にはJiraにて新規に作成した課題が「アラート004〜006」として登録されている。)

Slackでの新規メッセージ追加

するともう一方のアカウントのメールアドレスに、最後のメッセージ「アラート006」が登録された9:24から13分後の9:37に以下のとおり3つのメッセージがまとめて送信されてきました。

Slackからのメール通知内容

すべてのメッセージをリアルタイムでメール送信してくれる機能もあると良さそうですが、システム的な負荷やメール爆弾になってしまうことも考えると、これが限界なのかもしれませんね。