slackapi / slackapi/python-slack-sdk

markdown block type not supported when sending via WebhookClient / response_url

Ouverte
#1,847 5 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

auto-triage-skip bug server-side-issue
Langage dominant
Python
Étoiles
4k
Forks
857
Merge moyen
22 h 21 min
PR mergées (30 j)
16

Description

The markdown block type (introduced in Block Kit - Feb 2025, expanded in Mar 2026) works correctly when sent via WebClient.chat_postMessage, but returns a 500 error when sent via WebhookClient (i.e. slash command
response_url).

Reproducible example:

from slack_sdk.webhook import WebhookClient
from slack_sdk import WebClient

blocks = [
    {
        "type": "markdown",
        "text": "## Heading\n\n| Col A | Col B |\n|---|---|\n| 1 | 2 |"
    }
]

# ✅ Works — returns 200
client = WebClient(token="xoxb-...")
client.chat_postMessage(channel="#test", blocks=blocks, text="fallback")

# ❌ Fails — returns 500
webhook = WebhookClient("https://hooks.slack.com/commands/T.../...")
webhook.send(blocks=blocks)

Expected behavior: WebhookClient.send() should support the markdown block type, same as chat.postMessage.

Actual behavior: Slack's response_url endpoint returns HTTP 500 with no descriptive error body.

Context:

  • slack_sdk version: 3.39.0
  • Python version: 3.12.12
  • This affects slash command responses where response_url is the standard reply mechanism
Category (place an x in each of the [ ])
  • slack_sdk.web.WebClient (sync/async) (Web API client)
  • slack_sdk.webhook.WebhookClient (sync/async) (Incoming Webhook, response_url sender)
  • slack_sdk.models (UI component builders)
  • slack_sdk.oauth (OAuth Flow Utilities)
  • slack_sdk.socket_mode (Socket Mode client)
  • slack_sdk.audit_logs (Audit Logs API client)
  • slack_sdk.scim (SCIM API client)
  • slack_sdk.rtm (RTM client)
  • slack_sdk.signature (Request Signature Verifier)
Requirements

Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par slack_sdk.webhook.WebhookClient.send() et ses implémentations synchrone/asynchrone, puis comparez leur gestion des blocs avec celle de WebClient.chat_postMessage(). Exécutez l’exemple markdown-block fourni contre les deux endpoints et examinez le comportement des réponses. C’est terminé lorsque WebhookClient prend en charge le type de bloc markdown de manière cohérente, ou lorsque la limitation de l’endpoint est clairement identifiée et couverte par des tests.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Clairement spécifiée
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.