我做错了什么?到目前为止,我的Slack应用程序中没有示例Markdown链接。
我在Slack应用程序中的聊天中粘贴了以下示例。我从slack markdown syntax得到了这个例子,它仍然将它视为Slack App中的文字文本:
[like this](http://someurl)
所以我最终看到了,而不仅仅是“喜欢这个”作为Slack聊天中的链接。
或许上面的错误,在这种情况下我的问题是你如何在Slack中明确创建链接?我想要一些我指定的文本可以点击特定的URL(超链接)。
答案 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客户端发送的简单消息。
答案 2 :(得分:28)
Slack尚未支持直接消息,您只能使用Slack API执行此操作。但你可以投票the feature request I have submitted here。
答案 3 :(得分:22)
截止到今天(2020.02.14),在我所属的Slack实例的一个中,我可以创建/粘贴超链接! ?
从复制团队会议信息到Slack中粘贴超链接的示例:
Slack已更新their documentation。 ?仍然没有降价的方法,即[blah](https://stackoverflow.com)
不起作用。
整洁的功能,当URL在剪贴板上并创建超链接时,选择一些文本和CTRL + V V
通过一些逆向工程,我能够通过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 会自动将所选文本转换为链接。