You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Apps中获取Teams频道15天消息并实现回复?

在Power Apps中获取Teams频道15天内的全部消息(含主题与ID)

核心问题说明

MicrosoftTeams.GetMessagesfromchannel() 接口默认仅返回最新20条消息,无法直接覆盖15天的历史范围,必须通过Microsoft Graph API结合分页机制实现需求。

具体实现步骤

1. 配置Graph API连接

在Power Apps中添加「HTTP」连接器,身份验证选择「OAuth 2.0」,资源指定为「Microsoft Graph」,并确保勾选权限 ChannelMessage.Read.All(需租户管理员授权生效)。

2. 构造Graph API请求(带时间过滤)

Graph API的频道消息端点为 https://graph.microsoft.com/v1.0/teams/{团队ID}/channels/{频道ID}/messages,通过以下参数控制范围与分页:

  • $filter:筛选15天内的消息,格式为 createdDateTime ge {15天前的ISO时间戳}
  • $top:单次请求最大返回条目数(上限100)
  • @odata.nextLink:响应中返回的下一页请求地址,用于分页迭代

初始化时间变量与首次请求

// 生成15天前的ISO格式时间戳
Set(var15DaysAgo, Text(DateAdd(Today(), -15, Days), "yyyy-MM-ddTHH:mm:ssZ"));

// 发起首次请求并存储结果到集合
ClearCollect(colTeamMessages, 
    HTTP.Request(
        "GET",
        "https://graph.microsoft.com/v1.0/teams/{你的团队ID}/channels/{你的频道ID}/messages?$filter=createdDateTime ge '" & var15DaysAgo & "'&$top=100",
        {},
        {}
    ).value
);

// 记录下一页地址
Set(varNextPageLink, HTTP.Request(...).'@odata.nextLink')

3. 循环分页获取剩余消息

通过循环判断varNextPageLink是否为空,持续获取后续页的消息:

While(
    !IsBlank(varNextPageLink),
    Collect(colTeamMessages, 
        HTTP.Request(
            "GET",
            varNextPageLink,
            {},
            {}
        ).value
    );
    Set(varNextPageLink, HTTP.Request(varNextPageLink).'@odata.nextLink')
)

4. 提取目标字段

从集合中筛选出需要的消息ID和主题:

ClearCollect(colTargetData, 
    ShowColumns(colTeamMessages, "id", "subject")
)

注意事项

  • 时间戳必须严格遵循ISO 8601格式,否则$filter条件会失效
  • 注意Graph API的请求频率限制,避免短时间内发起大量请求触发限流
  • 若权限不足,需联系租户管理员在Azure AD中配置对应API权限

内容的提问来源于stack exchange,提问作者Kskrishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:37:08