slack

slack

slack.

slack automation via a bot token. send messages, read history, list channels, reactions, dms, user lookup.

add to otoauth : bot tokenprefix : slack_*

setup & usage

⚠ il te faut une app Slack installée sur ton workspace

oto n'a pas encore d'app Slack publiée (« connecter en un clic ») : tu crées ta app dans ton workspace et tu colles ses tokens ici. Une manœuvre unique par workspace, ~5 minutes.

  • bot token (xoxb-) : lire les canaux, poster sous l'identité de l'app. C'est le token nominal.
  • user token (xoxp-) : poster en ton nom, et chercher (search:read n'existe qu'en user token). Optionnel.
  • l'un des deux suffit ; les deux ensemble = lecture par le bot + post en ton nom
  • à défaut, un admin peut te grant la clé plateforme de ton org
  • ⚙ créer l'app en collant un manifeste (le plus court)

    1. va sur api.slack.com/appsCreate New App → choisis From a manifest (pas « AI agent » ni « Starter app » : ce sont des gabarits d'app conversationnelle, sans rapport)

    2. choisis le workspace. L'éditeur qui s'ouvre est déjà rempli d'un exemple (display_information: name: Demo App) : sélectionne tout et remplace-le — coller par-dessus sans vider soude les deux manifestes et Slack refuse (« Nested mappings are not allowed in compact mappings »). Le manifeste à mettre à la place, qui déclare déjà tous les scopes dont les outils oto ont besoin :

    ```yaml

    display_information:

    name: Oto

    description: Lit et écrit dans Slack pour votre agent Oto

    features:

    bot_user:

    display_name: Oto

    always_online: false

    oauth_config:

    scopes:

    bot:

    - channels:read

    - channels:history

    - channels:join

    - groups:read

    - groups:history

    - im:read

    - im:history

    - im:write

    - mpim:read

    - mpim:history

    - users:read

    - users:read.email

    - chat:write

    - reactions:write

    - files:read

    user:

    - search:read

    - chat:write

    settings:

    org_deploy_enabled: false

    socket_mode_enabled: false

    token_rotation_enabled: false

    ```

    3. Create, puis Install to Workspace et autorise

    4. dans OAuth & Permissions, copie le Bot User OAuth Token (xoxb-) et, si tu veux poster en ton nom, le User OAuth Token (xoxp-)

    5. colle-les ici — rien d'autre à configurer

    *(sans manifeste : Blank app, puis déclare les mêmes scopes à la main dans OAuth & Permissions avant d'installer. Le manifeste évite exactement cette étape.)*

    ⚠️ un scope ne remplace pas l'appartenance au canal. sans appartenance, Slack répond not_in_channel — ce qui ressemble à tort à un problème de token. deux cas, et un seul est automatisable :

  • canal public : slack_join_channel fait entrer l'app toute seule (c'est à quoi sert le scope channels:join du manifeste ci-dessus)
  • canal privé : aucune API Slack ne permet de s'y inviter. un humain déjà membre doit taper /invite @Oto dans le canal — oto ne peut pas le faire à sa place, et le dit au lieu de laisser croire à une panne
  • référence Slack : créer une app depuis un manifeste · installer avec oauth v2

    ⚙ plusieurs workspaces, un compte par workspace

    un token Slack est émis par installation : deux workspaces = deux jeux de tokens indépendants. Refais l'installation dans le second workspace (le même manifeste), puis pose ses tokens comme un second compte nommé du connecteur (un nom par workspace, ex. otomata, client-x).

  • le premier compte n'a pas besoin de nom ; à partir du deuxième, chacun porte le sien
  • viser l'un d'eux à l'appel : _account="<nom>" sur l'outil (oto_identity(op='list') pour les lister)
  • en fixer un par défaut : oto_identity(op='set', connector='slack', identity_id='<nom>')
  • avec un seul compte posé, rien à préciser — il est servi automatiquement
  • ▸ ce que tu peux faire

    envoie et lis des messages slack en ton nom depuis claude.

  • « envoie un message dans #general » → slack_post_message
  • « dm jean par email » → slack_find_user_by_email puis slack_open_dm puis slack_post_message
  • « lis les derniers messages de ce canal » → slack_read_history (messages de premier niveau ; oldest/latest pour ne lire qu'une fenêtre)
  • « qu'est-ce qui s'est dit dans ce fil ? » → slack_read_thread — les réponses d'un fil, que slack_read_history ne rend pas (il n'en montre que le compteur)
  • « fais entrer oto dans #canal » → slack_join_channel (canaux publics uniquement)
  • « réagis 👍 à ce message » → slack_add_reaction
  • outils

    chargement…

    usage

    claude code — install the oto plugin — claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.
    claude.ai — add mcp.oto.cx/mcp as a custom connector (guide)
    clipipx install oto-cli then oto slack …