Python生成Microsoft Teams payload 如何在单张MessageCard展示全部列表项
问题根因
你在循环内每次遍历都会重新生成完整的payload对象,且仅给text字段赋值当前单个列表项:
- 若发送请求的逻辑写在循环外,最终只会发送循环结束时最后一次生成的payload,你仅收到第一条大概率是请求发送逻辑的位置有误
- 若把发送逻辑写在循环内,会触发多次推送,生成多张独立卡片,不符合单卡片展示所有内容的需求
解决方案
不需要循环生成payload,先把所有列表项拼接为Teams消息卡片支持的Markdown格式字符串,再统一赋值给text字段即可:
items = ["first", "second", "third", "fourth"] # 拼接为Markdown无序列表 content = "\n".join([f"- {item}" for item in items]) payload = { "@type": "MessageCard", "@context": "http://schema.org/extensions", "themeColor": "FFFFFF", "summary": "a short description of things", "text": content }
如果需要展示有序列表,修改拼接逻辑即可:
# 拼接为Markdown有序列表 content = "\n".join([f"{idx+1}. {item}" for idx, item in enumerate(items)])
内容的提问来源于stack exchange,提问作者b_jugger
相关产品推荐
相关产品推荐

