首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用IFTTT Webhooks从Powershell传递值

使用IFTTT Webhooks从Powershell传递值
EN

Stack Overflow用户
提问于 2022-09-29 08:37:31
回答 1查看 52关注 0票数 0

我在IFTTT中创建了一个Web钩子,让我的服务器根据事件向我的Android手机发送通知。由于某种原因,这些值不会在web请求中传递。在Webhooks文档中可以看到:

代码语言:javascript
代码运行次数:0
运行
复制
To trigger an Event with 3 JSON values

Make a POST or GET web request to:

https://maker.ifttt.com/trigger/{event}/with/key/{MyKey}

With an optional JSON body of:

{ "value1" : "", "value2" : "", "value3" : "" }

The data is completely optional, and you can also pass value1, value2, and value3 as query parameters or form variables. This content will be passed on to the action in your Applet. 

事件设置为显示Your test value is {{value1}}

然后,我尝试在Powershell中运行这个程序:

代码语言:javascript
代码运行次数:0
运行
复制
$WebhookURL = "https://maker.ifttt.com/trigger/{MyEvent}/json/with/key/{MyKey}

Invoke-RestMethod -Method Get -Uri $($WebhookURL+"?value1=TESTVALUE") -ContentType "application/json"

然而,这会向我的手机发送一个通知,上面写着,字面上说,Your test value is {{value1}}

因此,通知是正确触发的,只是"value1“的值没有正确传递。我还尝试将值传递为-Body,但结果是相同的:

代码语言:javascript
代码运行次数:0
运行
复制
$Body = @{
    value1 = "TESTVALUE"
}

Invoke-RestMethod -Method Get -Uri $WebhookURL -Body $Body -ContentType "application/json"

$Body值传递给ConvertTo-Json -Compress会使请求在HTTP Error 403: Bad Request中失败,因此也不是这样。本质上,我正在做exactly like this other Stack post suggests,但它没有传递值。这里有什么问题吗?

更新:--我还按照Mathias的建议尝试了以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
$Body = @{
    value1 = "TESTVALUE"
} | ConvertTo-Json -Compress

Invoke-RestMethod -Method Post -Uri $WebhookURL -Body $Body -ContentType "application/json"

但结果是一样的。我还尝试将带有空字符串的value2和value3添加到主体中,但结果是一样的。我尝试使用和不使用-Compress,但是结果是相同的,使用和不使用value1周围的引号不会改变任何事情:

UPDATE2:使用Curl的直接抛出一个错误:

代码语言:javascript
代码运行次数:0
运行
复制
curl -X POST https://maker.ifttt.com/trigger/MyEvent/json/with/key/MyKey -H "Content-Type: application/json" -d '{"value1": TESTVALUE}'

{"errors":[{"message":"Unexpected token v in JSON at position 1"}]}

我还尝试使用Invoke-RestMethod运行Powershell -UseDefaultCredentials,但结果是一样的。

UPDATE3: IFTTT日志显示Value1的值没有传递,所以请求一定有问题:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 01:00:14

解决办法:不要使用Invoke-RestMethod,而是使用Curl:

代码语言:javascript
代码运行次数:0
运行
复制
$WebhookURL = "https://maker.ifttt.com/trigger/MyEventName/with/key/MyKey"
$Command = 'curl -X POST -H "Content-Type: application/json" -d "{""value1"":""' + $VariableWithMyValueHere + '"",""value2"":""Test2"",""value3"":""Test3""}" ' + $WebhookURL
cmd.exe /C $Command

我不知道为什么这个确切的Json适用于Curl,但不适用于Invoke-RestMethod,但由于它有效,我不打算进一步挖掘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73892622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档