在松弛您可以编写脚本 slackbot 将消息发布到如下频道:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
现在我想提一下用户名作为消息的第一部分,例如msg="@joernhees hello self"
。
问题在于,如果--data
curl 的参数以符号开头,@
它会将后面的字符串解释@
为文件名并发布其内容。有没有办法让 curl 忽略@
符号并将文字@
作为发布请求的第一个字符发送?
答案1
实际上我刚刚发现我可以这样做(但不确定这是否是最好的选择):
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
诀窍是告诉 curl 从 stdin 读取@-
,然后通过它传递消息。
答案2
我知道这是一个老问题,但我遇到了同样的问题,解决办法适用--data-raw
于正常情况(参见https://curl.se/docs/manpage.html#--data-raw)或多--form-string
部分数据(参见https://curl.se/docs/manpage.html#--form-string)因此,在这里你可能会使用:
curl --data-raw "$msg" 'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'