Skip to content

Docs: describe Slack interactive replies#45463

Merged
vincentkoc merged 1 commit intomainfrom
vincentkoc-code/slack-interactive-replies-docs
Mar 13, 2026
Merged

Docs: describe Slack interactive replies#45463
vincentkoc merged 1 commit intomainfrom
vincentkoc-code/slack-interactive-replies-docs

Conversation

@vincentkoc
Copy link
Member

Summary

  • document channels.slack.capabilities.interactiveReplies
  • show global and per-account config examples
  • document the [[slack_buttons: ...]] and [[slack_select: ...]] directives and current Slack-specific behavior

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Security hardening
  • Chore/infra

Linked Issue/PR

@vincentkoc vincentkoc self-assigned this Mar 13, 2026
@vincentkoc vincentkoc merged commit 8c7bdbe into main Mar 13, 2026
10 checks passed
@vincentkoc vincentkoc deleted the vincentkoc-code/slack-interactive-replies-docs branch March 13, 2026 21:16
@openclaw-barnacle openclaw-barnacle bot added docs Improvements or additions to documentation channel: slack Channel integration: slack size: XS maintainer Maintainer-authored PR labels Mar 13, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 13, 2026

Greptile Summary

This PR adds documentation for the channels.slack.capabilities.interactiveReplies feature, covering global and per-account configuration, the [[slack_buttons: ...]] / [[slack_select: ...]] directive syntax, Block Kit compilation, and the opaque-token / fallback behavior. The content itself is accurate and consistent with the existing doc style.

Three minor issues were found:

  • Section placement: The new ## Interactive replies section is inserted between the "Commands and slash behavior" heading and the "Default slash command settings" block that was always part of it, breaking the logical grouping for readers who scan linearly.
  • Callback value ambiguity: The note about opaque tokens correctly describes the Slack payload but doesn't tell developers what value their agent handler actually receives on interaction, which is the detail they need most.
  • Missing config key in reference pointers: capabilities.interactiveReplies is not listed in the "Configuration reference pointers" summary table at the bottom of the page.

Confidence Score: 4/5

  • Docs-only change; no runtime impact. Safe to merge after addressing the minor structural and completeness issues.
  • The PR introduces no code changes — only documentation additions. The new content is factually coherent and consistent with existing style. The identified issues are documentation quality concerns (section ordering, a missing clarification, and a missing entry in the reference list) that don't block functionality but reduce doc usability if left unaddressed.
  • docs/channels/slack.md — section placement and completeness issues described in inline comments.

Comments Outside Diff (2)

  1. docs/channels/slack.md, line 270-281 (link)

    Section placement separates slash-command defaults from their parent section

    The "Default slash command settings:" block (and the slash session key content that follows it) logically belongs to the "Commands and slash behavior" section (line 207), but the new ## Interactive replies section has been inserted in between them. A reader scanning the document top-to-bottom will encounter Interactive-replies content before seeing the slash-command defaults, and may initially think the defaults apply to interactive replies rather than slash commands.

    Consider either:

    • moving the new ## Interactive replies section after the slash-command defaults block, or
    • promoting the defaults into a ### Default slash command settings sub-heading and ensuring it sits entirely within the "Commands and slash behavior" section before the interactive-replies section begins.
    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: docs/channels/slack.md
    Line: 270-281
    
    Comment:
    **Section placement separates slash-command defaults from their parent section**
    
    The "Default slash command settings:" block (and the slash session key content that follows it) logically belongs to the "Commands and slash behavior" section (line 207), but the new `## Interactive replies` section has been inserted in between them. A reader scanning the document top-to-bottom will encounter Interactive-replies content before seeing the slash-command defaults, and may initially think the defaults apply to interactive replies rather than slash commands.
    
    Consider either:
    - moving the new `## Interactive replies` section *after* the slash-command defaults block, or
    - promoting the defaults into a `### Default slash command settings` sub-heading and ensuring it sits entirely within the "Commands and slash behavior" section before the interactive-replies section begins.
    
    How can I resolve this? If you propose a fix, please make it concise.
  2. docs/channels/slack.md, line 595 (link)

    New config key missing from reference pointers

    capabilities.interactiveReplies is introduced in the new section but is not listed in the "Configuration reference pointers" summary at the bottom of the page. Adding it to the ops/features line would keep the reference list complete and help readers who scroll straight to the config summary.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: docs/channels/slack.md
    Line: 595
    
    Comment:
    **New config key missing from reference pointers**
    
    `capabilities.interactiveReplies` is introduced in the new section but is not listed in the "Configuration reference pointers" summary at the bottom of the page. Adding it to the `ops/features` line would keep the reference list complete and help readers who scroll straight to the config summary.
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: docs/channels/slack.md
Line: 270-281

Comment:
**Section placement separates slash-command defaults from their parent section**

The "Default slash command settings:" block (and the slash session key content that follows it) logically belongs to the "Commands and slash behavior" section (line 207), but the new `## Interactive replies` section has been inserted in between them. A reader scanning the document top-to-bottom will encounter Interactive-replies content before seeing the slash-command defaults, and may initially think the defaults apply to interactive replies rather than slash commands.

Consider either:
- moving the new `## Interactive replies` section *after* the slash-command defaults block, or
- promoting the defaults into a `### Default slash command settings` sub-heading and ensuring it sits entirely within the "Commands and slash behavior" section before the interactive-replies section begins.

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: docs/channels/slack.md
Line: 267

Comment:
**Clarify what value the agent receives on interaction**

The note explains that callback values sent to Slack are OpenClaw-generated opaque tokens, but it doesn't say what value the *agent* receives when a user clicks a button or makes a selection. Developers writing agents that emit `[[slack_buttons: ...]]` need to know whether their handler receives the raw label value (e.g. `approve`), an opaque token, or something else entirely. Adding a sentence like "The agent handler receives the original label value (e.g. `approve`) after OpenClaw resolves the token." (or the correct equivalent) would make this note actionable.

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: docs/channels/slack.md
Line: 595

Comment:
**New config key missing from reference pointers**

`capabilities.interactiveReplies` is introduced in the new section but is not listed in the "Configuration reference pointers" summary at the bottom of the page. Adding it to the `ops/features` line would keep the reference list complete and help readers who scroll straight to the config summary.

```suggestion
  - ops/features: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `capabilities.interactiveReplies`, `userToken`, `userTokenReadOnly`
```

How can I resolve this? If you propose a fix, please make it concise.

Last reviewed commit: 4f4cb04

Notes:

- This is Slack-specific UI. Other channels do not translate Slack Block Kit directives into their own button systems.
- The interactive callback values are OpenClaw-generated opaque tokens, not raw agent-authored values.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarify what value the agent receives on interaction

The note explains that callback values sent to Slack are OpenClaw-generated opaque tokens, but it doesn't say what value the agent receives when a user clicks a button or makes a selection. Developers writing agents that emit [[slack_buttons: ...]] need to know whether their handler receives the raw label value (e.g. approve), an opaque token, or something else entirely. Adding a sentence like "The agent handler receives the original label value (e.g. approve) after OpenClaw resolves the token." (or the correct equivalent) would make this note actionable.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/channels/slack.md
Line: 267

Comment:
**Clarify what value the agent receives on interaction**

The note explains that callback values sent to Slack are OpenClaw-generated opaque tokens, but it doesn't say what value the *agent* receives when a user clicks a button or makes a selection. Developers writing agents that emit `[[slack_buttons: ...]]` need to know whether their handler receives the raw label value (e.g. `approve`), an opaque token, or something else entirely. Adding a sentence like "The agent handler receives the original label value (e.g. `approve`) after OpenClaw resolves the token." (or the correct equivalent) would make this note actionable.

How can I resolve this? If you propose a fix, please make it concise.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4f4cb04b02

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +231 to +233
capabilities: {
interactiveReplies: true,
},

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use valid Slack capabilities schema in config example

The new examples document channels.slack.capabilities as an object with interactiveReplies, but Slack config only accepts capabilities as a string array (src/config/zod-schema.providers-core.ts:834, src/config/types.slack.ts:92). If users copy this snippet, config validation fails before startup, so the documented enablement path is broken in practice; this should be updated to a supported key path (or removed until implemented).

Useful? React with 👍 / 👎.

Comment on lines +259 to +262
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`

These directives compile into Slack Block Kit and route clicks or selections back through the existing Slack interaction event path.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove unsupported Slack reply directives from docs

This section claims [[slack_buttons: ...]] and [[slack_select: ...]] are compiled into Block Kit, but reply parsing only handles media/reply/audio tags through parseReplyDirectives + parseInlineDirectives (src/auto-reply/reply/reply-directives.ts:23-31, src/utils/directive-tags.ts:17-18) and there is no Slack-specific directive parser in src/. In current builds these tags are treated as plain text, so users following this doc will not get interactive controls.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: slack Channel integration: slack docs Improvements or additions to documentation maintainer Maintainer-authored PR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant