
Enflojopuedes programar slackbot para publicar mensajes en un canal como este:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
Ahora me gustaría mencionar un nombre de usuario como la primera parte del mensaje como msg="@joernhees hello self"
.
El problema con esto es que si el --data
argumento de curl comienza con un @
signo, interpretará la cadena después del @
nombre del archivo y publicará su contenido. ¿Hay alguna manera de hacer que curl ignore el @
signo y envíe un literal @
como primer carácter de una solicitud de publicación?
Respuesta1
En realidad, acabo de descubrir que puedo hacer esto (aunque no estoy seguro de que sea la mejor opción):
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
El truco consiste en decirle a curl que lea desde la entrada estándar @-
y luego pasar el mensaje a través de ella.
Respuesta2
Sé que esta es una vieja pregunta, pero tuve el mismo problema y la solución resultó ser útil --data-raw
para situaciones normales (verhttps://curl.se/docs/manpage.html#--data-raw) o --form-string
para datos de varias partes (verhttps://curl.se/docs/manpage.html#--form-string). Por lo tanto, aquí presumiblemente usarías:
curl --data-raw "$msg" 'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'