Невисокий розмір посилань не вирішується


159

Що я роблю неправильно? Жоден із прикладів посилань Markdown поки що не працює в моєму додатку Slack.

Я вставив приклад нижче в чаті в моєму додатку Slack. Цей приклад я отримав із синтаксису відмітки слабкого розміру, і він все ще трактує його як буквальний текст у програмі Slack:

[like this](http://someurl)

тож я в кінцевому підсумку бачу, що замість просто "подібного" як посилання в Slack чаті.

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


1
Невирішена помилка (не працює і для мене) github.com/slackhq/hubot-slack/isissue/114
— Петро Газаров

не тільки не реалізують цю функціональність, вони також не включають темну тему! це обурливо для такого популярного інструменту. З іншого боку, ось як популярні інструменти раптом стають непопулярними ...
— pkaramol

Відповіді:


195

В даний час Slack не підтримує гіперпосилання; дивіться це посилання, яке говорить:

Примітка : гіперпосилання слів у вільному повідомленні неможливо.


ОНОВЛЕННЯ:

Slack нарешті додав цю функціональність до свого інтерфейсу чату ( джерело ):

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

Скопіюйте посилання, яке ви хочете поділитися, і вставте його в порожнє поле під Посилання , а потім натисніть кнопку Зберегти .


14
Йдеться конкретно про slack-apiякому робить підтримка гіперпосилань тексту.
— spencer.sm

5
Це прикро. Гіперпосилання існує вже більше 20 років, важко припустити, що це питання безпеки. Вставлення надто довгих посилань дійсно дратує, принаймні, слабкий, слід додати послугу автоматичного скорочення URL-адрес (що, звичайно, не обов’язково).
— superarts.org

1
Здається, це зараз можливо. Але я не в змозі змусити його працювати. Незалежно від того, що я роблю, Слак просто отримує Arrayповідомлення в каналі. Дивіться приклади тут: api.slack.com/messaging/composition/formatting#linking-urls
— TJ Zimmerman

153

Slack використовує власний аромат розмітки:
Slack Markdown Links працює наступним чином:<http://someurl|like this>

Примітка. Ви можете це зробити лише через API Slack, а НЕ просто як просте повідомлення, яке ви надсилаєте через клієнт Slack.

Приклад Builder повідомлень Більше інформації в Документах
введіть тут опис зображення


63
чи можна зробити це через клієнта Slack?
— Кріс Міллер

5
Я не думаю, що так. Slack явно не хоче надмірно ускладнювати введення. Більше в нижній частині цієї довідкової статті: get.slack.help/hc/en-us/articles/…
— Вільгельм Клопп

260
Один із способів, яким вони могли б уникнути надмірних ускладнень, - це дотримуватися популярного та налагодженого формату ... як Markdown. ;-)
— joeytwiddle

72
+ joeytwiddle Це означатиме, що Slack навмисно робить щось дружнє та інтуїтивно зрозуміле для користувачів, що, я впевнений, суперечить їх політиці компанії.
— Пітер Р

6
Будь ласка, відправте цей запит на цю функцію тут: slack.canny.io/feature-requests/p/…
— Жюль Сем. Рандольф

33

Це ще не підтримується Slack для прямих повідомлень, це можна зробити лише за допомогою Slack API. Але ви можете відхилити запит на функцію, який я подав тут .


3
Вибачте, пошкоджене посилання :(
— ocramot

Здається, вони відключили свій канальний канал, щоб зібрати запити на функції. Сподіваюся, що це лише тимчасово.
— Жюль Сем. Рандольф

Посилання не розірвано. Вони навмисно відключили правління. Grr
— rmharrison

18

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

Скріншот гіперпосилання

Приклад вставки гіперпосилання з копії інформації про зустрічі команд у Slack:

приклад гіперпосилання вставки


Slack оновив свою документацію . Досі жоден спосіб відмітки [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);

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

@Tyler . Я радий, що я не єдиний, хто робить це теж!
— frakman1

1
Мені вдалося змусити його працювати без коментарів фрагменту
— tennabey

5

Рувим «s відповідь буде працювати, але він буде виглядати безіменну завантаження файлу, як показано тут: безіменний файл розміщений в відбери . З невеликою модифікацією, однак, ви можете легко розмістити повідомлення з природним виглядом із робочим гіперпосиланням, як ви бачите тут: природний вигляд Slack-повідомлення з гіперпосиланням , використовуючи метод chat.postMessage Slack api замість "files.upload" та прийнявши Slack's власне форматування повідомлень замість 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текст, і він буде автоматично перетворений сервером у посилання.

пишіть так. (Він працюватиме лише за допомогою API для слабкого користування. Невільні боти / додаткові програми)

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

Довідка: https://api.slack.com/messaging/composition/formatting#linking-urls


3
Трохи вводити в оману почати цю публікацію з "Пов’язувати 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

Для цього використовується files.upload . Думаю, найпростіший спосіб спробувати публікацію, як ви самі, це зі спадщиною . Отримайте ідентифікатор каналу з URI каналу.


0

Я написав цей код, щоб перетворити посилання на розмітку в тексті тексту у слабкий формат посилання:

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

З того, що я можу сказати, слабкий не підтримує посилання на зображення всередині тексту.


-2

Супер запізнення на вечірку, але я нещодавно виявив, що ви можете використовувати скорочувач URL-адрес для створення https-посилання, на яке ви можете посилатися, використовуючи посилання на розмітку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.