链接的松弛降价无法解决

时间:2016-03-29 20:57:52

标签: markdown slack-api slack

我做错了什么?到目前为止,我的Slack应用程序中没有示例Markdown链接。

我在Slack应用程序中的聊天中粘贴了以下示例。我从slack markdown syntax得到了这个例子,它仍然将它视为Slack App中的文字文本:

[like this](http://someurl)

所以我最终看到了,而不仅仅是“喜欢这个”作为Slack聊天中的链接。

或许上面的错误,在这种情况下我的问题是你如何在Slack中明确创建链接?我想要一些我指定的文本可以点击特定的URL(超链接)。

12 个答案:

答案 0 :(得分:168)

Slack目前不支持超链接;见this link,其中说:

  

注意:无法在Slack消息中超链接。

答案 1 :(得分:113)

Slack使用自己的降价风格:
Slack Markdown Links以下列方式工作:public static string EncryptString(string password, string sharedSecret) { if (string.IsNullOrEmpty(password)) throw new ArgumentNullException("password"); if (string.IsNullOrEmpty(sharedSecret)) throw new ArgumentNullException("sharedSecret"); string outStr = null; // Encrypted string to return RijndaelManaged aesAlg = null; // RijndaelManaged object used to encrypt the data. try { // generate the key from the shared secret and the salt Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, Salt); // Create a RijndaelManaged object aesAlg = new RijndaelManaged(); aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); // Create a decryptor to perform the stream transform. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); // Create the streams used for encryption. using (MemoryStream msEncrypt = new MemoryStream()) { // prepend the IV msEncrypt.Write(BitConverter.GetBytes(aesAlg.IV.Length), 0, sizeof(int)); msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length); using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { //Write all data to the stream. swEncrypt.Write(password); } } outStr = Convert.ToBase64String(msEncrypt.ToArray()); } } finally { // Clear the RijndaelManaged object. if (aesAlg != null) aesAlg.Clear(); } // Return the encrypted bytes from the memory stream. return outStr; }

注意:您只能通过Slack API执行此操作,而不仅仅是通过Slack客户端发送的简单消息。

Message Builder Example
enter image description here More Info in the Docs

答案 2 :(得分:28)

Slack尚未支持直接消息,您只能使用Slack API执行此操作。但你可以投票the feature request I have submitted here

答案 3 :(得分:22)

截止到今天(2020.02.14),在我所属的Slack实例的一个中,我可以创建/粘贴超链接! ?

hyperlink screenshot

从复制团队会议信息到Slack中粘贴超链接的示例:

paste hyperlink example


Slack已更新their documentation。 ?仍然没有降价的方法,即[blah](https://stackoverflow.com)不起作用。


整洁的功能,当URL在剪贴板上并创建超链接时,选择一些文本和CTRL + V V

select text & ctrl + v video]


通过一些逆向工程,我能够通过C#在Windows剪贴板上放置文本并将其粘贴到Slack中:

var textToDisplay = "Test";
var url = "https://stackoverflow.com";
var arbitraryText = "Mike D.";
var dataObject = new DataObject();
//to my surprise, the Fragment comments ARE required
dataObject.SetData(DataFormats.Html, @$"<html><body>
    <!--StartFragment-->
    <a href=""{url}"">{textToDisplay}</a>
    <!--EndFragment-->
    </body></html>");
//have to set the Text format too otherwise it won't work
dataObject.SetData(DataFormats.Text, arbitraryText);
Clipboard.SetDataObject(dataObject);

答案 4 :(得分:4)

作为Slack消息的替代方法(涵盖在Wilhem&#39; answer中),您可以通过API创建Slack Posts并使用至少一些Markdown。这些都创建了<h2><a href="https://someurl">like this</a></h2>

curl -F filetype=post -F content="# [like this](https://someurl)" -F channels=C1.....7L -F token=xoxp-... https://slack.com/api/files.upload

content="..."替换file=@post.md

curl -F filetype=post -F file=@post.md -F channels=C1.....7L -F token=xoxp-... https://slack.com/api/files.upload

这是使用files.upload。我认为尝试自己发布的最简单方法是使用a legacy token。从频道的URI中获取频道ID。

答案 5 :(得分:4)

Reuben&#39; answer可以使用,但它看起来像无标题文件上传,如下所示:untitled file posted to Slack。但是,通过稍加修改,您可以使用natural looking Slack post with hyperlink Slack api方法而不是&#34; files.upload&轻松发布带有工作超链接的自然外观消息,如您在此处所见:chat.postMessage #34;并采用Slack自己的message formatting代替Markdown。这将是这样做的:

curl -F text="*<https://someurl|like this>*" -F as_user=true -F link_names=true -F channel=C1.....7L -F token=xoxp-... https://slack.com/api/chat.postMessage

此示例中未使用link_names=true参数,但能够@提及用户和#引用频道非常有用。

答案 6 :(得分:1)

要在会话中随意链接到URL,请将URL直接包含在mrkdwn文本中,它将由服务器自动转换为链接:

这样写。 (只能使用SlackAPI。Slackbots / Slack应用程序)

<http://www.example.com|This message *is* a link>

参考: https://api.slack.com/messaging/composing/formatting#linking-urls

答案 7 :(得分:1)

截至 2021 年 8 月,此功能终于在 slack 应用程序中为标记模式启用。 https://slack.com/intl/en-nl/help/articles/202288908-Format-your-messages#markup

Surround text with brackets, then surround the link with parentheses:
[your text](the link)

答案 8 :(得分:0)

晚会晚了,但我最近发现您可以使用URL缩短器创建一个https链接,然后可以使用markdown链接进行引用。

答案 9 :(得分:0)

我编写了这段代码,将文本主体中的markdown链接转换为松弛期望的链接格式:

      // Pretty hacky, convert [sup](http://foo.com) to <http://foo.com|sup>
      const reformatLinks = /\[(.*?)\]\((.*?)\)/g
      const slackBody = body.replace(reformatLinks, (_m, text, url) => `<${url}|${text}>`)

据我所知,松弛不支持文本内的图像链接。

答案 10 :(得分:0)

当URL包含竖线时,这种形式的降价出现问题| 用urltext.replace(“ |”,“%7C”)

解决了这个问题

答案 11 :(得分:0)

此处其他答案(Markdown、<a|b> 等)中的任何标记都不再有效。

如果您是手工编写的,对我来说,有一些东西比文档中的键盘快捷键更好,它与 Linux 上的全局默认值冲突,并且很难解决。

将您的 URL 复制到剪贴板,然后选择您想要作为锚文本的文本,然后粘贴 URL,就像您要用 URL 替换所选文本一样。 Slack 会自动将所选文本转换为链接。