团队:Invoke-webrequest向团队发送base64字符串(PNG)



我正在尝试向具有"传入的webhook"设置的团队渠道发送base64-string。

该消息发送到频道,但没有显示图像,当我搜索此消息时,似乎我无法将图像或任何其他类型的附件作为base64-string发送给团队?

JSON和使用REST API的新陌生

我不知道如何指示主体是string是base64-string,而预期的输出应为png-file。

尝试了以下方法:

$webhook = 'URLtoTeamsWebhook'
$base64 = "longBase64string"
$Body = @{
     "text" = "Hello World! from PowerShell"
     "imageData" = "$base64"
}
$params = @{
      Headers = @{'accept'='application/json'}
      Body = $Body | convertto-json
      Method = 'Post'
      URI = $webhook 
}
Invoke-RestMethod @params

但它不起作用,也尝试了以下代码,并对身体更改:

$Body = @{
  "type" = "string",
  "contentEncoding" = "$base64",
  "contentMediaType" = "image/png"
}

而且它也不起作用。

"不起作用" =向团队发布,但根本不显示图像。

更新:

能够弄清楚这一点,但仍然值得回复;

https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/cards/cards/cards-referend

我想您可以"只"使用他们的卡通过他们的"传入webhook"发送数据,而我想使用的卡是"英雄卡",因为数据是一个带有图像的警报,但是,使用"连接器"时不支持它:(

我找到了这个网站;

https://github.com/grafana/grafana/issues/13121

,我已经使用了该示例,但是我必须必须将图片(在基本64格式中(发送到S3,以便用户能够查看更大的图片。

<</p>

webhook支持办公室365连接卡。请发送以下消息卡JSON,如果您遇到任何问题,请告诉我们。

 {
    "@type": "MessageCard",
    "text": "Here are test images",
    "sections": [
        {
            "images": [
                {
                    "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMeSURBVDhPLVJbTBRXAL135s7Ozs7Ozi6z7AK7sCobCa2rmBabAEGNBlgjCr6t1qS26RIbH0lLH3y1fLQJsdVojPGjtjGGhKgfJIZoIhhEEg2+wagsYmlE2Ar7mNkddmbunel+9CTn4+Tk/Jxz4F8/diKatiDE2MKE0JARmrcNdXfVrVuj6xoFTVWRWRvF2YCkJftLms+vjgFs+gxlzD+KPDxEiIaQIiZGmJRtOXTmyMG9O1ox1igAiaZiBhbcYiwfW/fzWPHHQNabxFR/WTxj+ihRdPAOBtEWwHp5Q+uFX7sOf7odY4xoQChap1lJ5CHDbqz/c+x9KPRuYTx07+ayGVMstXu89IFNdQQTy7IcxcsHnryocRBGcBc0RIydgQGUfySsOlD1E55KX6mVW+O9Wc1y8bbZqZdOl5t6rxgZFWs6TEghauKuFKhQc3mMTQYCn5Y+6W3vkDrAkxmgqB1n7+96vCLgZpHHf6731pvnz+gju6PeIoEvLZscuNS6tcXJmj6Jd7tYJ8k2lf8wmgswb+ZpB2dquaWiyqex4t09w21hc+AfJqnocG+0feb1dHIh9W8mKxMcrKhS0klRcLidRXhP10RkA4hPM/KSwYnA0Nnk4lZ3Orw4GqyO9F0fgf3Xh7/4vKPzxFfffHd8Lv4uWB0A/8Ms8M7kwvr7dpDJsPMpDTmAovh5JjE83LL+gxuDY/D3WCyyY3/saNfmVR+eunh6cjwuulyCSzSWTJVnNcR46Zz/ZmELyEzPYoYrVAsMAvIG5DgqEPQs3u7747fvJ1Lp7dG2moY1Ly8PPu0dwYCyZbO6RsZl1mpHPlveWFmOSB5YFsXbodNuaTIFKEQcnrl7g91f75OqVgdcFdGeL8M10tz41NDAKzSX5LLGtb/pxE5Xoz1tVIcRbVBqDhRygptKEZjVjEUdqsT65dzJzzq/hYWH1kfCK4WmtqqMQXOJ2aCS6n2oDbWVHhXe4nAl5ija0KzCl6ONG2zQMiB69WJK8PobW1oitXWNH9U279tV6uQldtYbCsoJ1Un0B/P48Ccla835q6DERABl1f8A6bloNT9MI68AAAAASUVORK5CYII="
                }
            ]
        }
    ]
}

trinetra-msft答案的后续。为了读取图像数据并使其在Python中起作用,请使用以下内容。

 # Read images as base64 encoded string to allow MessageCards to use them
 activity_image_success = base64.b64encode(open(os.path.join(dirname, "images/success.png"),"rb").read()).decode('utf-8')
 activity_image_error = base64.b64encode(open(os.path.join(dirname, "images/error.png"),"rb").read()).decode('utf-8')

在消息卡中添加了这样的数据

'activityImage': f"data:image/png;base64,{activity_image_error}",

编码响应

# Send POST request to MS Teams connector 
http.request('POST', hook_url, 
    headers={'Content-Type': 'application/json'},
    body=json.dumps(data).encode('utf-8'))

最新更新