web-dev-qa-db-ja.com

MarkdownファイルをSlack投稿としてアップロードする方法はありますか?

Markdownファイルをアップロードしてチャンネルのフォーマット済み投稿にする方法を理解しようとしています。これを行うためのAPI呼び出しはありますか?

Files.uploadはMarkdown rawアップロードのみをサポートしているようです。

15
kickingvegas

「Markdown raw upload」と「Markdown file」の意味が100%わかりませんが、 files.upload.mdファイル。これが機能するようになっているようです:

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

...今スワップcontent="..." ために [email protected]

curl -F filetype=post -F [email protected] -F channels=C1.....7L -F token=xoxp-... https://slack.com/api/files.upload

これにより、標準のMDファイル(githubなどから)がSlack Postドキュメントに変換されます。見出しやコードなど、すべてのフォーマットを維持しようとします。

ただし、SlackはMDのサブセットのみをサポートするため、テーブルは正しく表示されません。

6
Reuben

私は 以下のPythonスクリプト を使用して、Markdownの最も有用なサブセットをSlack形式に変換しています。

  • 箇条書き記号を含むハイフン付きリスト
  • 二重太字マーカーアスタリスク**、単一アスタリスク*
  • ヘッダー#と太字のマーカーアスタリスク*

このスクリプトは、リストが2つのスペースでインデントされ、単一のアンダースコア_がMarkdownの斜体に使用され、Slackと既に互換性があることを前提としています。

import re
import sys

REGEX_REPLACE = (
  (re.compile('^- ', flags=re.M), '• '),
  (re.compile('^  - ', flags=re.M), '  ◦ '),
  (re.compile('^    - ', flags=re.M), '    ⬩ '),
  (re.compile('^      - ', flags=re.M), '    ◽ '),
  (re.compile('^#+ (.+)$', flags=re.M), r'*\1*'),
  (re.compile('\*\*'), '*'),
)

def main(i, o):
  s = i.read()
  for regex, replacement in REGEX_REPLACE:
    s = regex.sub(replacement, s)
  o.write(s)

if __name__ == '__main__':
  with open(sys.argv[1], encoding='utf-8') as i, \
       open(sys.argv[1] + '.slack', 'w', encoding='utf-8') as o:
    main(i, o)

結果はほとんどの目的で十分に良いかもしれません。

でスクリプトを実行する

python markdown-to-slack.py filename.md

結果はfilename.md.slackになります。

2
mrts

いいえのように見えます。

Slackヘルプ から、リストをフォーマットする正しい方法は、Shift + Enterを使用し、実際の箇条書き記号(•)を貼り付けることです。アスタリスクは変換されません(たとえば)。

Slackがsomeマークダウン機能をどのように使用しているか、およびSlackの使用がどれだけ広範囲に使用されているかを考えると、奇妙なほど基本的です。機能のリクエストを行う必要があると思いますか?

2
Ian Grainger