Add Slack Voice Operator — LLM-summarised channels, @mention daemon, voice send - #365
Open
hassan1731996 wants to merge 3 commits into
Open
Add Slack Voice Operator — LLM-summarised channels, @mention daemon, voice send#365hassan1731996 wants to merge 3 commits into
hassan1731996 wants to merge 3 commits into
Conversation
Contributor
🔀 Branch Merge CheckPR direction: ✅ Passed — |
Contributor
✅ Community PR Path Check — PassedAll changed files are inside the |
Contributor
✅ Ability Validation Passed |
Contributor
🔍 Lint Results✅
|
uzair401
requested changes
Aug 31, 2026
uzair401
left a comment
Contributor
There was a problem hiding this comment.
Please address these blockers before merging:
- get_slack_key() does not exist in the current SDK. Use the supported get_token("slack") API.
- Verify the get_single_key() response shape. The implementation may need to unwrap the stored value before reading the Slack configuration.
- Remove resume_normal_flow() from the background worker.
- Add pagination for Slack history, channels, and users.
- The “all channels” option currently monitors only the first 10 channels.
- Handle empty or malformed LLM responses safely.
Also, OpenHome already has an official Slack ability available in the Marketplace. Please review it, clarify the overlap, and link to it in the README.
hassan1731996
added a commit
to hassan1731996/abilities
that referenced
this pull request
Sep 5, 2026
…LM guards
- Replace get_slack_key() with get_token("slack") in main.py and background.py
- Remove resume_normal_flow() from background watch_loop per SDK guidance
- Add cursor-based pagination to _fetch_all_channels(), _fetch_users(),
_handle_mentions() history loop, and _handle_summary() history loop
- Fix "all channels" setup cap: watch = channels (was channels[:10])
- Add safe unwrap for get_single_key() response in _load_config() and background
- Guard all text_to_text_response() results against empty/malformed output
- Fix _save_config() to use create_key-first upsert (not try/except)
- Fix timestamp save in background to use create_key-first pattern
- Remove unused datetime/timezone imports from background.py
- Update README: clarify differentiation from slack-assistant template;
remove internal SDK method name from user-facing setup docs
hassan1731996
added a commit
to hassan1731996/abilities
that referenced
this pull request
Sep 7, 2026
hassan1731996
force-pushed
the
feature/slack-voice-operator
branch
from
September 7, 2026 05:31
d6345ef to
3eb1fd0
Compare
Voice-first Slack companion with LLM-powered channel summaries, proactive @mention alerts via background daemon, natural name/channel resolution, and voice message sending with confirmation.
- Replace get_api_keys("slack_bot_token") with get_slack_key() — platform OAuth
- Replace requests HTTP calls with slack_sdk WebClient method calls
- Use auth_test() to resolve user ID directly — removes display name setup question
- Catch SlackApiError instead of checking result.get("ok")
- Simplify setup flow and update README to reflect platform-linked auth
hassan1731996
force-pushed
the
feature/slack-voice-operator
branch
from
September 7, 2026 10:38
3eb1fd0 to
0883b30
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
A voice-first Slack companion that goes beyond raw message reading with three differentiators:
Intents
SDK patterns applied
user_profile.md/user_summary.md) read first for user name; only asks if emptyEXIT_WORDS= standalone tokens only;EXIT_PHRASESfor multi-word exitscreate_keyfirst → fallbackupdate_keybackground_daemon_modeset beforeCapabilityWorkerresume_normal_flow()infinallyon foreground; at top ofwatch_loop()in daemonget_api_keys("slack_bot_token")— no hardcoded credentialsSetup required
User creates a Slack app, adds scopes (
channels:history,channels:read,groups:history,groups:read,im:history,im:read,chat:write,users:read), installs to workspace, and saves the bot token in OpenHome settings asslack_bot_token. First-voice-run setup resolves their Slack User ID by display name (fully voice-native, no copy-pasting IDs).Validation