slack-github-action icon indicating copy to clipboard operation
slack-github-action copied to clipboard

Markdown blocks are not sending with incoming webhooks

Open wesbrownfavor opened this issue 8 months ago • 3 comments

Hey folks, I'm trying to send a message with some markdown in it, but its not being honored.

According to the reference these should work? https://api.slack.com/reference/block-kit/blocks#markdown

Here's my example with inline blocks

- name: Announce Release
    uses: slackapi/[email protected]
    with:
      webhook: ${{ secrets.MY_SECRET }}
      webhook-type: incoming-webhook
      errors: true
      payload: |
        text: "New Release: Shared Helm Chart: 1.2.3"
        blocks:
          - type: header
            text:
              type: plain_text
              text: ":tada: New Release: Shared Helm Chart: 1.2.3"
          - type: divider
          - type: section
            text:
              type: mrkdwn
              text: "## :notebook: Release notes"
          - type: section
            text:
              type: mrkdwn
              text: Blah
          - type: divider
          - type: section
            text:
              type: mrkdwn
              text: "** :computer: Release URL**"
          - type: section
            text:
              type: mrkdwn
              text: http://my_url.com

And this is what it ends up looking like: Image

I have also tried with a payload file: GHA

- name: Announce Release
      if: github.event_name == 'push' && github.ref == 'refs/heads/slack-releases3'
      uses: slackapi/[email protected]
      with:
        payload-file-path: .github/workflows/payload.json
        webhook: ${{ secrets.MY_SECRET }}
        webhook-type: incoming-webhook
        errors: true

JSON

{
  "channel": "${{ env.SLACK_CHANNEL_ID }}",
  "text": "Messages met made meetings meet",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "# Slack notifications sound following the most recent commit pushed"
      }
    }
  ]
}

Result Image

I would expect to be able to use bold and

HEADER

and other markdown fun in a block called mrkdwn.

Am I doing something wrong?

wesbrownfavor avatar May 08 '25 17:05 wesbrownfavor

Hey @wesbrownfavor! 👋 Thanks for sharing these examples and question 👾 ✨

The markdown block is somewhat different than other mrkdwn or plain_text types and should be written as top-level blocks instead:

payload: |
  text: "New Release: Shared Helm Chart: 1.2.3"
  blocks:
    - type: header
      text:
        type: plain_text
        text: ":tada: New Release: Shared Helm Chart: 1.2.3"
    - type: divider
    - type: markdown
      text: "## :notebook: Release notes"
    - type: markdown
      text: Blah
    - type: divider
    - type: markdown
      text: ":computer: **Release URL**"
    - type: markdown
      text: "[http://my_url.com](http://my_url.com)"

Right now I'm finding that this works well with the chat.postMessage method technique but is returning unexpected errors with incoming-webhook using the same payload, though this isn't related to these steps AFAICT 🔍

I'll share this finding with the team because this seems unexpected to me, but I'm also hoping for now this is helpful! Please do let me know if other formatting issues or parsing problems continue in the meantime 🙏

zimeg avatar May 08 '25 19:05 zimeg

I've bandaided my issue using headers but I'll keep this in mind going forward. Let me know if I should close this out or let it ride.

Thank you for your response!

wesbrownfavor avatar May 09 '25 17:05 wesbrownfavor

Still an issue, unfortunately. Not possible to post Slack messages with markdown block to incoming-webhook URL.

Keep getting error:

{
  ok: false,
  response: "Request failed with status code 500",
  time: 1753868163
}

i4rilu avatar Jul 30 '25 09:07 i4rilu