Reputation: 241
I'm using the Slack web API to post messages to a channel in Go. I'm trying to support multi-line messages in the text field. According to the documentation simply adding a \n should work but it's not working. When posting the \n appears in the text and there's no line break.
Here's the code I'm using:
func PostMessage(token, channelName, userName, text string) error {
uv := url.Values{}
uv.Add("token", token)
uv.Add("channel", channelName)
uv.Add("username", userName)
uv.Add("text", text)
resp, err := http.PostForm("https://slack.com/api/chat.postMessage", uv)
if err != nil {
return err
}
return nil
}
func main() {
if err := PostMessage("xxxx", "#test-channel", "API", "This should be the first line\nThis should be the second line"); err != nil {
panic(err)
}
}
Upvotes: 5
Views: 40021
Reputation: 310
I was using Java and i did
message.replace("\\n","\n")
and it worked.
Upvotes: 1
Reputation: 1
Just escape the newline "\n" with "`n"
Reference: https://ss64.com/ps/syntax-esc.html
Upvotes: -1
Reputation: 241
I figured out the issue. The sample I originally posted will actually work as intended. I simplified the original code which was a command line application where the text is a parameter passed as a CLI flag so it looked a little like this:
cliapp --text="one\ntwo"
The variable that held the value for this flag wasn't actually escaping the character so it was ACTUALLY:
"one\\ntwo"
I used a simple string replacement to fix the values:
text = strings.Replace(text, "\\n", "\n", -1)
Upvotes: 3