Slack API Using \n for new lines does not work in chat.postMessage (golang)

17,211

Solution 1

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)

Solution 2

I was using Java and i did

message.replace("\\n","\n")

and it worked.

Share:
17,211
broseflip
Author by

broseflip

Updated on June 27, 2022

Comments

  • broseflip
    broseflip almost 2 years

    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)
        }
    }