Microsoft Graph でのMicrosoft Teams メッセージング API の操作
Microsoft Graph には、Teams メッセージに対する操作を実行できるMicrosoft Teams API の包括的なセットが用意されています。 この記事では、主要な Teams API スキーマ要素について説明し、高度なシナリオに基づいて使用する API の概要について説明します。 Microsoft Graph の Teams API の詳細については、「Microsoft Graph APIを使用して Teams を操作する」を参照してください。
chatMessage リソースの種類は、Teams チャットとチャネルのメッセージを表します。 このセクションでは、 chatMessage スキーマの要素について説明します。
手記: このセクションの例では、関連するスキーマ要素のみが表示され、メッセージ ペイロード全体は表示されません。
chatMessageAttachment リソースの種類は、chatMessage から参照できるエンティティを表します。 これらのエンティティには、ファイル、タブ、カード、会議、またはその他のメッセージが含まれます。 項目自体が他の場所にある可能性があります。 たとえば、ファイルは SharePoint に格納される場合があります。 次のセクションでは、 chatMessage オブジェクトで考えられる添付ファイルの種類について説明します。
カードは、定義済みのスキーマによってサポートされるビジュアル要素を表します。 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 では、他のアクションが含まれるボットによって投稿されたメッセージを読み取ることを許可します。
添付ファイル オブジェクトがファイルを参照する場合、ファイルを開くリンクなど、ファイルに関する情報が含まれます。 ファイル自体は、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
}
],
添付ファイル オブジェクトには、チャットに転送された転送されたメッセージが含まれています。 メッセージ添付ファイルの場合、 id プロパティには転送されたメッセージの ID が含まれます。
content プロパティには、メッセージの詳細が含まれています。たとえば、元のメッセージ コンテキストや元の送信者の詳細などです。 メッセージ添付ファイルの場合、 contentType プロパティは に forwardedMessageReference
設定されます。
次の例は、転送されたメッセージ添付ファイルのスキーマを示しています。
"attachments": [
{
"id": "1727881360458",
"contentType": "forwardedMessageReference",
"contentUrl": null,
"content": "{\"originalMessageId\":\"1727881360458\",\"originalMessageContent\":\"\\n<p>hello</p>\\n\",\"originalConversationId\":\"19:97641583cf154265a237da28ebbde27a@thread.v2\",\"originalSentDateTime\":\"2024-10-02T15:02:40.458+00:00\",\"originalMessageSender\":{\"application\":null,\"device\":null,\"user\":{\"userIdentityType\":\"aadUser\",\"tenantId\":\"2432b57b-0abd-43db-aa7b-16eadd115d34\",\"id\":\"28c10244-4bad-4fda-993c-f332faef94f0\",\"displayName\":null}}}",
"name": null,
"thumbnailUrl": null,
"teamsAppId": null
}
],
チャネルで会議がスケジュールされると、会議の詳細を含むメッセージがチャネルに投稿されます。 会議の添付ファイルは、このオブジェクトを表し、会議の詳細が含まれます。
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
}
],
添付オブジェクトが現在のコンテキストでホストされているタブを参照する場合、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
}
],
chatMessage オブジェクトの body プロパティは、メッセージの本文を表します。
body プロパティは、メンションや添付ファイルなど、スキーマ内の他の要素を参照できます。 itemBody リソースの種類の contentType プロパティで指定した内容は、 または html
にできます。text
chatMessage スキーマでは、Teams でサポートされる次の HTML 以外の要素がサポートされています。
- at - ユーザー、アプリケーション、チャネル、チーム、または タグの詳細を表す chatMessageMention への参照。@mentioned
- attachment - 添付ファイル参照の位置を表します。
- systemEventMessage - itemBody リソースの content プロパティが に
<systemEventMessage/>
設定されている場合、メッセージは特別なイベントを表します。 詳細については、「 システム メッセージの取得」を参照してください。 - emoji - メッセージの本文に絵文字が含まれている場合、要素は
$"<emoji id="IdOfTheEmoji" alt="AlternateRepresentationOfEmoji" title="TitleOfEmoji"></emoji>"
絵文字のプロパティを表します。- id - 絵文字の ID。
- alt - 絵文字の代替表現。たとえば、Unicode です。
- title - 絵文字のタイトル。
- customemoji - メッセージの本文にカスタム絵文字が含まれている場合、要素は
$"<customemoji id="IdOfTheCustomEmoji" alt="AlternateRepresentationOfCustomEmoji" source="HostedContentOfCustomEmoji"></customemoji>"
customemoji のプロパティを表します。- id - カスタム絵文字の ID。
- alt - カスタム絵文字の代替表現。たとえば、カスタム絵文字の名前です。
- source - メッセージに関連付けられているカスタム絵文字のホストされたコンテンツ。
例: チームが@mentions
"body": {
"contentType": "html",
"content": "<div><div><at id=\"0\">WebhookTesting</at> 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>"
}
}
chatMessage がチャネルで送信された場合、channelIdentity プロパティにはチャネルに関する詳細が含まれます。 これには、 チャネル と チームの ID が含まれます。 このプロパティは読み取り専用です。
次の例は、メッセージ内の channelIdentity のスキーマを示しています。
"channelIdentity": {
"teamId": "68a3e365-f7d9-4a56-b499-24332a9cc572",
"channelId": "19:0b50940236084d258c97b21bd01917b0@thread.skype"
},
chatMessage がチャットで送信された場合、chatId プロパティにはチャットの ID が含まれます。 このプロパティは読み取り専用です。
次の例は、 chatId のスキーマを示しています。
"chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",
createdDateTime プロパティは、サーバーでメッセージが作成された時刻を表します。 このタイムスタンプは、メッセージが呼び出し元から送信された時刻とは異なる場合があります。 サーバーは、サーバー側のタイムスタンプのみを記録します。 このプロパティは読み取り専用です。ただし、 外部システムからメッセージをインポートするときに書き込むことができます。
chatMessage が削除された場合、deletedDateTime プロパティにはメッセージが削除された時刻が含まれます。 このプロパティは読み取り専用です。
手記: 削除されたメッセージは、必ずしもすべての API によって返されるとは限りません。 サブスクリプションの changeType に が含まれている
deleted
場合、変更通知は常に削除されたメッセージ通知を返します。
etag プロパティは、メッセージのバージョンを表します。 メッセージに対する変更 (リアクションや編集を含む) によって、メッセージの etag 値が変更されます。 このプロパティは読み取り専用です。
存在する場合、 eventDetails プロパティは 、チャット、 チャネル、または チームで発生したイベントの詳細を表します。たとえば、新しいメンバーの追加などです。 イベント メッセージの場合、chatMessage の messageType プロパティは にsystemEventMessage
設定されます。 詳細については、「 システム メッセージの取得」を参照してください。
from プロパティは、メッセージの送信者を表します。 Microsoft Teamsでは、次の送信者の種類がサポートされています。
Entra ID ユーザー - 有効な Entra ID を持つユーザー。 これには、ゲストと外部アクセス ユーザー外部 ID Entra が含まれます。
次の例は、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" } }
Email - 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 を持つ場合があります。
importance プロパティは、メッセージの重要度を表します。 指定可能な値は次のいずれかです。
- 正常
- 高い
- 緊急
次の例は、重要度が高に設定されたメッセージを示しています。
"importance": "high",
lastEditedDateTime プロパティは、メッセージがユーザーによって編集されたときのタイムスタンプを表します。 これは、フラグを持つ Teams UI で Edited
表されます。 メッセージが編集されていない場合は に設定 null
されます。
lastModifiedDateTime プロパティは、メッセージが最後に変更されたときのタイムスタンプを表します。 これには、リアクションなどの変更が含まれます。 メッセージが変更されたときの eTag プロパティと lastModifiedDateTime プロパティの両方。
mentions プロパティは、ユーザー、アプリケーション (ボット、Webhook)、チャネル、チーム、または タグを表します@mentioned。
例: 別のユーザーに対する @mentions メッセージ
"body": {
"contentType": "html",
"content": "<div><div><div><div><at id=\"0\">Alex</at> 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 </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> 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 プロパティは、メッセージの種類を表します。 指定可能な値は次のいずれかです。
- message - ユーザーとアプリケーションによって送信されるメッセージを表します。
- systemEventMessage - メンバーの追加やチャネルの削除など、さまざまなイベントに関する詳細を Teams によって送信されるメッセージを表します。 詳細については、「 システム メッセージの取得」を参照してください。
現在、次の値は使用されていません。
- タイピング
- chatEvent
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"
}
},
メッセージがテナントによって設定されたデータ損失防止 (DLP) ポリシーに違反している場合は、違反したポリシーの詳細を含むメッセージ PATCH を呼び出すことができます。 これにより、Teams UI からメッセージが非表示になります。 policyViolation プロパティは、違反したポリシーの詳細とアクションを表します。
次の例は、ポリシーが原因でブロックされたメッセージを示しています。
"body": {
"contentType": "text",
"content": ""
},
"policyViolation": {
"dlpAction": "blockAccess",
"justificationText": null,
"userAction": "none",
"verdictDetails": "none",
"policyTip": null
},
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 プロパティは、メッセージが応答チェーン内の応答であるメッセージの ID を表します。 このプロパティは、チャネル メッセージにのみ設定されます。 このプロパティは読み取り専用です。
手記: チャット内のメッセージに返信するには、メッセージ参照が使用されます。
subject プロパティには、メッセージの件名が含まれています。 これは、チャネルで送信されたメッセージに対してのみ有効です。
webUrl プロパティには、Teams UI のメッセージを指す URL が含まれています。 この URL は、ブラウザーの Teams UI で直接メッセージを開きます。
最適な API を選択することは、可能な限り最適なエクスペリエンスを構築するために不可欠です。 また、適切な API セットを使用すると、調整を行わずにデータをフェッチできます。
Microsoft Graph のメッセージング API は、次の 3 つに分類されます。
- Teams UI にマップされる API。 変更はすぐに表示されます。
- ユーザーとチームに焦点を当てたデータをエクスポートする API。 変更が可能になるまでに最大 24 時間かかることがあります。
- 通知ベースの API を変更して、リアルタイムで通知を受け取ります。
Teams UI に合わせた API は、Teams UI のしくみと同様の方法で動作します。 これらの API は、特定のコンテキストでメッセージを取得するために 、しばらくの間 同期のために構築されています。 これらの API はパフォーマンスが高く、変更 (送信、編集、または削除されたメッセージ) はすぐに表示されます。
Teams UI で調整された API を次に示します。
- チャット内のメッセージを一覧表示する
- チャネルのメッセージを一覧表示する
- チャネル内のメッセージへの応答を一覧表示する
- チャットにメッセージを送信する
- チャネルでメッセージを送信する
- チャネル内のメッセージに返信する
- メッセージに関連付けられている hostedContents を一覧表示する
- メッセージに関連付けられている hostedContent を取得する
さらに、次の API は、特定のインスタンスのフェッチやトラバーサルの順序の変更など、特定のシナリオに対応するために、これらの API と共に動作します。
データをエクスポートする API は、通常、UI で調整された API よりも高い粒度で動作します。 これらの API は、大量のデータのフェッチを許可することに重点を置きます。 データが同期され、これらの API を介して使用できるようになるには、しばらく (場合によっては最大 24 時間) かかる場合があります。
次の API は、このカテゴリに分類されます。
リアルタイム API を使用すると、変更が行われるとすぐに呼び出し元に通知を受け取ることができます (メッセージの送信、編集、削除など)。 これらの API は、Teams UI の外部でメッセージをレンダリングするなどのリアルタイム アプリケーションに適しています。 さらに、これらの API を使用すると、サブスクリプションの作成が可能になり、調整に達することなく大量のデータを受信できます。 詳細については、「 シャンルとチャットの通知を変更する」を参照してください。