🐨

社内メンバーの記事がZennのトレンドに上がった時の通知方法を改善

2024/09/01に公開

現状

現在会社でZennの記事を投稿しています。
トレンドに上がった時にTeamsに通知を飛ばす機能を実現するためにMicrosoft FabricのData Activatorを使っていました。
以下の記事で紹介しています。

https://zenn.dev/headwaters/articles/6d0b7284dc91e3

しかしサービス自体がプレビュー版であることもあってか、若干使いにくい状況です。
また、トリガーを検知して実行したタイミングで別の値を取得するのが困難だったり(できるのかもしれません)、Teamsのチームチャネルに通知したい場合はPower Automateを使わないといけなかったりします。
通知機能自体は引き続き使っていきたいので改善します。

改善

改善案として三つ方法を考えました。

  1. 引き続きPower BI&Data Activator&Power Automateで何とかしてみる
  2. Power Automateに全ての処理を任せる
  3. Fabric内のNotebookとTeamsのWebhookを使用する

上記の中から「2.」の方法にすることにしました。
理由は以下です。

  • 今後の拡張を考えてPower Automateを使っておきたい
  • Fabricの容量が低いプランなのであまり負荷のかかる処理はしたくない
  • Data Activatorを使うのは一旦避けたい

実装

Power Automateのフロー





処理の流れ

事前にSharePointにリストを作成

  1. タイマートリガーで1時間に一回実行させる
  2. Zennのトレンドを取得できるAPI(非公式)を使ってデータを取得
  3. SharePointリストの値を取得
  4. トレンドが上がったことを通知済みか判断する変数を定義
  5. Teamsに投稿する際に添付するリンクを格納する変数を定義
  6. 「2.」で取得した一覧をループでまわす
     6-1. ループ処理内で「5.」の変数を初期化
     6-2. 記事の投稿者がPublicationユーザーか判断
     6-3. Publication名が「ヘッドウォータース」か判断
     6-4. 「4.」の変数を初期化
     6-5. 「3.」で取得した一覧をループでまわす
      6-5-1. 既にSharePointに同じ値が存在するか判断
      6-5-2. もしあった場合は「4.」の変数をTrueにする
     6-6. 「4.」の変数がTrueか判断
     6-7. リンクを作成
     6-8. Teamsの対象チャットに投稿
     6-9. SharePointに値を登録


できた

最後に

Power Automateで実装した方が圧倒的に楽でした。
欲を言えばPythonでコーディングした方がもっと楽だったかもですが、Data Activatorの機能が充実するまではPower Automateで運用しようかと思います。

ヘッドウォータース

Discussion