Power AutomateでTeamsに自動投稿:チャネルへの通知とメンションの付け方

公開 書いた人 大林 諒

Teams にお知らせを自動で流す仕事は、Power Automate(パワーオートメイト)でいちばん作りやすいものの一つです。問い合わせが来たら営業のチャネルに出す、毎朝その日の現場をまとめて工事のチャネルに出す、外のシステムで発注が入ったら知らせる。どれもメールで送るより早く目に入り、誰がもう対応したかもスレッドの返信で分かります。この記事では、社員15名の「サンプル工務店」を例に、SharePoint リスト「問い合わせ台帳」に新しい問い合わせが入ったら営業チャネルに担当者のメンション付きで投稿するフローと、毎朝8時に今日の現場一覧を工事チームに投稿するフローを作ります。投稿者を Flow ボットにするかユーザーにするかの決め方、アダプティブ カードで見やすくする方法、返事を待つカード、Teams の中の「ワークフロー」アプリとの関係、そして2026年5月に使えなくなった Office 365 コネクタ(受信 Webhook)の代わりの作り方も書きます。使う Microsoft Teams コネクタは標準のコネクタで、Microsoft 365 Business Standard のライセンスで使えます。

この記事の内容
  1. 先に決めること
  2. Teams に投稿するアクションの一覧
  3. Flow ボットとユーザー、投稿者は誰になるか
  4. チャネルにメンション付きで投稿する
  5. 例1:新しい問い合わせを営業チャネルへ
  6. 例2:今日の現場一覧を工事チャネルへ
  7. アダプティブ カードで見やすい通知を作る
  8. 返事を待つカード
  9. Teams の「ワークフロー」アプリとの関係
  10. Office 365 コネクタ(受信 Webhook)が使えなくなった
  11. できないことと、その代わり
  12. よく詰まるところ
  13. 次にやること

先に決めること

作り始める前に、次の3つを決めておくと手が止まりません。

1. どこに出すか

チャネルに出すか、チャットに出すかを決めます。チームの全員が見る知らせ(新しい問い合わせ、今日の現場)はチャネル、特定の人だけに届けたい知らせ(自分の担当案件の期限)はチャットが向いています。チャネルに出すと、返信で「対応します」と書けば他の人にも対応済みだと伝わります。

2. 誰の名前で出すか

投稿者は「Flow ボット」か「ユーザー」のどちらかです。違いは次の章でまとめますが、通知は Flow ボット、チームのタグでメンションしたいときはユーザー、と覚えておけば迷いません。

3. 文字だけか、カードか

件名と数行の本文で足りるならメッセージ、項目を並べて見せたい・ボタンを付けたいならアダプティブ カードにします。最初はメッセージで作り、読みにくければカードに替える順番で十分です。

Teams に投稿するアクションの一覧

Microsoft Teams コネクタで投稿に使うアクションは、主に次のとおりです。名前は2026年10月時点のコネクタのリファレンスに合わせています。

アクション何をするか使う場面
チャットまたはチャネルでメッセージを投稿する文字のメッセージを投稿する通知のほとんど
チャットまたはチャネルでカードを投稿するアダプティブ カードを投稿する項目を並べて見せたい通知
アダプティブ カードをポストして応答を待つカードを投稿し、誰かが答えるまでフローを止めて待つ確認・選択をしてもらう
チャネルでメッセージを返信する既存の投稿のスレッドに返信する続報を同じスレッドにまとめる
チャネルでアダプティブ カードで返信する既存の投稿のスレッドにカードで返信する続報をカードで出す
チャットまたはチャネルでアダプティブ カードを更新する投稿済みのカードを書き換える状態が変わったら表示を変える
ユーザーの@mention トークンを取得する人をメンションするための文字列を作る担当者に気づかせたい
チーム タグの@mention トークンを取得するチームのタグをメンションするための文字列を作る「営業」タグの全員に知らせたい
自分にメッセージを投稿するフローの作成者本人に送るテスト・自分用の通知

投稿のアクションには共通して「次のように投稿する」と「投稿」の2つの欄があります。「次のように投稿する」で投稿者を、「投稿」で出す場所を選びます。チャネルに出すときは「投稿」の選択肢からチャネルに出すものを選び、続けて出てくるチームとチャネルを選びます。チャットに出すときは「投稿」でチャットの種類を選び、送り先を指定します。

「チャットまたはチャネルでメッセージを投稿する」のパラメーター。次のように投稿するに Flow ボット、投稿にチャネルを選び、チーム「営業」、チャネル「一般」、メッセージの欄が並んでいるところ
「チャットまたはチャネルでメッセージを投稿する」のパラメーター。次のように投稿するに Flow ボット、投稿にチャネルを選び、チーム「営業」、チャネル「一般」、メッセージの欄が並んでいるところ

Flow ボットとユーザー、投稿者は誰になるか

「次のように投稿する」で選ぶ投稿者によって、Teams での見え方とできることが変わります。

Flow ボットユーザー
投稿者Flow ボットフローの Teams 接続に使った人
人の発言と区別できるかできるできない(本人が書いたように見える)
ユーザーのメンションできるできる
チーム タグのメンションできないできる
回数の上限(接続ごと)Get 以外の要求が300秒に25回Get 以外の要求が300秒に300回
使える環境商用のテナントのみ制限なし

サンプル工務店では、通知は Flow ボットで出しています。事務Bが作ったフローを「ユーザー」で出すと、Teams では事務B本人が書いたように見え、営業から事務Bに「この問い合わせの件ですが」と返信が来てしまうからです。Flow ボットなら、自動の知らせだとひと目で分かります。

ただし Flow ボットには回数の上限があります。リファレンスでは、Flow ボットとしての投稿は接続ごとに300秒で25回までです。「それぞれに適用する」の中で1件ずつ投稿するフローは、件数が多い日に上限を超えて遅くなります。何十件もある一覧は、1件ずつ投稿せず、表にまとめて1回で投稿します。

チャネルにメンション付きで投稿する

問い合わせを営業チャネルに出すとき、担当の営業Aにメンションを付けると、営業Aの通知に赤いマークが付き、見落としが減ります。

ユーザーをメンションする

  1. 投稿のアクションの前に「ユーザーの@mention トークンを取得する」を足す
  2. 「User」の欄に、メンションしたい人のメール アドレス(ユーザー プリンシパル名)を入れる。問い合わせ台帳の「担当者」列(ユーザーの列)のメールを動的コンテンツから選べば、担当者ごとに変わる
  3. 「チャットまたはチャネルでメッセージを投稿する」のメッセージの欄(リファレンスでの名前は「メッセージの投稿要求」)に、動的コンテンツの「@メンション」を置く

メッセージ欄の中で「@メンション」は好きな位置に置けます。「@メンション 新しい問い合わせが入りました」のように先頭に置くと、通知の一覧でも誰宛てかが分かります。

メッセージ欄の先頭に動的コンテンツ「@メンション」が入り、その後ろに問い合わせの件名と顧客名が続いているところ
メッセージ欄の先頭に動的コンテンツ「@メンション」が入り、その後ろに問い合わせの件名と顧客名が続いているところ

チームのタグをメンションする

営業の誰が見てもよい問い合わせは、Teams のチームに「営業」のタグを作り、タグをメンションします。

  1. Teams の営業チームで、タグ「営業」を作り、営業の全員を入れておく
  2. 「チーム タグの@mention トークンを取得する」を足し、「チーム」で営業、「タグ」で営業を選ぶ
  3. 投稿のアクションの「次のように投稿する」を「ユーザー」にして、メッセージ欄に「@mention タグ」を置く

タグのメンションは、リファレンスで「チャネルでユーザーとして送信するメッセージ」に入れるものとされています。Flow ボットのままではタグに通知が飛ばないので、タグを使うフローだけはユーザーで出します。1つのメッセージでメンションできるのは、ユーザー20人とタグ20個までです。

例1:新しい問い合わせを営業チャネルへ

ホームページの問い合わせは、別のフローで info@sample-koumuten.example のメールから問い合わせ台帳に書き写しています。このリストに項目が増えたら、営業チャネルに知らせます。

順番アクション設定
1アイテムが作成されたとき(SharePoint)サイト「工事案件」、リスト「問い合わせ台帳」
2ユーザーの@mention トークンを取得するUser に「担当者 Email」
3チャットまたはチャネルでメッセージを投稿する次のように投稿するは Flow ボット、投稿先はチャネル、チーム「営業」、チャネル「一般」

メッセージ欄は次のように組みます。かっこの中は動的コンテンツです。

(@メンション) 新しい問い合わせが入りました
件名:(タイトル)
お客様:(顧客名)
受付:(登録日時)
台帳を開く:(アイテムへのリンク)

登録日時はUTC(協定世界時)で入るので、そのまま出すと9時間ずれます。日本時間で出すには、動的コンテンツの代わりに式 formatDateTime(convertFromUtc(triggerOutputs()?['body/Created'], 'Tokyo Standard Time'), 'yyyy/MM/dd HH:mm') を入れます。

担当者が決まっていない問い合わせでは、2のアクションが失敗します。台帳の「担当者」列を必須にするか、2の前に「条件」を置き、担当者が空なら営業タグのメンションに切り替えます。

Teams の営業チームの一般チャネルに、Flow ボットから「@営業A 新しい問い合わせが入りました」と件名・お客様・受付時刻が投稿されている状態
Teams の営業チームの一般チャネルに、Flow ボットから「@営業A 新しい問い合わせが入りました」と件名・お客様・受付時刻が投稿されている状態

例2:今日の現場一覧を工事チャネルへ

毎朝8時に、その日に動いている現場を工事チームに流します。現場監督Cは朝礼の前にスマホで確かめられます。スケジュールの組み方そのものは「Power Automateのスケジュール実行:毎朝・毎週・月末に動くフローを作る」で詳しく扱っているので、ここでは投稿の部分を中心に書きます。

順番アクション設定
1繰り返し頻度「週」、設定曜日 月〜土、設定時刻 8時0分、タイム ゾーン「(UTC+09:00) 大阪、札幌、東京」
2作成(今日)formatDateTime(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 'yyyy-MM-dd')
3アイテムを取得サイト「工事案件」、リスト「工事案件」、フィルター クエリ StartDate le '@{outputs('今日')}' and EndDate ge '@{outputs('今日')}'
4選択現場名・住所・現場監督の名前だけを抜き出す
5HTML テーブルの作成「選択」の結果を表にする
6チャットまたはチャネルでメッセージを投稿するFlow ボット、チャネル、チーム「工事」、チャネル「一般」

6のメッセージ欄には「本日の現場」と日付を書き、その下に「HTML テーブルの作成」の出力を置きます。Teams のメッセージは HTML で表を表示できます。1件ずつ投稿せずに表1つにまとめるので、Flow ボットの回数の上限にもかかりません。

今日の現場が0件の日は、表が空になります。3の後に「条件」を置き、length(body('Get_items')) が0なら「本日の現場はありません」と投稿します。式の中の Get_items はアクションの名前なので、「アイテムを取得」の名前を変えたら、その名前(空白は _)に合わせて書き換えます。0件の日も投稿しておくと、フローが止まったのか現場がないのかを読み手が区別できます。

Teams の工事チームの一般チャネルに、「本日の現場 2026-10-31」と現場名・住所・現場監督の表が投稿されている状態
Teams の工事チームの一般チャネルに、「本日の現場 2026-10-31」と現場名・住所・現場監督の表が投稿されている状態

アダプティブ カードで見やすい通知を作る

メッセージでは項目が増えると読みにくくなります。アダプティブ カードは、見出し・項目と値の並び・ボタンを JSON で組み立てる形式です。問い合わせの通知をカードにすると、次のようになります。

「チャットまたはチャネルでカードを投稿する」を使い、投稿者と投稿先は例1と同じにして、カードの欄(リファレンスでの名前は「ポスト カード要求」)に次の JSON を貼ります。

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.2",
  "body": [
    { "type": "TextBlock", "text": "新しい問い合わせ", "weight": "Bolder", "size": "Medium" },
    { "type": "FactSet", "facts": [
      { "title": "件名", "value": "@{triggerOutputs()?['body/Title']}" },
      { "title": "受付", "value": "@{formatDateTime(convertFromUtc(triggerOutputs()?['body/Created'], 'Tokyo Standard Time'), 'yyyy/MM/dd HH:mm')}" }
    ] }
  ],
  "actions": [
    { "type": "Action.OpenUrl", "title": "台帳を開く", "url": "@{triggerOutputs()?['body/{Link}']}" }
  ]
}

顧客名のような自分で作った列は、facts に1行足し、値の位置に動的コンテンツを差し込みます。JSON を一から書くのが大変なら、カード デザイナー(adaptivecards.io/designer)で見た目を作ってから、出てきた JSON を貼り付けます。デザイナーは JSON の形が正しいかどうかの確かめにも使えます。

カードでつまずくのは、たいてい JSON の形です。公式のトラブルシューティングでも、引用符が足りない、まっすぐな " ではなく丸い引用符になっている、が最初の原因に挙がっています。Word やメモ帳からコピーすると引用符が丸くなることがあるので、JSON はデザイナーかフローの画面で直接書きます。問い合わせの本文のように、改行や " を含む列をそのまま差し込むと形が崩れることもあります。長い本文はカードに入れず、台帳を開くボタンで読んでもらいます。

画像を入れるときは、インターネットから開ける画像の URL を指定します。カードに画像そのものは埋め込めません。

Teams の営業チームの一般チャネルに投稿されたアダプティブ カード。見出し「新しい問い合わせ」、件名・受付の2行、「台帳を開く」ボタンが並んでいる状態
Teams の営業チームの一般チャネルに投稿されたアダプティブ カード。見出し「新しい問い合わせ」、件名・受付の2行、「台帳を開く」ボタンが並んでいる状態

返事を待つカード

「アダプティブ カードをポストして応答を待つ」を使うと、カードに選択肢やボタンを付け、誰かが答えるまでフローを止めておけます。答えが返ると、その内容を使って次のアクションに進みます。

サンプル工務店では、毎朝の現場一覧とは別に、着工日の前日に現場監督Cへ「明日の着工は予定どおりか」を聞くカードを送っています。

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.2",
  "body": [
    { "type": "TextBlock", "text": "明日の着工の確認", "weight": "Bolder" },
    { "type": "TextBlock", "text": "@{items('Apply_to_each')?['Title']}", "wrap": true },
    { "type": "Input.ChoiceSet", "id": "status", "style": "expanded", "choices": [
      { "title": "予定どおり", "value": "予定どおり" },
      { "title": "遅れる", "value": "遅れる" }
    ] },
    { "type": "Input.Text", "id": "memo", "placeholder": "遅れる場合の理由", "isMultiline": true }
  ],
  "actions": [ { "type": "Action.Submit", "title": "送信" } ]
}

items('Apply_to_each') は「それぞれに適用する」の中の今の1件を指す式です。ループのカードの名前を変えたら、その名前(空白は _)に合わせて書き換えます。

入力欄に付けた id(ここでは status と memo)が、応答を待つアクションの後で動的コンテンツの名前として出てきます。次の「項目を更新する」で、工事案件リストの「着工確認」列に status、「備考」列に memo を入れれば、返事がそのまま台帳に残ります。

カードには送信後の表示を決める欄があり(Power Automate のドキュメントでは「更新メッセージ」、コネクタのリファレンスでは「メッセージを更新する」)、ここに文を入れておくと、送信後にカードがその文に置き換わります。入れないと、送信してもフォームが元に戻るだけで、押した人には届いたかどうかが分かりません。「ありがとうございました。台帳に記録しました」のように入れておきます。

1枚のカードは一度だけ提出でき、その後の送信は無視されます。チャネルに出したカードも同じなので、誰に答えてほしいかが決まっているならチャットに送ります。

「アダプティブ カードをポストして応答を待つ」のパラメーターで、投稿先・カードの JSON・送信後に表示するメッセージが入っているところ
「アダプティブ カードをポストして応答を待つ」のパラメーターで、投稿先・カードの JSON・送信後に表示するメッセージが入っているところ

Teams の「ワークフロー」アプリとの関係

Teams の中には「ワークフロー」というアプリがあります。以前は Teams の「Power Automate」アプリと呼ばれていたもので、中身は Power Automate のクラウドフローです。チャネル名の横の「…」から「ワークフロー」を開くと、テンプレートを選んで、Power Automate の画面を開かずにフローを作れます。

Teams のワークフロー アプリPower Automate の画面
作れるものテンプレートから作るフローすべてのフロー
保存される環境既定の環境だけ環境を選べる
見えるフロー既定の環境のフローだけ選んだ環境のフロー
細かい直し限られるすべてできる

ワークフロー アプリで作ったフローは、すべて組織の既定の環境に入ります。Power Automate の画面で既定の環境を選べば同じフローが見えるので、テンプレートで作ってから、Power Automate の画面で条件やメンションを足す、という使い方ができます。

投稿のアクションを動かすには、このワークフロー アプリが Teams 管理センターで「許可」になっている必要があります。会社のポリシーでアプリを止めていると、フローの側で投稿のアクションが失敗します。

Office 365 コネクタ(受信 Webhook)が使えなくなった

外のシステムから Teams に知らせを出す方法として、以前はチャネルに「受信 Webhook」というコネクタを足し、発行された URL に送る方法がよく使われていました。この Office 365 コネクタは2026年5月に廃止され、2026年5月18日から22日にかけて順に止まりました。古い受信 Webhook の URL に送っても、もう投稿されません。

代わりになるのが、ワークフロー アプリで作る Webhook です。サンプル工務店では、発注のシステム(order.example)から「発注が確定した」知らせを工事チャネルに出すのに使っています。

  1. Teams の工事チームで、一般チャネル名の横の「…」から「ワークフロー」を選ぶ
  2. テンプレート「Webhook アラートをチャネルに送信」を選ぶ
  3. フローの名前を付け、投稿するチームとチャネルを確かめて保存する
  4. 表示された URL をコピーし、order.example の通知先の設定に貼る
Teams のワークフローで、テンプレート「Webhook アラートをチャネルに送信」を選んで、投稿先のチャネルを確かめているところ
Teams のワークフローで、テンプレート「Webhook アラートをチャネルに送信」を選んで、投稿先のチャネルを確かめているところ

Power Automate の画面で一から作るときは、トリガーに「Teams Webhook 要求を受信したとき」を選びます。誰が呼び出せるかは「すべてのユーザー」「テナント内の任意のユーザー」「テナント内の特定のユーザー」から選べます。外のシステムはサインインのトークンを送れないことが多いので、その場合は「すべてのユーザー」にして、URL を知っている人だけが送れる形になります。URL はパスワードと同じ扱いにして、チャットやメールに貼りません。

送る側は、URL に POST で次の形の JSON を送ります。attachments の中にアダプティブ カードを入れます。

{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "contentUrl": null,
      "content": {
        "type": "AdaptiveCard",
        "version": "1.2",
        "body": [ { "type": "TextBlock", "text": "発注 No.1234 が確定しました" } ]
      }
    }
  ]
}

ワークフローの Webhook には、次の決まりがあります。

項目ワークフローの Webhook
カードの形式アダプティブ カードに切り替えるのが推奨。MessageCard の形でも内容は表示される
MessageCard のボタン(HttpPost)動かない。ボタンが要るならアダプティブ カードにする
プライベート チャネル使える
持ち主フローを作った人(チームではない)

古い受信 Webhook から送っていた JSON が MessageCard の形なら、表示はされてもボタンは動かないので、アダプティブ カードの形に書き直します。持ち主の行も大事です。ワークフローの Webhook は、作った人のフローとして動きます。作った人が退職してアカウントが止まると、Webhook も止まります。作ったらすぐ、Power Automate の画面でそのフローに共同所有者を足しておきます。サンプル工務店では、事務Bが作ったフローに現場監督Cを共同所有者として入れています。

1回に送れるメッセージは28KBまでで、1秒に4回を超えて送ると絞られます。

できないことと、その代わり

できないこと代わりの手
プライベート チャネルに投稿のアクションで出す標準チャネルに出すか、ワークフローの Webhook で出す
Flow ボットでチーム タグをメンションする投稿者を「ユーザー」にする
28KBを超える長いメッセージ要点だけ投稿し、詳しい内容は SharePoint のリストやファイルへのリンクで渡す
Government Cloud のテナントで Flow ボットを使う投稿者を「ユーザー」にする
1つのメッセージで21人以上をメンションするタグを作ってタグをメンションする

よく詰まるところ

起きること原因直し方
投稿のアクションが失敗するワークフロー アプリが Teams 管理センターで許可されていない管理者に「許可」にしてもらう
プライベート チャネルが選べない・失敗する投稿のアクションがプライベート チャネルに対応していない標準チャネルに出す
タグのメンションが通知されない投稿者が Flow ボットになっている「ユーザー」に替える
「要求エンティティが大きすぎます」で失敗するメッセージが28KBを超えている表の行や本文を減らす
件数が多い日だけ投稿が遅れるFlow ボットの上限(300秒に25回)にかかっている1件ずつではなく表にまとめて1回で投稿する
カードを送信すると「もう一度やり直してください」と出る名前に「応答を待つ」が入っていないアクションで、送信ボタン付きのカードを出している返事が要るカードは「アダプティブ カードをポストして応答を待つ」を使う
カードを送信すると「問題が発生しました、もう一度やり直してください」と出るカードを投稿するアクションと「誰かがアダプティブ カードに応答したとき」トリガーを別のフローで組み合わせている1本のフローの中で「アダプティブ カードをポストして応答を待つ」を使う
カードが表示されないJSON の引用符が丸い・足りないカード デザイナーに貼って形を確かめる
受付時刻が9時間ずれているSharePoint の日時がUTCのままconvertFromUtc で日本時間にする
受信 Webhook の通知が来なくなったOffice 365 コネクタが2026年5月に廃止されたワークフローの Webhook を作り直して URL を差し替える
Webhook が急に止まった作った人のアカウントが止まった共同所有者を足し、フローを有効にし直す
ワークフロー アプリに作ったはずのフローが無いワークフロー アプリは既定の環境しか見せないPower Automate の画面で環境を切り替えて探す

次にやること

Teams への投稿ができたら、知らせの先の仕事まで自動にします。

あわせて読む