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

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

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