Слабая уценка для ссылок не разрешается


159

Что я делаю не так? Ни одна из примеров ссылок Markdown не работает в моем приложении Slack.

Я вставил приведенный ниже пример в чат в моем приложении Slack. Я получил этот пример из синтаксиса Slack Markdown, и он все еще обрабатывает его как буквальный текст в Slack App:

[like this](http://someurl)

так что в итоге я вижу это вместо просто «как это» в качестве ссылки в чате Slack.

Или, может быть, вышеприведенное неверно, и тогда мой вопрос будет таким: как вы явно создаете ссылки в Slack? Я хочу, чтобы какой-то текст, который я указываю, был кликабельным по определенному URL (гиперссылка).


1
Кажется, это неразрешенная ошибка (у меня тоже не работает) github.com/slackhq/hubot-slack/issues/114
Петр Газаров

Мало того, что не реализуют эту функциональность, они также не включают темную тему! это возмутительно для такого популярного инструмента ... с другой стороны, именно так популярные инструменты внезапно становятся непопулярными ...
pkaramol

Ответы:


195

В настоящее время Slack не поддерживает гиперссылки; посмотрите эту ссылку, которая говорит:

Примечание . Невозможно связать слова в сообщении Slack.


ОБНОВИТЬ:

Slack наконец добавил эту функциональность в свой интерфейс чата ( источник ):

  • Выделите текст, затем щелкните значок ссылки на панели инструментов форматирования.
  • Выберите текст, затем нажмите Cmd+ Shift+ Uна Mac или Ctrl+ Shift+ Uна Windows / Linux.

Скопировать ссылку Вы хотите поделиться и вставить его в пустом поле в ссылке , а затем нажмите кнопку Сохранить .


14
Речь идет конкретно о slack-apiкотором делает поддержка гиперссылок текста.
spencer.sm

5
Это неудачно. Гиперссылка существует уже более 20 лет, трудно предположить, что это проблема безопасности. Вставка сверхдлинных ссылок действительно раздражает, по крайней мере, в slack следует добавить службу автоматического сокращения URL-адресов (что, конечно, будет необязательным).
superarts.org

1
Кажется, теперь это возможно. Но я не могу заставить его работать. Независимо от того, что я делаю, Слэк просто получает Arrayсообщение в канале. Смотрите примеры здесь: api.slack.com/messaging/composing/formatting#linking-urls
TJ Zimmerman

153

Slack использует собственный вид уценки:
Slack Markdown Links работает следующим образом:<http://someurl|like this>

Примечание: Вы можете сделать это только через Slack API, а НЕ просто как простое сообщение, которое вы отправляете через клиент Slack.

Пример построителя сообщений
введите описание изображения здесь Дополнительная информация в Документах


63
Есть ли способ сделать это через клиент Slack?
Крис Миллер

5
Я так не думаю. Slack явно не хочет слишком усложнять ввод. Подробнее в нижней части этой справочной статьи: get.slack.help/hc/en-us/articles/…
Вильгельм Клопп

262
Одним из способов избежать чрезмерного усложнения было бы придерживаться популярного и устоявшегося формата ... такого как Markdown. ;-)
joeytwiddle

74
+ joeytwiddle Это означало бы, что Slack намеренно делает что-то удобное для пользователя и интуитивно понятное, что, я уверен, противоречит политике их компании.
Питер Р

6
Пожалуйста, поддержите этот запрос здесь: slack.canny.io/feature-requests/p/…
Жюль Сэм. Рэндольф

33

Это еще не поддерживается Slack для прямых сообщений, вы можете сделать это только с помощью Slack API. Но вы можете отправить запрос на добавленную мной функцию .


3
Извините, неработающая ссылка :(
ocramot

Похоже, что они отключили свой канал для сбора запросов на добавление новых функций. Надеюсь, что это только временно.
Жюль Сэм. Рэндольф

Ссылка не битая. Они намеренно отключили доску. Grr.
рмхаррисон

18

На сегодняшний день, 2020.02.14, в одном из экземпляров Slack, членом которого я являюсь, я могу создавать / вставлять гиперссылки! 🎉

скриншот гиперссылки

Пример вставки гиперссылки из копии информации о собрании команд в Slack:

пример вставки гиперссылки


Slack обновил свою документацию . Тем не менее, нет уценки способ сделать это, хотя doesn't, то [blah](https://stackoverflow.com)есть не работает.


Удобная функция, выделите текст и нажмите CTRL + V, когда URL находится в буфере обмена, и он создает гиперссылку.

выберите текст & ctrl + v видео]


С помощью некоторого реверс-инжиниринга я смог поместить текст в буфер обмена Windows с помощью C # и вставить его в 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);

6
Проголосовал, потому что это по сути ответ. Люблю вставлять ссылки, люблю горячие клавиши ... к сожалению, я отключил их WYSIWYG, чтобы он перестал связываться с другими вещами, которые я пытаюсь написать, и для тех, кто из нас счастлив, нет никакой альтернативы используя уценку (-ish) форматирования в виде простого текста.
Тайлер Джеймс Янг

@ Тайлер . Я рад, что я не единственный, кто делает это тоже!
frakman1

1
Мне удалось заставить это работать без комментариев фрагмента
Tennabey

5

Рувим «s ответ будет работать, но он будет выглядеть безымянную загрузку файла, как показано здесь: безымянный файл размещен в отними . Однако с небольшими изменениями вы можете легко опубликовать естественно выглядящее сообщение с работающей гиперссылкой, как вы видите здесь: естественно выглядящий пост Slack с гиперссылкой , используя метод api chat.postMessage вместо «files.upload» и применяя Slack собственное форматирование сообщения вместо 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Аргумент не используется в этом примере, но это полезно , чтобы иметь возможность @упомянуть пользователь и #относятся к каналам.


5

Включите URL-адрес непосредственно в markdownтекст, и он будет автоматически преобразован сервером в ссылку.

напиши как это. (Это будет работать только с использованием Slack API. Slack Bots / Slack Apps)

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

Ссылка: https://api.slack.com/messaging/composing/formatting#linking-urls


4
Немного вводит в заблуждение, когда я начинаю этот пост с «Случайно ссылаться на URL-адреса в разговоре» и в конечном итоге заявляю, что это работает, только если вы публикуете сообщение через API (а я не участвую в разговорах как человек).
Тайлер Джеймс Янг

4

В качестве альтернативы отними сообщения (покрытой Вильгельм «s ответа ), вы можете создать натяжные сообщения через API и использование по крайней мере некоторые 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

Это использует файлы .upload . Я думаю, что самый простой способ попробовать опубликовать себя, используя устаревший токен . Получить идентификатор канала из URI канала.


0

Я написал этот код для преобразования ссылок уценки в теле текста в формат ссылок, ожидаемый 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 не поддерживает ссылки на изображения внутри текста.


-2

Очень поздно для вечеринки, но я недавно обнаружил, что вы можете использовать сокращатель URL для создания https-ссылки, на которую вы затем можете ссылаться, используя ссылки уценки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.