ВслабинаВы можете написать скрипт для Slackbot, который будет публиковать сообщения в канале следующим образом:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
Теперь я хотел бы упомянуть имя пользователя в первой части сообщения, например msg="@joernhees hello self"
.
Проблема в том, что если --data
аргумент curl начинается со @
знака, он интерпретирует строку после @
имени файла и публикует ее содержимое. Есть ли способ заставить curl игнорировать @
знак и отправлять литерал @
в качестве первого символа запроса post?
решение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'