`slack_file` image blocks appended with `chat.appendStream` render as missing images inline
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza reproduciendo la secuencia con files_upload_v2, files_info, chat_startStream, chat_appendStream y chat_stopStream usando las versiones indicadas. Compara el payload de la solicitud del SDK con el comportamiento de la API de streaming de Slack y determina si el fallo está en el SDK o en el servidor. Se considera terminado cuando se documente la causa y se añada una prueba de regresión específica si se identifica un cambio del lado del SDK.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
When an image block referencing a Slack-hosted file is appended to a streaming message using chat.appendStream, Slack initially renders a missing-image placeholder.
Clicking the missing image opens and displays the correct image, which indicates that:
- The file ID is valid.
- The upload completed successfully.
- Slack generated the image thumbnail.
- The original image remains accessible.
The same streamed message's DOM contains a valid Slack thumbnail URL, but Slack replaces the inline background image with an unable-to-load-error asset.
This may be a server-side file-sharing/association issue specific to blocks appended through the streaming APIs.
Reproducible in:
The Slack SDK version
3.43.0
Bot scopes:
chat:writefiles:readfiles:write
Python runtime version
3.13.7
OS info
ProductName: macOS
ProductVersion: 26.6.2
BuildVersion: 25G83
Steps to reproduce:
(Share the commands to run, source code, and project settings (e.g., pyproject.toml))
- Upload a PNG to Slack without posting a separate file message:
upload_response = await client.files_upload_v2(
content=png_bytes,
filename="sample.png",
)
file_id = upload_response["file"]["id"]
- Wait until files.info reports that the image and its thumbnail are ready:
file_info = await client.files_info(file=file_id)
file = file_info["file"]
assert file["mimetype"] == "image/png"
assert file["filetype"] == "png"
assert file["thumb_360"]
assert file["thumb_360_w"]
assert file["thumb_360_h"]
- Start a streaming message:
response = await client.chat_startStream(
channel=channel_id,
thread_ts=thread_ts,
)
stream_ts = response["ts"]
- Append an image block using the Slack file ID:
await client.chat_appendStream(
channel=channel_id,
ts=stream_ts,
chunks=[
{
"type": "blocks",
"blocks": [
{
"type": "image",
"slack_file": {
"id": file_id,
},
"alt_text": "Sample Image",
}
],
}
],
)
- Stop the stream:
await client.chat_stopStream(
channel=channel_id,
ts=stream_ts,
)
Expected result:
The Slack-hosted image should render inline in the completed streaming message.
Actual result:
Slack renders a missing-image placeholder.
Clicking the placeholder opens and displays the correct image.
Inspecting the rendered HTML shows that Slack resolved the file to a generated thumbnail URL:
<a
class="c-link c-message_attachment__image"
href="https://files.slack.com/files-tmb/.../chart_480.png"
style="
background-image:
url('https://a.slack-edge.com/.../unable-to-load-error-....png');
"
>
<span role="img" aria-label="missing image"></span>
</a>
The href points to the generated Slack thumbnail, while the inline background is replaced with Slack's unable-to-load-error image.
Requirements
For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. 🙇
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.
- Lenguaje dominante
- Python
- Estrellas
- 4k
- Forks
- 857
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 18
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de slackapi/python-slack-sdk
-
auto-triage-skip discussion
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
slackapi/python-slack-sdk#1940 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
chat_postMessage silently forwards thread_id to the API, so a threaded reply posts to the channelAbiertoauto-triage-skip enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
slackapi/python-slack-sdk#1923 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
auto-triage-skip bug python web-client
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
slackapi/python-slack-sdk#1853 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
auto-triage-skip bug server-side-issue
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
slackapi/python-slack-sdk#1847 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
auto-triage-skip needs info web-client
Dificultad 2/5 1-3 horas Aptitud para principiantes 50/100
slackapi/python-slack-sdk#1826 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de slackapi/python-slack-sdk
Issues similares
-
bug status/needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
prowler-cloud/prowler#12887 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area: desktop platform: macos priority: p3 status: ready type: enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
use-agent-os/agent-os#3484 ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
open-telemetry/opentelemetry-python-contrib#5113 · 2 comentarios · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
external
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
langchain-ai/docs#6255 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día