Post 使用 Powershell 到 Office365 组连接器(Webhook)
Post to Office365 Group Connector(Webhook) using Powershell
我正在尝试使用 powershell post 向 O365 'Incoming Webhook' 发送一条简单消息。这是代码:
$url = 'https://outlook.office365.com/webhook/.......'
$body = @"
{
"text": "Hello World!"
"title": "Today"
}
"@
Invoke-RestMethod -Uri $url -Method Post -Body $body -ContentType "application/json"
但是得到这个错误:
PSMessageDetails :
Exception : System.Net.WebException: The remote server returned an error: (404) Not Found.
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
TargetObject : System.Net.HttpWebRequest
CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
ErrorDetails : Invalid webhook request
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : at <ScriptBlock>, <No file>: line 10
PipelineIterationInfo : {}
如果我遗漏了 -Contentype
参数,我会得到这个错误:
Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: AADSTS90002: Requested tenant identifier '00000000-0000-0000-0000-000000000000' is not valid. Tenant identifiers may not be an empty GUID.
Trace ID: c4b77459-3915-475e-8125-fa2db9fd11e8
Correlation ID: 0ba64202-db52-4a96-8f44-a87b7f009170
Timestamp: 2016-03-27 07:48:02Z
有人知道如何让它工作吗?
由于 "text" 字段后缺少逗号,您的邮件正文不是有效的 json 片段。
改为
$body = @"
{
"text": "Hello World!",
"title": "Today"
}
"@
它对我有用。
谢谢指点。我试图测试 Azure WebHook。它将在网页的测试方法上工作;甚至将 JSON 正文从页面复制到 powershell,但它不起作用。关键显然是指定
-ContentType "application/json"
然而,我发现有趣的是,Teams do 中的 WebHooks 使用默认内容类型(即 "application/x-www-form-urlencoded") 举个例子 post Stefan Stranger posted:
Use WebHooks Connect to Send Data from PowerShell to Microsoft Teams
对他们来说是个不错的捷径,但最好始终为 WebHook 指定内容类型以确保安全。
我正在尝试使用 powershell post 向 O365 'Incoming Webhook' 发送一条简单消息。这是代码:
$url = 'https://outlook.office365.com/webhook/.......'
$body = @"
{
"text": "Hello World!"
"title": "Today"
}
"@
Invoke-RestMethod -Uri $url -Method Post -Body $body -ContentType "application/json"
但是得到这个错误:
PSMessageDetails :
Exception : System.Net.WebException: The remote server returned an error: (404) Not Found.
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
TargetObject : System.Net.HttpWebRequest
CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
ErrorDetails : Invalid webhook request
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : at <ScriptBlock>, <No file>: line 10
PipelineIterationInfo : {}
如果我遗漏了 -Contentype
参数,我会得到这个错误:
Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: AADSTS90002: Requested tenant identifier '00000000-0000-0000-0000-000000000000' is not valid. Tenant identifiers may not be an empty GUID.
Trace ID: c4b77459-3915-475e-8125-fa2db9fd11e8
Correlation ID: 0ba64202-db52-4a96-8f44-a87b7f009170
Timestamp: 2016-03-27 07:48:02Z
有人知道如何让它工作吗?
由于 "text" 字段后缺少逗号,您的邮件正文不是有效的 json 片段。
改为
$body = @"
{
"text": "Hello World!",
"title": "Today"
}
"@
它对我有用。
谢谢指点。我试图测试 Azure WebHook。它将在网页的测试方法上工作;甚至将 JSON 正文从页面复制到 powershell,但它不起作用。关键显然是指定
-ContentType "application/json"
然而,我发现有趣的是,Teams do 中的 WebHooks 使用默认内容类型(即 "application/x-www-form-urlencoded") 举个例子 post Stefan Stranger posted:
Use WebHooks Connect to Send Data from PowerShell to Microsoft Teams
对他们来说是个不错的捷径,但最好始终为 WebHook 指定内容类型以确保安全。