在鬆弛您可以編寫 slackbot 腳本將訊息發佈到頻道,如下所示:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
現在我想提及用戶名作為訊息的第一部分,例如msg="@joernhees hello self"
。
這樣做的問題是,如果--data
curl的參數以@
符號開頭,它將解釋as檔名後面的字串@
並發布其內容。有沒有辦法讓curl忽略該@
符號並將文字@
作為發布請求的第一個字元發送?
答案1
實際上我剛剛發現我可以做到這一點(但不確定這是最好的選擇):
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
訣竅是告訴curl 從標準輸入讀取@-
,然後通過它傳遞訊息。
答案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'