2

slack中,您可以编写 slackbot 脚本以将消息发布到这样的频道:

curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'

现在我想提一个用户名作为消息的第一部分,例如msg="@joernhees hello self".

这样做的问题是,如果--datacurl 的参数以符号开头,@它将解释@as 文件名之后的字符串并发布其内容。有没有办法让 curl 忽略该@符号并将文字@作为发布请求的第一个字符发送?

4

2 回答 2

4

如果您使用的是新版本的 cURL,您还可以使用以下--data-raw选项:

http://curl.haxx.se/docs/manpage.html#--data-raw

一个警告是,看着我的笔记本电脑,Yosemite 似乎附带了旧版本的 cURL。

一般来说,如果您要创建发布到 Slack 的工具,我建议您在脚本中使用 HTTP 库,而不是调用 shell 并调用curl命令。

于 2015-06-03T17:11:33.893 回答
0

实际上我刚刚发现我可以做到这一点(虽然不确定这是最好的选择):

curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"

诀窍是告诉 curl 从标准输入读取@-,然后通过它传递消息。

于 2015-06-03T13:33:06.140 回答