duandian4501 2016-05-12 19:14
浏览 122

Slack API使用 作为新行在chat.postMessage(golang)中不起作用

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 should work but it's not working. When posting the 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
This should be the second line"); err != nil {
        panic(err)
    }
}
  • 写回答

3条回答 默认 最新

  • dougu8742 2016-05-12 20:29
    关注

    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
    two"
    

    The variable that held the value for this flag wasn't actually escaping the character so it was ACTUALLY:

    "one\
    two"
    

    I used a simple string replacement to fix the values:

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

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序