我正在使用Slack Web API将消息发布到Go中的频道。我正在尝试在文本字段中支持多行消息。根据文档,简单地添加\ 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)
}
}
答案 0 :(得分:1)
我想出了这个问题。我最初发布的样本实际上将按预期工作。我简化了原始代码,这是一个命令行应用程序,其中文本是作为CLI标志传递的参数,所以看起来有点像这样:
cliapp --text="one\ntwo"
保存此标志值的变量实际上并没有转义该字符,因此它实际上是:
"one\\ntwo"
我使用简单的字符串替换来修复值:
text = strings.Replace(text, "\\n", "\n", -1)
答案 1 :(得分:0)
逃避新线" \ n"用"`n"