团队:sendActivityNotification

命名空间:microsoft.graph

在团队范围内发送活动源通知。 有关发送通知的详细信息以及执行此操作的要求,请参阅 发送 Teams 活动通知

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) TeamsActivity.Send 不可用。
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 TeamsActivity.Send.Group TeamsActivity.Send

注意

TeamsActivity.Send.Group 权限使用 特定于资源的许可

HTTP 请求

POST /teams/{teamId}/sendActivityNotification

请求标头

名称 说明
Authorization 持有者 {token}。 必填。 详细了解 身份验证和授权
Content-Type application/json. 必需。

请求正文

在请求正文中,提供参数的 JSON 表示形式。

下表显示了可用于此操作的参数。

参数 类型 说明
topic teamworkActivityTopic 通知的主题。 指定要讨论的资源。
activityType String 活动类型必须在 Teams 应用清单中声明,但保留活动类型除外systemDefault,该类型在通知行中Actor+Reason提供自由格式文本。
chainId Int64 可选。 通知的链 ID。 用于替代以前的通知。 在后续请求中使用相同的 chainId 来覆盖上一个通知。
previewText itemBody 通知的预览文本。 Microsoft Teams 显示前 150 个字符。
templateParameters keyValuePair 集合 在 Teams 应用清单中对应于 activityType 的活动源条目中定义的模板变量的值。
recipient teamworkNotificationRecipient 通知的收件人。 有关详细信息,请参阅 aadUserNotificationRecipientchannelMembersNotificationRecipientteamMembersNotificationRecipient
teamsAppId String 可选。 与通知关联的 Teams 应用的 Teams 应用 ID。 用于在为同一收件人用户安装具有相同Microsoft Entra ID 应用 ID 的多个应用时消除已安装应用的歧义。 避免在 Teams 应用之间共享Microsoft Entra ID 应用 ID。

topic 属性entityUrl的值设置为 source 时,支持以下资源:

注意: 实体 URL 必须是 URL 中团队的相同或子资源。 此外, Teams 应用 必须安装在团队中。

响应

如果成功,此操作返回 204 No Content 响应代码。

示例

示例 1:通知用户有关待处理的财务审批请求

此示例演示如何为团队发送活动源通知。 此示例通知团队所有者有关待处理的财务审批请求。

请求

POST https://graph.microsoft.com/v1.0/teams/{teamId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/{teamId}"
    },
    "activityType": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

响应

HTTP/1.1 204 No Content

示例 2:通知用户有关频道选项卡的信息

与上一示例类似,此示例对 topic使用 entityUrl 。 但是,此示例链接到频道中的选项卡。 该选项卡托管一个页面,显示用户其预订状态。 选择通知会将用户转到选项卡,他们可以在其中检查其预留。

请求

POST https://graph.microsoft.com/v1.0/teams/{teamId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/{teamId}/channels/{channelId}/tabs/{tabId}"
    },
    "activityType": "reservationUpdated",
    "previewText": {
        "content": "You have moved up the queue"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "reservationId",
            "value": "TREEE433"
        },
        {
            "name": "currentSlot",
            "value": "23"
        }
    ]
}

响应

HTTP/1.1 204 No Content

示例 3:使用用户主体名称通知用户有关频道选项卡的信息

与上一示例类似,此示例对 topic使用 entityUrl 。 但是,此示例链接到频道中的选项卡。 该选项卡托管一个页面,显示用户其预订状态。 选择通知会将用户转到选项卡,他们可以在其中检查其预留。

请求

POST https://graph.microsoft.com/v1.0/teams/{teamId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/{teamId}/channels/{channelId}/tabs/{tabId}"
    },
    "activityType": "reservationUpdated",
    "previewText": {
        "content": "You have moved up the queue"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "jacob@contoso.com"
    },
    "templateParameters": [
        {
            "name": "reservationId",
            "value": "TREEE433"
        },
        {
            "name": "currentSlot",
            "value": "23"
        }
    ]
}

响应

HTTP/1.1 204 No Content

示例 4:使用自定义主题通知用户事件

如前面的示例所示,可以链接到团队的不同方面。 但是,如果要链接到不属于团队或未由 Microsoft Graph 表示的方面,或者想要自定义名称,可以将 的源topictext设置为 并为其传递自定义值。 webUrl 将源设置为 topictext时需要 。

请求

POST https://graph.microsoft.com/v1.0/teams/{teamId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "text",
        "value": "Deployment Approvals Channel",
        "webUrl": "https://teams.microsoft.com/l/message/19:448cfd2ac2a7490a9084a9ed14cttr78c@thread.skype/1605223780000?tenantId=c8b1bf45-3834-4ecf-971a-b4c755ee677d&groupId=d4c2a937-f097-435a-bc91-5c1683ca7245&parentMessageId=1605223771864&teamName=Approvals&channelName=Azure%20DevOps&createdTime=1605223780000"
    },
    "activityType": "deploymentApprovalRequired",
    "previewText": {
        "content": "New deployment requires your approval"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "deploymentId",
            "value": "6788662"
        }
    ]
}

响应

HTTP/1.1 204 No Content

示例 5:通知团队成员有关待处理的财务审批请求

以下示例演示如何向所有团队成员发送活动源通知。 此示例与前面的示例类似。 但是,在这种情况下, 收件人teamMembersNotificationRecipient收件人中指定的 teamId 必须与请求 URL 中指定的 teamId 匹配。

注意: 向所有团队成员发送通知的功能仅限于具有 10,000 个或更少成员的团队。 如果团队超过 10,000 个成员,则任何团队成员都不会收到通知。

请求

下面为请求示例。

POST https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7"
    },
    "activityType": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.teamMembersNotificationRecipient",
        "teamId": "e8bece96-d393-4b9b-b8da-69cedef1a7e7"
    },
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

响应

以下示例显示了相应的响应。

HTTP/1.1 204 No Content

示例 6:通知频道成员有关待处理的财务审批请求

以下示例演示如何向所有频道成员发送活动源通知。 此示例类似于上一个示例。 但是,在这种情况下, 接收者channelMembersNotificationRecipient收件人中指定的 teamId 必须与请求 URL 中指定的 teamId 匹配。

请求

下面为请求示例。

POST https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7"
    },
    "activityType": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.channelMembersNotificationRecipient",
        "teamId": "e8bece96-d393-4b9b-b8da-69cedef1a7e7",
        "channelId": "19:3d61a2309f094f4a9310b20f1db37520@thread.tacv2"
    },
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

响应

以下示例显示了相应的响应。

HTTP/1.1 204 No Content

示例 7:在通道消息回复位置通知待处理财务审批请求

与上一示例类似,此示例对 topic使用 entityUrl 。 但是,此示例链接到 通道消息回复。 频道消息回复显示用户预订的状态。 选择通知会将用户转到通道中的回复消息,他们可以在其中检查其预留状态。

请求

下面为请求示例。

POST https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/beta/teams/{teamId}/channels/{channelId}/messages/{messageId}/replies/{replyId}"
    },
    "activityType": "reservationStatusUpdated",
    "previewText": {
        "content": "You have moved up the queue"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "jacob@contoso.com"
    },
    "templateParameters": [
        {
            "name": "reservationId",
            "value": "TREEE433"
        },
        {
            "name": "currentSlot",
            "value": "23"
        }
    ]
}

响应

以下示例显示了相应的响应。

HTTP/1.1 204 No Content