次の方法で共有


Microsoft Graph でのMicrosoft Teams メッセージング API の操作

Microsoft Graph には、Teams メッセージに対する操作を実行できるMicrosoft Teams API の包括的なセットが用意されています。 この記事では、主要な Teams API スキーマ要素について説明し、高度なシナリオに基づいて使用する API の概要について説明します。 Microsoft Graph の Teams API の詳細については、「Microsoft Graph API を使用して Teams を操作する」を参照してください。

chatMessage スキーマ

chatMessage リソースの種類は、Teams チャットとチャネルのメッセージを表します。 このセクションでは、 chatMessage スキーマの要素について説明します。

手記: このセクションの例では、関連するスキーマ要素のみが表示され、メッセージ ペイロード全体は表示されません。

attachments

chatMessageAttachment リソースの種類は、chatMessage から参照できるエンティティを表します。 これらのエンティティには、ファイル、タブ、カード、会議、またはその他のメッセージが含まれます。 項目自体が他の場所にある可能性があります。 たとえば、ファイルは SharePoint に格納される場合があります。 次のセクションでは、 chatMessage オブジェクトで考えられる添付ファイルの種類について説明します。

添付ファイル

添付ファイル オブジェクトがファイルを参照する場合、ファイルを開くリンクなど、ファイルに関する情報が含まれます。 ファイル自体は、SharePoint などのアクセシビリティ対応のストアにあります。 chatMessage にファイル型の添付ファイルがある場合、添付ファイル リソースの contentType プロパティの値は reference に設定され、contentUrl プロパティにはファイル URL が含まれます。

手記: SharePoint URL は、ファイルを開くリンクです。Microsoft Graph URL ではありません。 ただし、呼び出し元は 、アクセス共有アイテム API を使用して、ファイルの内容に関する情報を取得できます。

次の例は、添付ファイルのスキーマを示しています。

    "attachments": [
        {
            "id": "924D1F74-E0D2-4927-8A67-15ECEF455527",
            "contentType": "reference",
            "contentUrl": "https://testing.sharepoint.com/sites/Samples/Shared Documents/General/color.png",
            "content": null,
            "name": "color.png",
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ],

タブの添付ファイル

添付オブジェクトが現在のコンテキストでホストされているタブを参照する場合、contentType プロパティは tabReference に設定され、id プロパティはタブの ID に設定され、name プロパティはタブ名に設定されます。 このシナリオは、多くの場合、タブが新しく追加されるときに適用されます。

次の例は、タブ添付ファイルのスキーマを示しています。

"attachments": [
        {
            "id": "tab::d64ea8d0-8b63-4f53-9bf6-806648176968",
            "contentType": "tabReference",
            "contentUrl": null,
            "content": null,
            "name": "Bing",
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ],

カードの添付ファイル

カードは、定義済みのスキーマによってサポートされるビジュアル要素を表します。 Teams では、次のカードの種類に加えて、 Bot Framework によって定義されたカードがサポートされています。

  • コード スニペット - contentType を に設定する application/vnd.microsoft.card.codesnippet
  • アナウンス カード - contentType を に設定する application/vnd.microsoft.card.announcement

カードの場合、 contentType プロパティはカードの種類に設定され、 content プロパティにはカードのシリアル化された json が含まれます。

手記: イメージなどのカードの側面は、Teams によってホストされる外部リソースまたはリソースを chatMessageHostedContent と参照する場合があります。

次の例は、アダプティブ カードの添付ファイルのスキーマを示しています。 このカードには、Teams によってホストされているイメージがあります。

    "attachments": [
        {
            "id": "74d20c7f34aa4a7fb74e2b30004247c5",
            "contentType": "application/vnd.microsoft.card.adaptive",
            "contentUrl": null,
            "content": "{  \"type\": \"AdaptiveCard\",  \"body\": [    {      \"items\": [        {          \"columns\": [            {              \"width\": \"auto\",              \"items\": [                {                  \"size\": \"medium\",                  \"url\": \"https://graph.microsoft.com/beta/teams/68a3e365-f7d9-4a56-b499-24332a9cc572/channels/19:0b50940236084d258c97b21bd01917b0@thread.skype/messages/1596694346004/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1hcGkuYXNtLnNreXBlLmNvbS92MS9vYmplY3RzLzAtd3VzLWQyLTUxZDYxNGE5MDQ5ZTU4MjFlMTRmMGI2NmExNmVlNzhlL3ZpZXdzL2ltZ28=/$value\",                  \"height\": \"auto\",                  \"type\": \"Image\"                },                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"SHADES\",                  \"weight\": \"bolder\",                  \"type\": \"TextBlock\"                }              ],              \"type\": \"Column\"            },            {              \"width\": \"stretch\",              \"items\": [                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"08/31/2019 19:30:00\",                  \"type\": \"TextBlock\"                },                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"Final\",                  \"spacing\": \"None\",                  \"type\": \"TextBlock\"                },                {                  \"horizontalAlignment\": \"center\",                  \"size\": \"extraLarge\",                  \"text\": \"40 - 7\",                  \"type\": \"TextBlock\"                }              ],              \"spacing\": \"Medium\",              \"separator\": true,              \"type\": \"Column\"            },            {              \"width\": \"auto\",              \"items\": [                {                  \"horizontalAlignment\": \"center\",                  \"size\": \"medium\",                  \"url\": \"https://graph.microsoft.com/beta/teams/68a3e365-f7d9-4a56-b499-24332a9cc572/channels/19:0b50940236084d258c97b21bd01917b0@thread.skype/messages/1596694346004/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1hcGkuYXNtLnNreXBlLmNvbS92MS9vYmplY3RzLzAtd3VzLWQyLWM4NjgwMjMzMzcyMzc2MmQ0MWEyY2QxMGVhMWI4ZGRhL3ZpZXdzL2ltZ28=/$value\",                  \"height\": \"auto\",                  \"type\": \"Image\"                },                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"SKINS\",                  \"weight\": \"bolder\",                  \"type\": \"TextBlock\"                }              ],              \"spacing\": \"Medium\",              \"separator\": true,              \"type\": \"Column\"            }          ],          \"type\": \"ColumnSet\"        }      ],      \"type\": \"Container\"    }  ],  \"speak\": \"The Seattle Seahawks beat the Carolina Panthers 40-7\",  \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",  \"version\": \"1.2\"}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ]

メッセージング拡張機能など、Teams アプリによって作成されたメッセージの場合、teamsAppId プロパティには、メッセージを送信したアプリの ID が含まれます。

次の例は、メッセージが Teams アプリによって送信されたときのアダプティブ カード添付ファイルのスキーマを示しています。

    "attachments": [
        {
            "id": "f60e7358497741f5bdb5fa7f101fe425",
            "contentType": "application/vnd.microsoft.card.adaptive",
            "contentUrl": null,
            "content": "{  \"type\": \"AdaptiveCard\",  \"body\": [    {      \"items\": [        {          \"items\": [],          \"type\": \"Container\"        },        {          \"altText\": \"Awesome\",          \"horizontalAlignment\": \"center\",          \"url\": \"https://dev.praise.myanalytics.cdn.office.net/2024.1.31.2/assets/emojis/Trophy_Icon.png\",          \"width\": \"82px\",          \"height\": \"auto\",          \"spacing\": \"small\",          \"type\": \"Image\"        },        {          \"size\": \"large\",          \"text\": \"Awesome\",          \"weight\": \"lighter\",          \"wrap\": true,          \"spacing\": \"large\",          \"type\": \"TextBlock\"        },        {          \"size\": \"large\",          \"text\": \"Test User 1\",          \"weight\": \"bolder\",          \"wrap\": true,          \"spacing\": \"none\",          \"type\": \"TextBlock\"        },        {          \"size\": \"small\",          \"text\": \"From Test User 2\",          \"wrap\": true,          \"spacing\": \"extraLarge\",          \"type\": \"TextBlock\"        },        {          \"items\": [],          \"spacing\": \"small\",          \"type\": \"Container\"        }      ],      \"backgroundImage\": {        \"url\": \"https://dev.praise.myanalytics.cdn.office.net/2024.1.31.2/assets/themes/CornflowerGradient.png\"      },      \"type\": \"Container\"    },    {      \"columns\": [        {          \"width\": \"stretch\",          \"items\": [            {              \"text\": \"**[Review your praise history](https://teams.microsoft.com/l/entity/57e078b5-6c0e-44a1-a83f-45f75b030d4a)**\",              \"wrap\": true,              \"spacing\": \"small\",              \"type\": \"TextBlock\"            }          ],          \"type\": \"Column\"        },        {          \"width\": \"auto\",          \"items\": [            {              \"horizontalAlignment\": \"right\",              \"text\": \"**[Send praise](https://teams.microsoft.com/l/task/d832a33f-28c2-4969-8ad0-4fee681dc5b4)**\",              \"spacing\": \"small\",              \"type\": \"TextBlock\"            }          ],          \"type\": \"Column\"        }      ],      \"spacing\": \"small\",      \"type\": \"ColumnSet\"    }  ],  \"speak\": \"Praise card sent from Test User 2 to Test User 1. Awesome, with message \",  \"version\": \"1.2\"}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": "d832a33f-28c2-4969-8ad0-4fee681dc5b4"
        }
    ]

手記: Microsoft Graph では、 OpenUrl アクションが設定されているカードのみがサポートされています。 ShowCard などの他のアクションはサポートされていません。 Microsoft Graph では、他のアクションが含まれるボットによって投稿されたメッセージを読み取ることを許可します。

会議の添付ファイル

チャネルで会議がスケジュールされると、会議の詳細を含むメッセージがチャネルに投稿されます。 会議の添付ファイルは、このオブジェクトを表し、会議の詳細が含まれます。 id プロパティには会議の ID が含まれており、コンテンツ プロパティには会議の開催者と会議の Exchange ID に関する詳細が含まれます。 Exchange ID を使用して、予定表 API を使用して会議を検索できます。 contentType プロパティは、会議の添付ファイルのmeetingReferenceに設定されます。

次の例は、アダプティブ カードの添付ファイルのスキーマを示しています。

    "attachments": [
        {
            "id": "1628156567881",
            "contentType": "meetingReference",
            "contentUrl": null,
            "content": "{\"exchangeId\":\"AAMkAGU2NzgzNDQ3LWFkMTctNGY2MC05ZjM1LWFkOTYxZWZhYTY2MgBGAAAAAADFwPNVvpzXRqmCO5F6qAKtBwB89fWKTP8MSaPLNsJWtozvAAAAAAENAAB89fWKTP8MSaPLNsJWtozvAAFg-8IoAAA=\",\"organizerId\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\"}",
            "name": "Testing channel meeting",
            "thumbnailUrl": null
        }
    ],

メッセージの添付ファイル

添付ファイル オブジェクトには、チャットに特定のメッセージへの返信が含まれている場合のメッセージが含まれます。 メッセージ添付ファイルの場合、 id プロパティにはメッセージの ID が含まれます。 content プロパティには、メッセージの詳細が含まれています。たとえば、メッセージ のプレビュー テキストと送信者です。 メッセージ添付ファイルの場合、 contentType プロパティは messageReference に設定されます。

次の例は、メッセージ添付ファイルのスキーマを示しています。

    "attachments": [
        {
            "id": "1622853091207",
            "contentType": "messageReference",
            "contentUrl": null,
            "content": "{\"messageId\":\"1622853091207\",\"messagePreview\":\"Testing unread read status\",\"messageSender\":{\"application\":null,\"device\":null,\"user\":{\"userIdentityType\":\"aadUser\",\"id\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\",\"displayName\":\"Alex\"}}}",
            "name": null,
            "thumbnailUrl": null
        }
    ],

body

chatMessage オブジェクトの body プロパティは、メッセージの本文を表します。 body プロパティは、メンションや添付ファイルなど、スキーマ内の他の要素を参照できます。 itemBody リソースの種類の contentType プロパティで指定された内容は、textまたはhtmlできます。

chatMessage スキーマでは、Teams でサポートされる次の HTML 以外の要素がサポートされています。

  • at - @mentionedされたユーザー、アプリケーション、チャネルチーム、またはタグの詳細を表す chatMessageMention への参照。
  • attachment - 添付ファイル参照の位置を表します。
  • systemEventMessage - itemBody リソースの content プロパティが <systemEventMessage/> に設定されている場合、メッセージは特別なイベントを表します。 詳細については、「 システム メッセージの取得」を参照してください。
  • emoji - メッセージの本文に絵文字が含まれている場合、 $"<emoji id="IdOfTheEmoji" alt="AlternateRepresentationOfEmoji" title="TitleOfEmoji"></emoji>" 要素は 絵文字のプロパティを表します。
    • id - 絵文字の ID。
    • alt - 絵文字の代替表現。たとえば、Unicode です。
    • title - 絵文字のタイトル。
  • customemoji - メッセージの本文にカスタム絵文字が含まれている場合、 $"<customemoji id=\"dGVzdHNjOzAtd3VzLWQyLTdiNWRkZGQ2ZGVjMDNkYzIwNTgxY2NkYTE1MmEyZTM4\" alt=\"testsc\" source=\"https://graph.microsoft.com/beta/chats/19:bcf84b15c2994a909770f7d05bc4fe16@thread.v2/messages/1706638496169/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1jYW5hcnkuYXN5bmNndy50ZWFtcy5taWNyb3NvZnQuY29tL3YxL29iamVjdHMvMC13dXMtZDItN2I1ZGRkZDZkZWMwM2RjMjA1ODFjY2RhMTUyYTJlMzgvdmlld3MvaW1ndDJfYW5pbQ==/$value\"></customemoji>" 要素は customemoji のプロパティを表します。
    • id - カスタム絵文字の ID。
    • alt - カスタム絵文字の代替表現。たとえば、カスタム絵文字の名前です。
    • source - メッセージに関連付けられているカスタム絵文字のホストされたコンテンツ。

例: チームを @mentions するメッセージ

    "body": {
        "contentType": "html",
        "content": "<div><div><at id=\"0\">WebhookTesting</at>&nbsp;Hello team</div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "WebhookTesting",
            "mentioned": {
                "application": null,
                "device": null,
                "user": null,
                "tag": null,
                "conversation": {
                    "id": "68a3e365-f7d9-4a56-b499-24332a9cc572",
                    "displayName": "WebhookTesting",
                    "conversationIdentityType": "team"
                }
            }
        }
    ],

例: 添付ファイルを含むメッセージ

    "body": {
        "contentType": "html",
        "content": "Scheduled a meeting<attachment id=\"1628156567881\"></attachment>"
    },
    "attachments": [
        {
            "id": "1628156567881",
            "contentType": "meetingReference",
            "contentUrl": null,
            "content": "{\"exchangeId\":\"AAMkAGU2NzgzNDQ3LWFkMTctNGY2MC05ZjM1LWFkOTYxZWZhYTY2MgBGAAAAAADFwPNVvpzXRqmCO5F6qAKtBwB89fWKTP8MSaPLNsJWtozvAAAAAAENAAB89fWKTP8MSaPLNsJWtozvAAFg-8IoAAA=\",\"organizerId\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\"}",
            "name": "Testing channel meeting",
            "thumbnailUrl": null
        }
    ],

例: システム イベントを含むメッセージ

    "body": {
        "contentType": "html",
        "content": "<systemEventMessage/>"
    },
    "channelIdentity": {
        "teamId": "68a3e365-f7d9-4a56-b499-24332a9cc572",
        "channelId": "19:0b50940236084d258c97b21bd01917b0@thread.skype"
    },
    "attachments": [],
    "mentions": [],
    "reactions": [],
    "eventDetail": {
        "@odata.type": "#microsoft.graph.conversationMemberRoleUpdatedEventMessageDetail",
        "conversationMemberRoles": [],
        "conversationMemberUser": {
            "id": "c4aefc8e-f890-4aa6-b586-6cce899ff7f8",
            "displayName": null,
            "userIdentityType": "aadUser"
        },
        "initiator": {
            "application": null,
            "device": null,
            "user": {
                "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
                "displayName": null,
                "userIdentityType": "aadUser"
            }
        }
    }

例: 絵文字を含むメッセージ

{
    "body": {
        "contentType": "html",
        "content": "<p><emoji id=\"smile\" alt=\"🙂\" title=\"Smile\"></emoji></p>"
    }
}

例: カスタム絵文字を含むメッセージ

手記: カスタム 絵文字は、 /beta エンドポイントでのみ使用できます。

{
    "body": {
        "contentType": "html",
        "content": "<p><customemoji id=\"dGVzdHNjOzAtd3VzLWQyLTdiNWRkZGQ2ZGVjMDNkYzIwNTgxY2NkYTE1MmEyZTM4\" alt=\"testsc\" source=\"https://graph.microsoft.com/beta/chats/19:bcf84b15c2994a909770f7d05bc4fe16@thread.v2/messages/1706638496169/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1jYW5hcnkuYXN5bmNndy50ZWFtcy5taWNyb3NvZnQuY29tL3YxL29iamVjdHMvMC13dXMtZDItN2I1ZGRkZDZkZWMwM2RjMjA1ODFjY2RhMTUyYTJlMzgvdmlld3MvaW1ndDJfYW5pbQ==/$value\"></customemoji></p>"
    }
}

channelIdentity

chatMessageチャネルで送信された場合、channelIdentity プロパティにはチャネルに関する詳細が含まれます。 これには、 チャネルチームの ID が含まれます。 このプロパティは読み取り専用です。

次の例は、メッセージ内の channelIdentity のスキーマを示しています。

    "channelIdentity": {
        "teamId": "68a3e365-f7d9-4a56-b499-24332a9cc572",
        "channelId": "19:0b50940236084d258c97b21bd01917b0@thread.skype"
    },

chatId

chatMessageチャットで送信された場合、chatId プロパティにはチャットの ID が含まれます。 このプロパティは読み取り専用です。

次の例は、 chatId のスキーマを示しています。

"chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",

createdDateTime

createdDateTime プロパティは、サーバーでメッセージが作成された時刻を表します。 このタイムスタンプは、メッセージが呼び出し元から送信された時刻とは異なる場合があります。 サーバーは、サーバー側のタイムスタンプのみを記録します。 このプロパティは読み取り専用です。ただし、 外部システムからメッセージをインポートするときに書き込むことができます。

deletedDateTime

chatMessage が削除された場合、deletedDateTime プロパティにはメッセージが削除された時刻が含まれます。 このプロパティは読み取り専用です。

手記: 削除されたメッセージは、必ずしもすべての API によって返されるとは限りません。 サブスクリプションの changeTypedeletedが含まれている場合、変更通知は常に削除されたメッセージ通知を返します。

etag

etag プロパティは、メッセージのバージョンを表します。 メッセージに対する変更 (リアクションや編集を含む) によって、メッセージの etag 値が変更されます。 このプロパティは読み取り専用です。

eventDetail

存在する場合、 eventDetails プロパティは 、チャットチャネル、または チームで発生したイベントの詳細を表します。たとえば、新しいメンバーの追加などです。 イベント メッセージの場合、chatMessagemessageType プロパティは systemEventMessage に設定されます。 詳細については、「 システム メッセージの取得」を参照してください。

from

from プロパティは、メッセージの送信者を表します。 Microsoft Teamsでは、次の送信者の種類がサポートされています。

  • Entra ID ユーザー - 有効な Entra ID を持つユーザー。 これには、 Entra 外部 ID ゲスト外部アクセス ユーザーが 含まれます。

    次の例は、Entra ID ユーザーによって送信されたメッセージの from プロパティを示しています。

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
            "displayName": "Alex Wilber",
            "userIdentityType": "aadUser"
        }
    },
    
  • 匿名ゲスト - 参加リンクを使用して会議に参加するユーザー。 これらのユーザーは、会議に参加するときに表示名を指定します。 Microsoft 365 には永続的な ID がありません。

    次の例は、匿名ゲストによって送信されたメッセージの from プロパティを示しています。

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "8578568e393e4ffe8763e0b7c3da01fe",
            "displayName": "Anon (Guest)",
            "userIdentityType": "anonymousGuest"
        }
    },
    
  • 個人用 Microsoft アカウント ユーザー - 個人用 Microsoft アカウントを使用して Teams にサインインするユーザー。

    次の例は、匿名ゲストによって送信されたメッセージの from プロパティを示しています。

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "d78f5bc88c39f6b8",
            "displayName": "TFL 1017",
            "userIdentityType": "personalMicrosoftAccountUser"
        }
    },
    
  • Skype ユーザー - Skype (コンシューマー向け) ユーザー。 詳細については、「 Teams と Skype の相互運用性」を参照してください。

    次の例は、Skype ユーザーによって送信されたメッセージの from プロパティを示しています。

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "alex1122",
            "displayName": "Alex",
            "userIdentityType": "skypeUser"
        }
    },
    
  • Skype for Business オンプレミス ユーザー - Skype For Business オンプレミス オファリングを使用するユーザー。 詳細については、「 Teams と Skype for Business の共存と相互運用性」を参照してください。

    次の例は、Skype for Business オンプレミス ユーザーから送信されたメッセージの from プロパティを示しています。

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "b0eddfe2-659b-437d-b289-cf55c8b3bb1d",
            "displayName": "Alex",
            "userIdentityType": "onPremiseAadUser"
        }
    },
    
  • ボット - Microsoft Bot Framework を介して作成された会話型ボット。

    次の例は、ボットによって送信されるメッセージの from プロパティを示しています。

    "from": {
        "device": null,
        "user": null,
        "application": {
            "id": "358f0194-6b0e-4dd3-af35-c24fe8a9ec87",
            "displayName": "Flow",
            "applicationIdentityType": "bot"
        }
    }
    
  • 送信 Webhook - 送信 Webhook を使用すると、開発者はボットに似た低コストのソリューションを構築できます。 詳細については、「 送信 Webhook の作成」を参照してください。

    次の例は、ボットによって送信されるメッセージの from プロパティを示しています。

    "from": {
        "device": null,
        "user": null,
        "application": {
            "id": "22e50a9b-80cc-4eab-a092-ce64796d28d7",
            "displayName": "Custom bot",
            "applicationIdentityType": "outgoingWebhook"
        }
    }
    
  • Microsoft 365 グループのコネクタ - コネクタを使用すると、一方向メッセージを Teams に投稿できます。 詳細については、「 Microsoft 365 グループのコネクタを作成する」を参照してください。

    次の例は、Office 365 コネクタからのメッセージの from プロパティを示しています。

    "from": {
        "device": null,
        "user": null,
        "application": {
            "id": "4c6cfc6e-cf78-44e8-87fd-bbb0efcad6a2",
            "displayName": "Bing News",
            "applicationIdentityType": "office365Connector"
        }
    }
    
  • メール - Teams では、電子メールをチャネルに送信できます。 ユーザーが不明な場合は、送信者の ID がメール ユーザーとして表示され、メッセージの送信に使用される電子メールの詳細が表示されます。

    次の例は、電子メール ユーザーから送信されたメッセージの from プロパティを示しています。

    "from": {
            "application": null,
            "device": null,
            "user": {
                "@odata.type": "#microsoft.graph.teamworkUserIdentity",
                "id": "testemailuser@outlook.com",
                "displayName": "Test User",
                "userIdentityType": "emailUser"
            }
        }
    
  • Azure Communication Services ユーザー - メッセージが Azure Communication Services ユーザーによって送信された場合、送信者の ID の詳細は from フィールドに表示されます。

    次の例は、Azure Communication Services ユーザーからの電子メール送信の from プロパティを示しています。

    "from": {
        "application": null,
        "device": null,
        "user": {
            "@odata.type": "#microsoft.graph.teamworkUserIdentity",
            "id": "8:acs:a04d09ad-aaa9-4e25-90de-475594b0fb52_00000006-96d3-711c-6a0b-343a0d000eb4",
            "displayName": null,
            "userIdentityType": "azureCommunicationServicesUser"
        }
    }
    

このプロパティは読み取り専用です。ただし、 外部システムからメッセージをインポートするときに書き込むことができます。

手記: 表示名が常に存在するとは限りません。

id

id プロパティには、メッセージを表す一意の ID が含まれています。 このプロパティは読み取り専用です。

手記: ID は、チャットやチャネルなど、特定のスコープ内でのみ一意です。 チャットとチャネル間で異なるメッセージが同じ ID を持つ場合があります。

importance

importance プロパティは、メッセージの重要度を表します。 指定可能な値は次のいずれかです。

  • 正常
  • 高い
  • 緊急

次の例は、重要度が高に設定されたメッセージを示しています。

"importance": "high",

lastEditedDateTime

lastEditedDateTime プロパティは、メッセージがユーザーによって編集されたときのタイムスタンプを表します。 これは、 Edited フラグを使用して Teams UI で表されます。 メッセージが編集されていない場合は、 null に設定されます。

lastModifiedDateTime

lastModifiedDateTime プロパティは、メッセージが最後に変更されたときのタイムスタンプを表します。 これには、リアクションなどの変更が含まれます。 メッセージが変更されたときの eTag プロパティと lastModifiedDateTime プロパティの両方。

mentions

mentions プロパティは、@mentionedされているユーザー、アプリケーション (ボット、Webhook)、チャネル、チーム、タグを表します。

例: 別のユーザーを @mentions するメッセージ

    "body": {
        "contentType": "html",
        "content": "<div><div><div><div><at id=\"0\">Alex</at>&nbsp;Test123</div></div></div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "Alex",
            "mentioned": {
                "application": null,
                "device": null,
                "conversation": null,
                "tag": null,
                "user": {
                    "id": "c27c1b19-3904-4822-9813-4f6bdaab2eae",
                    "displayName": "Alex",
                    "userIdentityType": "aadUser"
                }
            }
        }
    ],

例: ボットを @mentions するメッセージ

    "body": {
        "contentType": "html",
        "content": "<div><div><at id=\"0\">Power Automate</at> Learn more&nbsp;</div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "Power Automate",
            "mentioned": {
                "device": null,
                "user": null,
                "conversation": null,
                "tag": null,
                "application": {
                    "id": "358f0194-6b0e-4dd3-af35-c24fe8a9ec87",
                    "displayName": "Power Automate",
                    "applicationIdentityType": "bot"
                }
            }
        }
    ],

例: チームを @mentions するメッセージ

    "body": {
        "contentType": "html",
        "content": "<div><div><at id=\"0\">WebhookTesting</at>&nbsp;Hello team</div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "WebhookTesting",
            "mentioned": {
                "application": null,
                "device": null,
                "user": null,
                "tag": null,
                "conversation": {
                    "id": "68a3e365-f7d9-4a56-b499-24332a9cc572",
                    "displayName": "WebhookTesting",
                    "conversationIdentityType": "team"
                }
            }
        }
    ],

注:@mentions カード内にも表示されます。

messageType

messageType プロパティは、メッセージの種類を表します。 指定可能な値は次のいずれかです。

  • message - ユーザーとアプリケーションによって送信されるメッセージを表します。
  • systemEventMessage - メンバーの追加やチャネルの削除など、さまざまなイベントに関する詳細を Teams によって送信されるメッセージを表します。 詳細については、「 システム メッセージの取得」を参照してください。

現在、次の値は使用されていません。

  • タイピング
  • chatEvent

onBehalfOf

onBehalfOf プロパティは、ユーザーの代わりにボットによって送信されるメッセージのユーザー属性を表します。 詳細については、「 ボット メッセージのユーザー属性」を参照してください。

次の例は、ユーザーの代わりにボットによって送信されるメッセージを示しています。

"from": {
        "device": null,
        "user": null,
        "application": {
            "id": "8a34cb8d-65dc-44e2-8375-a2261d1f2a4b",
            "displayName": "PolicyMaker",
            "applicationIdentityType": "bot"
        }
    },
    "onBehalfOf": {
        "application": null,
        "device": null,
        "user": {
            "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
            "displayName": "Alex Wilber",
            "userIdentityType": "aadUser"
        }
    },

policyViolation

メッセージがテナントによって設定されたデータ損失防止 (DLP) ポリシーに違反している場合は、違反したポリシーの詳細を含むメッセージ PATCH を呼び出すことができます。 これにより、Teams UI からメッセージが非表示になります。 policyViolation プロパティは、違反したポリシーの詳細とアクションを表します。

次の例は、ポリシーが原因でブロックされたメッセージを示しています。

    "body": {
        "contentType": "text",
        "content": ""
    },
    "policyViolation": {
        "dlpAction": "blockAccess",
        "justificationText": null,
        "userAction": "none",
        "verdictDetails": "none",
        "policyTip": null
    },

reactions

reactions プロパティは、メッセージ上の他のユーザーからのリアクション (いいねなど) を表します。 各要素は、リアクションと反応したユーザーに関する情報を表します。

次の例は、リアクションを含むメッセージを示しています。

手記: 表示名が ユーザー プロパティに常に存在するとは限りません。

{
    "reactions": [
        {
            "reactionType": "💯",
            "displayName": "Hundred points",
            "createdDateTime": "2022-01-18T23:41:57.573Z",
            "user": {
                "application": null,
                "device": null,
                "user": {
                    "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
                    "displayName": null,
                    "userIdentityType": "aadUser"
                }
            }
        }
    ]
}

次の例は、カスタムリアクションを含むメッセージを示しています。

注:

  • カスタムリアクションは、 /beta エンドポイントでのみ使用できます。
  • 表示名がユーザーに対して常に存在するとは限りません。
{
    "reactions": [
        {
            "reactionType": "custom",
            "displayName": "microsoft_teams",
            "reactionContentUrl": "https://graph.microsoft.com/beta/chats/19:bcf84b15c2994a909770f7d05bc4fe16@thread.v2/messages/1706763669648/hostedContents/aWQ9MC13dXMtZDExLTc3ZmI2NmY4MTMwMGI2OGEzYzRkOWUyNmU1YTc5ZmMyLHR5cGU9MSx1cmw9/$value",
            "createdDateTime": "2024-02-14T22:07:02.288Z",
            "user": {
                "application": null,
                "device": null,
                "user": {
                    "@odata.type": "#microsoft.graph.teamworkUserIdentity",
                    "id": "28c10244-4bad-4fda-993c-f332faef94f0",
                    "displayName": null,
                    "userIdentityType": "aadUser"
                }
            }
        }
    ]
}

replyToId

replyToId プロパティは、メッセージが応答チェーン内の応答であるメッセージの ID を表します。 このプロパティは、チャネル メッセージにのみ設定されます。 このプロパティは読み取り専用です。

手記: チャット内のメッセージに返信するには、メッセージ参照が使用されます。

subject

subject プロパティには、メッセージの件名が含まれています。 これは、チャネルで送信されたメッセージに対してのみ有効です。

webUrl

webUrl プロパティには、Teams UI のメッセージを指す URL が含まれています。 この URL は、ブラウザーの Teams UI で直接メッセージを開きます。

シナリオに適した API の選択

最適な API を選択することは、可能な限り最適なエクスペリエンスを構築するために不可欠です。 また、適切な API セットを使用すると、調整を行わずにデータをフェッチできます。

Microsoft Graph のメッセージング API は、次の 3 つに分類されます。

  • Teams UI にマップされる API。 変更はすぐに表示されます。
  • ユーザーとチームに焦点を当てたデータをエクスポートする API。 変更が可能になるまでに最大 24 時間かかることがあります。
  • 通知ベースの API を変更して、リアルタイムで通知を受け取ります。

Teams UI で調整された API

Teams UI に合わせた API は、Teams UI のしくみと同様の方法で動作します。 これらの API は、特定のコンテキストでメッセージを取得するために 、しばらくの間 同期のために構築されています。 これらの API はパフォーマンスが高く、変更 (送信、編集、または削除されたメッセージ) はすぐに表示されます。

Teams UI で調整された API を次に示します。

さらに、次の API は、特定のインスタンスのフェッチやトラバーサルの順序の変更など、特定のシナリオに対応するために、これらの API と共に動作します。

Teams からデータをエクスポートするための API

データをエクスポートする API は、通常、UI で調整された API よりも高い粒度で動作します。 これらの API は、大量のデータのフェッチを許可することに重点を置きます。 データが同期され、これらの API を介して使用できるようになるには、しばらく (場合によっては最大 24 時間) かかる場合があります。

次の API は、このカテゴリに分類されます。

リアルタイム API

リアルタイム API を使用すると、変更が行われるとすぐに呼び出し元に通知を受け取ることができます (メッセージの送信、編集、削除など)。 これらの API は、Teams UI の外部でメッセージをレンダリングするなどのリアルタイム アプリケーションに適しています。 さらに、これらの API を使用すると、サブスクリプションの作成が可能になり、調整に達することなく大量のデータを受信できます。 詳細については、「 シャンルとチャットの通知を変更する」を参照してください。