概要
Discussions は通知を 2 つの部分に分けています。Web パーツは、誰が何について知りたいかを記録します。サブスクリプションの一覧を保持し、ユーザーが選んだ頻度でボードやトピックをフォローできるようにし、投稿でメンションされたユーザーをマークします。メールの配信は、サイト所有者が自分のテナントで実行する Power Automate フローに委ねられます。Web パーツ自身はメールを送信せず、Mail.Send アクセス許可やその他の Microsoft Graph アクセス許可を要求することもありません。フローが必要とするデータは、サイト上の通常の SharePoint リストにあります。
この記事では、このコントラクト、つまり Web パーツがリストで保証する内容と、フローがそれを使って行うべきことを説明します。
❗ 重要
バージョン 26.10.2 では、Power Automate のフロー テンプレートは提供されていません。Web パーツは以下に説明するとおりサブスクリプションとメンションを保存しますが、テナントにフローが存在するまでメールは送信されません。この記事のコントラクトは、そのようなフローを構築するための基盤です。インポート可能なテンプレートとその設定記事は、今後のリリースで提供する予定です。
Web パーツが行うこと
ボードまたはトピックのフォロー
投稿できるユーザー (サイトに対する Add Items (アイテムの追加) アクセス許可。Contribute と Edit に含まれます) には、ボードのコマンド バーと各トピックのヘッダーに Follow ボタンが表示されます。1 回クリックすると頻度 Immediately でフォローします。ボタンのドロップダウン部分には Immediately、Daily digest、Weekly digest、および Unfollow があります。フォロー中は、ボタンに Following と選択した頻度が表示されます。新しいトピックの作成者は、自動的に Immediately でそのトピックをサブスクライブします。読み取り専用の閲覧者はサブスクリプション リストに書き込めないため、ボタンは表示されません。

各フォローは、Discussions Subscriptions リストの 1 アイテムで、ユーザーと対象ごとに 1 つです。同じトピックを別の頻度で再度フォローすると、2 つ目を追加するのではなくアイテムが更新され、Unfollow でアイテムが削除されます。したがって、通知をオフにすることは自分のサブスクリプションを削除することを意味し、個別の「ミュート」フラグはありません。ユーザー ガイドは KB10404. 掲示板とトピックのフォロー: サブスクリプションとダイジェストの頻度 にあります。
メンション
ユーザーがエディターで @ を入力してユーザーを選択すると、Web パーツは投稿の本文に <a href="mailto:…" data-mention-id="{siteUserId}">@名前</a> という形式のリンクを挿入し、同時にそのユーザーをトピックまたは返信のユーザー列 Mentions に追加します。この列がフローに対するシグナルであり、誰がメンションされたかを知るために HTML を解析する必要はありません。メンションは投稿と一緒に編集でき、列は保存のたびに書き直されます。KB10403. Discussions での @メンションの使い方 を参照してください。
Discussions Subscriptions リスト
| 列 | 内部名 | 値 |
|---|---|---|
| User | VtxUser | サブスクライバー (ユーザー列) |
| Target type | VtxTargetType | Board または Topic |
| Target id | VtxTargetId | Discussions Boards のボード アイテムの ID、または Discussions Topics のトピック アイテムの ID |
| Frequency | VtxFrequency | Immediate、Daily、Weekly のいずれか |
| Board | VtxBoard | ボードへの参照。トピックのサブスクリプションにも設定され、1 つのボードのすべてのサブスクリプションを 1 つのフィルターで読み取れるようにします |
| Title | Title | Board:{id} または Topic:{id}。リスト ビューでの読みやすさのため |
選択肢列の値はインターフェイス言語に関係なく英語で保存されます。列の表示名はリストを作成したユーザーの言語に従います。このリストはボードと同じサイトにあり、サイトのアクセス許可を継承するため、フォローには投稿権限が必要です。

フローが反応するイベント
すべてのイベントは、2 つのコンテンツ リストの通常のアイテム イベントです。フローは標準の SharePoint トリガー When an item is created と When an item is created or modified を使用します。
| イベント | リスト | 条件 |
|---|---|---|
| 新しいトピック | Discussions Topics | Approval status = Approved でアイテムが作成された |
| モデレーターがトピックを承認 | Discussions Topics | アイテムが更新され、Approval status が Approved に変わった |
| 新しい返信 | Discussions Posts | Approval status = Approved でアイテムが作成された |
| 返信が承認された | Discussions Posts | アイテムが更新され、Approval status が Approved に変わった |
| ベスト アンサーが承認された | Discussions Topics | Accepted post が 0 から返信の ID に変わった |
| メンション | 両方のリスト | Mentions にユーザーが含まれる |
| アイテムがモデレーション待ち | 両方のリスト | Approval status = Pending でアイテムが作成された |
承認なしのボードでは、すべての新しいアイテムが Approved として作成されます。Require approval of new posts が有効なボードでは、メンバーのアイテムは Pending として作成され、モデレーターが承認すると Approved になります。これがサブスクライバーに通知すべきタイミングです。却下されたアイテムが通知を生成することはありません。
📝 注
Web パーツは列 ID でリストを認識するため、サイト所有者はリストの名前を変更できます。したがって、フローはタイトルではなく ID (GUID) でリストを参照し、列の値は内部名 (VtxApprovalStatus、VtxMentions、…) で読み取る必要があります。
誰が何を受け取るか
コントラクトの受信者ルールは次のとおりです。
- 新しいトピック — ボードのサブスクライバー: Target type =
Boardかつ Target id = トピックの Board であるアイテム。 - 新しい返信 — トピックのサブスクライバー (Target type =
Topic、Target id = 返信の Topic) と、そのトピックのボードのサブスクライバー。返信の作成者は除外されます。 - ベスト アンサー — 承認された返信の作成者とトピックのサブスクライバー。
- メンション — アイテムの Mentions 列のユーザー。サブスクリプションやその頻度に関係なく通知されます。メンションされたユーザーがメンションをオフにすることはできません。
- モデレーション待ち — ボードのモデレーターであるサイト所有者グループのメンバー。
頻度
- Immediate — トリガー When an item is created or modified を持つフローが、この頻度のサブスクライバーにイベントごとに 1 通のメールを送信します。
- Daily と Weekly — スケジュールされたフローが、Last activity が期間内にあるトピックを収集し、サブスクライバーごとに 1 通のサマリーを送信します。返信はそのトピックの Last activity を更新するため、トピックに基づいて作成したダイジェストは新しい返信も対象となります。
メール内のリンク
トピックは、Discussions Web パーツをホストするページをクエリ パラメーター ?topic={Id} 付きで開くことで表示されます。{Id} は Discussions Topics のアイテムの ID です。Web パーツは自身のページのアドレスをリストのどこにも保存しないため、ページのアドレスはフローのパラメーターになります。同じディープ リンクは Discussions Activity Web パーツでも使用され、KB10407. Discussions でトピックへのリンクを共有する (ディープ リンク) で説明しています。
フローが行うべきこと
まとめると、このコントラクトに基づいて構築する配信フローは次のことを行います。
- サイト所有者またはテナントの共有メールボックスのコンテキストで実行します。送信者の ID は Vitextra のものではなく、お客様のものです。
- 上記の Discussions Topics と Discussions Posts のアイテム イベントを、リスト ID でトリガーします。
- Board (および Target type / Target id) でフィルターした Discussions Subscriptions を読み取って受信者を決定し、メンションされたユーザーについてはアイテムの Mentions 列を読み取ります。
- アイテムの作成者を除外し、サブスクライブとメンションの両方に該当するユーザーの重複を排除します。
- 自身のページ アドレス パラメーターとトピック ID からリンクを組み立てます。
- ダイジェストについては、スケジュールで実行し、トピックをサブスクライバーごとにグループ化します。
💡 ヒント
サブスクリプションとメンションは単純なリスト データであるため、同じコントラクトはメール以外のチャネルにも使えます。フローから送信する Teams のチャット メッセージやアダプティブ カードも、同じ受信者と同じリンクを使用します。変わるのはフローの最後のアクションだけです。