ChatGPT解决这个技术问题 Extra ChatGPT

链接的 Slack Markdown 无法解决

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

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

[like this](http://someurl)

所以我最终看到它而不是“像这样”作为 Slack 聊天中的链接。

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

似乎是未解决的错误(对我也不起作用)github.com/slackhq/hubot-slack/issues/114
不仅没有实现此功能,它们也不包含深色主题!对于如此流行的工具来说,这太离谱了……另一方面,这就是流行工具突然变得不受欢迎的原因……
Slack markdown 链接语法 <http://someurl|like this> 与 github 不同。我认为你是对的,一些 Slack 示例曾经在其中存在这个错误,但是 github 语法不起作用。

W
Wilhelm Klopp

Slack 使用自己的 Markdown 风格:
Slack Markdown 链接的工作方式如下:<http://someurl|like this>

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

https://i.stack.imgur.com/Bcpaj.png


有没有办法通过 Slack 客户端做到这一点?
他们可以避免过度复杂化的一种方法是坚持使用流行且成熟的格式……例如 Markdown。 ;-)
+joeytwiddle 这意味着 Slack 故意做一些用户友好和直观的事情,我很确定这违反了他们的公司政策。
请在此处支持此功能请求:slack.canny.io/feature-requests/p/…
将其称为降价是一种误导。它实际上更像是“他们自己的格式,有时看起来有点像降价”。
p
pillravi

Slack 目前不支持超链接;请参阅 this link,其中显示:

注意:不能在 Slack 消息中超链接单词。

更新:

Slack 终于在他们的聊天界面中添加了这个功能(source):

选择文本,然后单击格式工具栏中的链接图标 选择文本,然后在 Mac 上按 Cmd+Shift+U 或在 Windows/Linux 上按 Ctrl+Shift+U。复制您要共享的链接并将其粘贴到“链接”下的空白字段中,然后单击“保存”。


问题是关于确实支持超链接文本的slack-api
这是不幸的。超链接已经存在了 20 多年,很难假设这是一个安全问题。粘贴超长链接真的很烦人,至少 slack 应该添加一个自动 URL 缩短服务(这当然是可选的)。
看来这现在是可能的。但我无法让它工作。无论我做什么,Slack 都会收到 Array 作为频道中的消息。请参阅此处的示例:api.slack.com/messaging/composing/formatting#linking-urls
最初的问题询问如何使用降价实现这一目标。这个答案似乎无关。
值得一提的是,如果您在设置中选择 Format messages with markup 以摆脱文本格式工具栏,这些都不起作用。
l
lezhumain

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


抱歉,链接断开:(
他们似乎已经禁用了他们的精明频道来收集功能请求。希望这只是暂时的。
链接没有断开。他们故意禁用了董事会。 Grr。
s
spottedmahn

截至今天,2020.02.14,在我加入的一个 Slack 实例中,我可以创建/粘贴超链接! 🎉

https://i.stack.imgur.com/UZneU.png

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

https://i.stack.imgur.com/TbdNc.png

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

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

https://i.stack.imgur.com/ynFT4.gif

通过一些逆向工程,我能够通过 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);

赞成,因为这基本上就是答案。喜欢粘贴到链接,喜欢热键......不幸的是,我禁用了他们的所见即所得,这样它就不会与我正在尝试写的其他东西混淆,而且对于我们这些快乐的人来说似乎没有其他选择在纯文本中使用降价(-ish)格式。
@Tyler。我很高兴我不是唯一这样做的人!
我设法使它在没有片段注释的情况下工作
我比较讨厌热键,Ctrl+Shift+U 几十年来一直用于 Linux 上的 unicode 字符输入(ibus 输入法)
我的 slack 有链接工具,但我真的很想用 markdown [text](url) 来做,比如 [他们的文档说应该可以工作 [(slack.com/help/articles/202288908-Format-your-messages).
d
dududko

截至 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)

确认 [label](link) 现在可以在 Slack 应用程序中使用,但仅供参考,此答案中引用的页面上不再记录。
谢谢!你创造了我的日、月、年和世纪。
但是,至少在 mac 应用程序上,这仅在您禁用 WYSIWYG 编辑器时才有效。不清楚为什么他们会在任一编辑器中强制进行看似不必要的权衡。
仅供参考,这在 API 中仍然不起作用。链接仍必须采用旧的 <L|T> 格式。
P
Prakhil TP

如果您使用的是 slack-bot 或使用 Slack API 的东西,您将能够为您的消息使用 mrkdwn 语法。

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

参考:https://api.slack.com/reference/surfaces/formatting


M
Michael Roberts

Reubenanswer 可以工作,但它看起来像一个未命名的文件上传,如下所示:untitled file posted to Slack。但是,只需稍作修改,您就可以轻松发布具有工作超链接的自然消息,如下所示:natural looking Slack post with hyperlink 通过使用 chat.postMessage Slack api 方法而不是“files.upload”并采用 Slack 自己的 {6 } 而不是 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 参数,但它对于能够@提及用户和#引用频道很有用。


R
Reuben

作为 Slack 消息(在 Wilhemanswer 中介绍)的替代方案,您可以通过 API 创建 Slack 帖子并至少使用一些 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。


T
Tzach Solomon

我的标记设置被禁用,一旦我启用它(首选项-> 高级-> 使用标记格式化消息),它就可以工作了。

https://i.stack.imgur.com/I5okL.png


就可用性而言,那些是“专有的”并不是很好。
r
ratbeard

我编写了这段代码来将正文中的 markdown 链接转换为 slack 期望的链接格式:

      // 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}>`)

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


K
Kev

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

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

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


这是目前唯一的解决方案。某些东西的 Markdown 可以在松弛状态下工作,但链接却不行。谢谢凯夫。
l
lukasell

当 url 涉及垂直条时,这种形式的降价有问题 |用 urltext.replace("|", "%7C") 解决了这个问题


D
Daniel Firsht

按照 spotmahn 的回答,这就是我如何让它在 Javascript 中工作。请注意,对于 Firefox,用户需要 enable a flag 才能工作。

a.addEventListener("click", function() {
    var textToDisplay = "foo";
    var url = "https://stackoverflow.com";
    var message = `<html><body>
    <!--StartFragment-->
    <a href="${url}">${textToDisplay}</a>
    <!--EndFragment-->
    </body></html>`;
    const htmlBlob = new Blob([message], {type : 'text/html'});
    const textBlob = new Blob(["sda"], {type : 'text/plain'});

    const cbi = new ClipboardItem({
        ['text/html']: htmlBlob,
        ['text/plain']: textBlob
    });
    navigator.clipboard.write([cbi]);
});

N
NoobishSRE

派对迟到了,但我最近发现你可以使用 URL 缩短器来创建一个 https 链接,然后你可以使用 markdown 链接来引用它。