如何修改AWS Lambda推送至Teams的Message Card文本颜色
如何修改Teams Message Card的文本颜色(AWS Lambda + Webhook场景)
兄弟,我太懂你这个痛点了!传统的Teams Message Card确实没有官方属性直接给title字段设置文本颜色,你代码里加的"color": "FF0000"不是标准字段,Teams会直接忽略它,这就是为啥你的尝试没生效。
不过别慌,有两个靠谱的办法能实现你要的标题变色效果:
方法1:用text字段结合HTML标签模拟标题
Message Card的text字段支持有限的HTML标签,其中就包括<font>标签可以设置颜色。你可以把带颜色的标题内容放到text里,再通过加粗等格式让它看起来像标题,示例代码如下:
data = { "@context": "https://schema.org/extensions", "@type": "MessageCard", "themeColor": "0072C6", # 要是想保留原标题的位置,就留着;想全变色就直接把内容移去text里 "title": self.title, "text": f"<font color='FF0000'>Severity: {str(self.severity)}</font>\n{self.findings}\n Account: {self.account}\nTags: {json.dumps(self.tags)}" }
如果想让整个标题(包括self.title和Severity部分)都变色,就把所有内容包进<font>标签:
"text": f"<font color='FF0000'>{self.title} Severity: {str(self.severity)}</font>\n{self.findings}\n Account: {self.account}\nTags: {json.dumps(self.tags)}"
方法2:用sections模块构建带样式的标题
另一种更规整的方式是用Message Card的sections字段,在sections里的activityTitle同样支持HTML标签,这样可以把带颜色的标题单独放进去,结构更清晰:
data = { "@context": "https://schema.org/extensions", "@type": "MessageCard", "themeColor": "0072C6", "sections": [ { "activityTitle": f"<font color='FF0000'>{self.title} Severity: {str(self.severity)}</font>", "text": f"{self.findings}\n Account: {self.account}\nTags: {json.dumps(self.tags)}" } ] }
几个关键注意点
- 颜色值要加单引号或双引号,支持十六进制(比如
FF0000)或者直接用颜色名称(比如red) - 别加
#前缀!Teams解析传统Message Card时会忽略带#的颜色值,直接写纯十六进制字符串就行 - 测试的时候直接把JSON payload通过你的Lambda发送到Teams webhook就行,不用找第三方工具,发完看效果调整就行
内容的提问来源于stack exchange,提问作者Francesca
相关产品推荐
相关产品推荐

