SocketModeClient crashes on Events API payloads without an inner event
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 84/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- api, networking
調査の方向性
SocketModeClient.onWebSocketMessage の、issue で説明されている event.payload.event.type へのアクセス付近から始め、既存の Socket Mode メッセージ処理テストを確認してください。app_rate_limited payload が独自の type を使って dispatch され、payload が event として公開され、確認のために slack_event が emit され、malformed payload によって処理が終了しないことが完了条件です。
索引モデルが issue の本文から書いたものです。
説明
Package
@slack/socket-mode
SDK Version
3.0.1 and current main (3.1.0)
Node.js Version
v24.20.0
Operating System
macOS 26 and Linux
Steps to Reproduce
- Create a
SocketModeClient. - Deliver an
events_apienvelope whose Events API payload has no innerevent, such as Slack's documentedapp_rate_limitedpayload:
{
"type": "events_api",
"envelope_id": "example",
"payload": {
"type": "app_rate_limited",
"team_id": "T111",
"minute_rate_limited": 1610241741,
"api_app_id": "A111"
}
}
SocketModeClient.onWebSocketMessageevaluatesevent.payload.event.type.
Slack documents that app_rate_limited has no inner event: https://docs.slack.dev/reference/events/app_rate_limited/
Expected Result
The client should dispatch the payload using its own type, expose the payload as event, and continue to emit the generic slack_event so consumers can acknowledge the envelope. Malformed payloads without either type should not terminate the process and should still reach slack_event for acknowledgement.
Actual Result
The client throws before application listeners can acknowledge the envelope:
TypeError: Cannot read properties of undefined (reading 'type')
at SocketModeClient.onWebSocketMessage (.../SocketModeClient.js:346:37)
This can produce a restart and redelivery loop because the envelope cannot be acknowledged.
I have a focused fix with regression tests ready to submit.
- 主要言語
- TypeScript
- スター
- 3.4k
- フォーク
- 688
- 平均マージ
- 1日 49分
- マージ済み PR(30日)
- 15
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
slackapi/node-slack-sdk のほかの issue
-
ThreadBroadcastMessageEvent is missing `bot_id`対応中かも @sean0407 が 4 日前に担当しました。 オープンuntriaged
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
slackapi/node-slack-sdk#2766 ·
メンテナーはふだん 1 日以内に返信
-
Support assistant.search.* APIs対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンauto-triage-skip enhancement pkg:web-api
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
slackapi/node-slack-sdk#2607 · コメント 2 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
`SlackListsItem FieldMessage.message` type does not match API response shape対応中かも @AjTheSpidey が 154 日前に担当しました。 オープンarea:typescript auto-triage-skip bug pkg:web-api
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
slackapi/node-slack-sdk#2598 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Missing TypeScript response type for files.uploadV2対応中かも @dajiaohuang が 22 日前に担当しました。 オープンarea:typescript auto-triage-skip bug pkg:web-api
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
slackapi/node-slack-sdk#2459 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
untriaged
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
slackapi/node-slack-sdk#2773 ·
メンテナーはふだん 1 日以内に返信
slackapi/node-slack-sdk の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
polarsource/polar#15580 ·
メンテナーはふだん 1 日以内に返信
-
accepted bug via-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
pingdotgg/t3code#20931 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug/1-unconfirmed kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 83/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
ranxianglei/billion-context#3583 ·
メンテナーはふだん 1 日以内に返信