Filetype is not available immediately after uploading a file
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 30/100
調査の方向性
Issue に示されている upload sequence と Slack files.completeUploadExternal response から始め、次に chat.postMessage error および image block payload と比較してください。Repository file も test も指定されていないため、まずこの挙動が action に属するのか Slack API integration に属するのかを判断してください。原因と再現可能な修正手順が文書化されていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Hi All,
I am trying to send slack message with image from github action, but it is failing everytime. First let me explain, what I am trying to achieve:
- Upload an image in slack
- Extract the permalink of the uploaded image
- Then add that permalink into slack message and send
All these steps are working fine, except it fails to send the message with image. Let me share the code:
Upload image and extract permalink:
` # 📤 Upload Doughnut Chart to Slack & Get Image URL
- name: Upload Chart to Slack
if: always()
run: |
response=$(curl -s -X POST \
-H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "filename=test_results.png&length=$(stat -c%s test_results.png)" \
https://slack.com/api/files.getUploadURLExternal)
echo "Slack Upload URL Response: $response"
upload_url=$(echo "$response" | jq -r '.upload_url')
file_id=$(echo "$response" | jq -r '.file_id')
if [ "$upload_url" == "null" ] || [ "$file_id" == "null" ]; then
echo "⚠️ Failed to get upload URL from Slack."
exit 1
fi
# Step 2: Upload the file to the received URL
upload_response=$(curl -X POST \
-H "Content-Type: image/png" \
-F file=@test_results.png \
"$upload_url")
echo "Slack File Upload Response: $upload_response"
# Step 3: Complete the upload and get the file permalink
complete_response=$(curl -s -X POST \
-H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"files": [{"id": "'"$file_id"'", "title": "Test Results"}]
}' \
https://slack.com/api/files.completeUploadExternal)
echo "Slack Complete Upload Response: $complete_response"
image_url=$(echo "$complete_response" | jq -r '.files[0].permalink')
if [ "$image_url" == "null" ]; then
echo "⚠️ Failed to upload image to Slack."
exit 1
else
echo "✅ Image uploaded: $image_url"
echo "IMAGE_URL=$image_url" >> $GITHUB_ENV
fi`
The output it displays:
Send slack message with image:
`# 📢 Send Cypress Results to Slack (With Image & Test Summary)
- name: Send Cypress Results to Slack
if: always()
run: |
curl -X POST \
-H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"channel": "XXXXXXX",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "🧪 API Test Report",
"emoji": true
}
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "'"${{ steps.cypress-results.outputs.failed == '0' && '✅ All Tests Passed!' || (steps.cypress-results.outputs.failed != '0' && steps.cypress-results.outputs.passed != '0') && '⚠️ Some Tests Failed' || '❌ All Tests Failed!' }}"'",
"style": {
"bold": true,
"italic": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Total:* `${{ steps.cypress-results.outputs.total }}`\n✅ Pass: `${{ steps.cypress-results.outputs.passed }}`\n❌ Fail: `${{ steps.cypress-results.outputs.failed }}`\n⏭️ Skip: `${{ steps.cypress-results.outputs.skipped }}`"
},
{
"type": "mrkdwn",
"text": "⏱️ Duration: `${{ steps.cypress-results.outputs.duration }} sec`\n📈 Success Rate: `${{ steps.cypress-results.outputs.success_rate }}%`"
}
],
"accessory": {
"type": "image",
"image_url": "${{ env.IMAGE_URL }}",
"alt_text": "Test Results Doughnut Chart"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "📋 *Reports:* • 🔍 <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|GitHub Actions Run> • 📊 <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/${{ env.ARTIFACT_ID }}|Download HTML Report>"
}
]
}
]
}' \
https://slack.com/api/chat.postMessage`
The Output is displaying:
As per the error it is saying that filetype is missing. If you see the output after uploading the image, then you will also see filetype is missing. I do not know if that is the issue. If that is issue, why image filetype is not setting when uploaded by slack api? Any idea or solution?
- 主要言語
- JavaScript
- スター
- 1.3k
- フォーク
- 200
- 平均マージ
- 2時間 59分
- マージ済み PR(30日)
- 6
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
slackapi/slack-github-action のほかの issue
-
docs
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
slackapi/slack-github-action#667 ·
-
discussion security semver:major
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
slackapi/slack-github-action#621 · コメント 1 件 · リアクション 1 件 ·
-
dependencies question
slackapi/slack-github-action#671 · コメント 2 件 · 担当者 1 名 ·
-
needs info question
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
slackapi/slack-github-action#654 · コメント 7 件 · リアクション 5 件 ·
-
question
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
slackapi/slack-github-action#520 · コメント 1 件 ·
slackapi/slack-github-action の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
mksglu/context-mode#1200 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
neondatabase/website#5944 ·
-
module: core
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
bigbluebutton/bigbluebutton#25849 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
jaegertracing/jaeger-ui#4506 ·