slackapi / slackapi/python-slack-sdk

files_upload_v2 returns internal_error when using markdown in blocks

Đang mở
#1,756 8 bình luận 4 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

area:async auto-triage-skip bug server-side-issue web-client
Ngôn ngữ chính
Python
Star
4k
Fork
857
Merge trung bình
22 giờ 21 phút
Pull request đã merge (30 ngày)
16

Mô tả

files_upload_v2 returns internal_error when using markdown in blocks parameter

Reproducible in:
slack-bolt==1.25.0
slack-sdk==3.36.0
Python 3.13.5
ProductName: macOS
ProductVersion: 15.5
BuildVersion: 24F74
Darwin Kernel Version 24.5.0
The Slack SDK version
slack-bolt==1.25.0
slack-sdk==3.36.0
Python runtime version
Python 3.13.5
OS info
ProductName:		macOS
ProductVersion:		15.5
BuildVersion:		24F74
Darwin Kernel Version 24.5.0: Tue Apr 22 19:53:27 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T6041

Steps to reproduce:

1. Code Example
from slack_sdk.web.async_client import AsyncWebClient
import json

# Initialize client
client = AsyncWebClient(token="xoxb-your-token")

# Prepare parameters
channel_id = "D099T7G7VHD"  # DM channel
blocks = [{"type": "markdown", "text": "_**Haim Raitsev** posted a new message_\\n> test"}]
files = [{"id": "F09J0L8TDRQ", "title": "screenshot.png"}]

# Attempt to upload with blocks
response = await client.files_upload_v2(
    channel=channel_id,
    file_uploads=[
        {
            "content": b"<file_bytes_here>",
            "filename": "screenshot.png",
            "title": "screenshot.png"
        }
    ],
    blocks=json.dumps(blocks)
)
2. Response
{
    "ok": False,
    "error": "internal_error"
}

Expected result:

The file should be uploaded successfully with the rich text blocks displayed in the message, as the underlying files.completeUploadExternal:

Actual result:

The API returns {"ok": false, "error": "internal_error"} without any additional error details.


Additional Context:

This issue is reproduced only when we have a new markdown block (https://docs.slack.dev/reference/block-kit/blocks/markdown-block/) when we use other blocks the message posted correctly.

files.completeUploadExternal API Call

HTTP Request
POST https://slack.com/api/files.completeUploadExternal HTTP/1.1
Host: slack.com
Authorization: Bearer xoxb-your-token-here
Content-Type: application/x-www-form-urlencoded
Request Details

Method: POST

URL: https://slack.com/api/files.completeUploadExternal

Headers:

Authorization: Bearer xoxb-your-token-here
Content-Type: application/x-www-form-urlencoded

Body (URL-encoded):

files=[{"id":"F09J0L8TDRQ","title":"screenshot.png"}]
channel_id=D099T7G7VHD
blocks=[{"type":"markdown","text":"_**Haim Raitsev** posted a new message_\\n> test"}]
Body Parameters Breakdown
Parameter Value Description
files [{"id":"F09J0L8TDRQ","title":"screenshot.png"}] JSON array of file objects (URL-encoded)
channel_id D099T7G7VHD DM channel ID where file will be shared
blocks [{"type":"markdown","text":"_**Haim Raitsev** posted a new message_\\n> test"}] JSON array of blocks (URL-encoded)

Example using cURL

curl -X POST https://slack.com/api/files.completeUploadExternal \
  -H "Authorization: Bearer xoxb-your-token-here" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode 'files=[{"id":"F09J0L8TDRQ","title":"screenshot.png"}]' \
  --data-urlencode 'channel_id=D099T7G7VHD' \
  --data-urlencode 'blocks=[{"type":"markdown","text":"_**Haim Raitsev** posted a new message_\\n> test"}]'
Error Response (Current Issue)
{
    "ok": false,
    "error": "internal_error"
}

Thank you for maintaining this excellent SDK!

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu từ AsyncWebClient.files_upload_v2 và theo dõi request được gửi đến files.completeUploadExternal, so sánh block markdown với các block thành công. Tái hiện request từ issue và xác định SDK payload hay Slack API là nguyên nhân. Được xem là hoàn tất khi nguyên nhân đã được cô lập và issue có verified fix hoặc một upstream limitation được ghi lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
api, backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
42/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.