链接格式无效

时间:2017-12-11 16:13:03

标签: c# slack slack-api

在Slack website上,我可以格式化这样的信息:

{
    "text": "<http://google.com|link to google>"
}

在信息中它会显示如下:

link to google

但我正在尝试编写一个机器人,这些链接不起作用。使用我的websocket连接,我可以发送这样的消息:

var send = new MessageToSlack()
{
    type = "message",
    channel = msg.channel,
    text = $"http://google.com"
};
ws.SendAsync(JsonConvert.SerializeObject(send), b => { });

Slack会正确地将http://google.com解释为链接,并将其显示为:

http://google.com

但是,如果我尝试使用尖括号中的链接发送带有链接和链接文本(适用于Slack&#39; s站点)之间的管道的消息,如下所示:

var send = new MessageToSlack()
{
    type = "message",
    channel = msg.channel,
    text = $"<http://google.com|to google>"
};
ws.SendAsync(JsonConvert.SerializeObject(send), b => { });

我最终得到了:

<http://google.com|to google>

那么如何从我的机器人中获得这个功能呢?为什么它无法正确解析链接?我错过了什么?

据我所知,这应该有用。 {@ 3}}在格式化消息的部分中说:

  

RTM API仅支持发布使用我们的默认邮件格式化模式格式化的简单邮件。

指向Here的链接确实提到了管道字符的链接,所以我认为它应该工作。

(注意MessageToSlack只是一个普通的.NET类,其typechanneltext属性由JSON.Net序列化,似乎提供了正确的JSON 。ws是来自WebSocketSharp nuget包的我的websocket连接)

JSON:

{
    "id": 1,
    "type": "message",
    "channel": "C6QRKT0EA",
    "text": "<http://google.com|to google>"
}

编辑:因此,如果我从使用网络套接字连接回复切换到here,它会正常工作,但它更加繁琐使用和文档让我相信链接应该工作,而不需要跳过特定的箍。我只是误读了文档吗?或者文档在这一点上不是很清楚?

1 个答案:

答案 0 :(得分:1)

尝试通过将"mrkdwn": true添加到您的json

来启用降价支持
{
    "type": "message",
    "channel": "C6QRKT0EA",
    "text": "<http://google.com|to google>",
    "mrkdwn": true
}

阅读Message Formatting部分。希望它会有所帮助。