在slack中,您可以编写slackbot脚本,将消息发布到这样的频道:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
现在我想提及一个用户名作为消息的第一部分,如msg="@joernhees hello self"
。
问题在于,如果curl的--data
参数以@
符号开头,它将在@
之后将字符串解释为文件名并发布其内容。有没有办法让curl忽略@
符号并发送文字@
作为帖子请求的第一个字符?
答案 0 :(得分:4)
如果您使用的是新版cURL,还可以使用--data-raw
选项:
http://curl.haxx.se/docs/manpage.html#--data-raw
警告一句是,看着我的笔记本电脑,Yosemite出现了旧版本的cURL。
一般情况下,如果您正在创建发布到Slack的工具,我建议您在脚本中使用HTTP库,而不是调用shell并调用curl
命令。
答案 1 :(得分:0)
实际上我发现我可以做到这一点(不确定它是最好的选择):
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
诀窍是告诉curl从stdin @-
读取然后通过那个传递消息。