3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GraphAPIを使用し、PowerAutomateでTeamsのチャネル全体をメンションする

Posted at

はじめに

久しぶりにPowerAutomateを触ってフローを作ろうとした際、チームのメンションがうまくいかずにかなり困ったのでまとめておきます。

方法

チャネル全体をメンションしたいのであれば、「Microsoft Graph HTTP 要求を送信する」アクションで、

image.png

下記エンドポイントを使用します。

POST https://graph.microsoft.com/beta/teams/{teamId}/channels/{channelId}/messages

必要なパラメータ

teamIdとchannelIdが必要ですが、どちらもTeamsのリンクから取得できます。
例えば下記のようなリンクを取得した場合、

https://teams.microsoft.com/l/team/19%aaaaaa%40thread.tacv2/conversations?groupId=12345678-abcd-1234-abcd-abcdef123456&tenantId=99999999-aaaa-bbbb-cccc-123456789abc

teamIdはgroupId=以下、つまり12345678-abcd-1234-abcd-abcdef123456で、channelIdは19%aaaaaa%40thread.tacv2の部分です。

channelIdはこれをそのまま入力せず、デコードしましょう。
私はこれで一時間躓きました。
19%aaaaaa%40thread.tacv2  ⇒  19:aaaaaa@thread.tacv2

本文に入れるJSONの構成

GraphAPIを使用してTeamsにメッセージを送る場合、メッセージの中身をJSON形式で渡す必要があります。
渡すJSONには大きく分けて二つの要素があります。

body(メッセージの本文)

実際にTeamsに表示されるテキストやHTML形式の内容です。

{
  "body": {
    "contentType": "html",
    "content": "<at id=\"0\">一般</at><br>テスト投稿です。"
  }

メンションを含める場合、contentには<at id=\"0\">一般</at>のようなタグを使いましょう。
<at>タグを使用することで、だれをメンションするのかを指定できます。
このタグと、後述するmentinosセクションの内容がセットで初めてメンションとして動作します。

mentions(メンションの定義)

メンションの定義部分です。

"mentions": [
  {
    "id": 0,
    "mentionText": "一般",
    "mentioned": {
      "conversation": {
        "id": "19:aaaaaa@thread.tacv2"
      }
    }
  }
]

上述の通り、<at id=\"0\">一般</at>と書いただけではメンションとして機能しません。
誰をどのIDでメンションするかを、このセクションで定義する必要があります。
mentioned.conversation.idに、メンション対象のIDを入れます(今回は該当チャンネルのIDを指定してください)。

mentionTextは、body<at>タグに記載した内容と完全に一致させる必要があります。
私はここで30分躓きました。

最終系
{
  "body": {
    "contentType": "html",
    "content": "<at id=\"0\">一般</at><br>これは自動投稿です。"
  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "一般",
      "mentioned": {
        "conversation": {
          "id": "19:aaaaaa@thread.tacv2"
        }
      }
    }
  ]
}

おわり

いろいろ調べてチャンネルをメンションする方法はこれしかないと思いましたが、もしより良い実現方法をご存じの方いらっしゃいましたら、教えてください。

久しぶりにPowerAutomateでフローを作成しようとしましたが、アクションが諸々更新されていたり、UI自体がアップデートされていたりで浦島太郎状態でした。
もう少しアップデート情報に気を配っていきたいです…

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?