go - Slack API 使用\n 换行在 chat.postMessage (golang) 中不起作用

标签 go slack-api slack

我正在使用 Slack Web API 将消息发布到 Go 中的 channel 。我试图在文本字段中支持多行消息。根据文档,只需添加一个\n 就可以,但它不起作用。发布时\n 出现在文本中并且没有换行符。

这是我使用的代码:

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

最佳答案

我想通了这个问题。我最初发布的示例实际上会按预期工作。我简化了原始代码,它是一个命令行应用程序,其中文本是作为 CLI 标志传递的参数,所以它看起来有点像这样:

cliapp --text="one\ntwo"

保存这个标志值的变量实际上并没有转义字符,所以它实际上是:

"one\\ntwo"

我使用了一个简单的字符串替换来修复这些值:

text = strings.Replace(text, "\\n", "\n", -1)

关于go - Slack API 使用\n 换行在 chat.postMessage (golang) 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195607/

相关文章:

slack - 将元数据/自定义数据附加到通过 API 发送的 slack 消息

tfs - 将本地 TFS 与 Slack 集成

jquery - 在 html 页面上嵌入松弛

slack - 是否可以将一个松弛 channel 嵌套在另一个松弛 channel 中?

bitbucket - Slack Bitbucket 集成

go - 包命名 : error exporting variable

python - 我可以在 Golang 中加载经过 Python 训练的分类器吗?

slack - 消息 ts 是消息的 ID 吗?

rest - 在 GoLang 中寻找 Soundcloud API 的入门资源

recursion - 在Golang中为递归函数实现生成器( yield )的惯用方式