Teams Outgoing Webhook调用PowerShell Azure函数无法解析聊天文本问题
在Teams中使用Outgoing Webhook时解析JSON请求体的PowerShell Azure函数修正方案
当前你的PowerShell Azure函数能返回基础响应,但无法提取并回显Teams中传入的文本,问题出在请求体的解析步骤上——Azure函数中$Request.Body默认是字节数组,直接用ConvertFrom-Json解析会失败,导致$text为空。
修正后的代码
using namespace System.Net param($Request, $TriggerMetadata) # 将请求体的字节数组转换为UTF-8字符串,再解析为JSON对象 $requestBodyString = [System.Text.Encoding]::UTF8.GetString($Request.Body) $payload = $requestBodyString | ConvertFrom-Json $text = $payload.text # 构造响应内容 $responseContent = @{ type = 'message' text = "You said: $text" } | ConvertTo-Json # 返回响应 Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{ StatusCode = [HttpStatusCode]::OK Body = $responseContent })
关键修正点
- 请求体转换:先通过
[System.Text.Encoding]::UTF8.GetString($Request.Body)将原始字节格式的请求体转换为字符串,确保ConvertFrom-Json能正确解析JSON结构。 - 字段验证:Teams Outgoing Webhook的请求体标准结构中,用户输入的消息内容直接存储在
text字段,确认该字段路径无误。
如果仍无法获取文本,可添加日志输出验证请求体结构:
# 在解析前添加日志,查看原始请求体内容 Write-Output "原始请求体:$requestBodyString"
通过Azure函数的日志查看完整请求体,确认文本所在的字段路径是否正确。
内容的提问来源于stack exchange,提问作者Ayan Mullick
相关产品推荐
相关产品推荐

