---
title: "Slack y canales"
description: "Conecta Slack a un proyecto y controla las sesiones desde un canal."
---

Un canal conecta una plataforma de chat con un proyecto. Un mensaje en un canal conectado inicia una [sesión](/docs/es/work/sessions). El agente responde en el mismo hilo.

<a id="live-channels"></a>

## Canales disponibles

Beeuni admite actualmente cuatro plataformas de canales:

- **Slack** — conéctalo con un clic mediante la aplicación administrada por Beeuni o usa tu propio token de bot.
- **Microsoft Teams** — conéctalo mediante OAuth con consentimiento del administrador de la organización o usa tu propio Azure Bot (experimental; actívalo en [Settings → Feature flags](/docs/es/feature-flags)).
- **Email** — un canal basado en AgentMail (experimental; actívalo en [Settings → Feature flags](/docs/es/feature-flags)).
- **Voice** — un canal de voz en tiempo real (experimental; actívalo en [Settings → Feature flags](/docs/es/feature-flags)). Habla con un agente en tiempo real.

Solo Slack y Microsoft Teams se conectan mediante la CLI y el panel. El correo electrónico y la voz se administran desde el panel. Esta página trata sobre Slack. Teams sigue las mismas reglas de sesión, vinculación de identidad y credenciales.

<a id="how-a-channel-starts-a-session"></a>

## Cómo un canal inicia una sesión

El primer mensaje de un hilo de Slack o de una conversación de Teams crea una sesión. El hilo conserva esa sesión incluso después de que el sandbox se detenga y se reanude.

En un canal de Slack, un mensaje posterior llega a la sesión solo cuando menciona al bot. Las respuestas sin etiqueta son para las personas del hilo. El agente las lee la próxima vez que alguien lo menciona. En un mensaje directo, todos los mensajes van a la sesión.

Un espacio de trabajo de Slack conectado a más de un proyecto muestra un selector de proyecto en la primera mención.

<a id="identity-linking"></a>

## Vinculación de identidad

Beeuni vincula cada remitente del chat con una cuenta de Beeuni antes de ejecutar el agente para esa persona. Ejecuta `/beeuni login` en Slack y sigue el enlace para iniciar sesión. Teams tiene el mismo requisito. Un remitente no vinculado recibe una solicitud para vincularse en lugar de una ejecución de sesión.

Un enlace de inicio de sesión funciona una vez y caduca después de 10 minutos. Una cuenta de Slack conectada a una cuenta de Beeuni no puede conectarse a otra: ejecuta `/beeuni logout` primero. Si tu organización requiere autenticación de dos factores, Beeuni solicita tu segundo factor antes de conectarte, y el chat se ejecuta con el factor que utilizaste para conectarte.

Cada acción se ejecuta como la cuenta vinculada de la persona que la realizó, con el rol de proyecto de esa cuenta. Los propietarios y administradores de cuentas cuentan como responsables del proyecto.

| Acción | Quién puede realizarla |
|---|---|
| Mencionar al bot, en un mensaje nuevo o en su hilo | Una cuenta vinculada con acceso al proyecto, dentro de la política del canal |
| Detener una ejecución | La persona que envió el mensaje al que se responde, o cualquiera aprobado en esa sesión, que aún pueda usar el proyecto |
| Cambiar el proyecto, agente, modelo o política del canal | Un responsable del proyecto; en un DM con el bot, cualquier miembro del proyecto |
| Actuar sobre una revisión | Un responsable del proyecto |
| Aprobar o denegar una llamada de conector | Un responsable del proyecto o la persona que inició la sesión |
| Aprobar a alguien en un hilo `owner_approval` | El propietario de la sesión |
| `link-bot` | Un responsable del proyecto |

<a id="where-credentials-live"></a>

## Dónde se almacenan las credenciales

El token de bot de un canal conectado es un [secreto](/docs/es/project/secrets) con alcance de conector. No aparece en la página Secrets del proyecto. Beeuni nunca lo inyecta en un sandbox. Beeuni resuelve el token en el servidor cuando el agente envía o lee un mensaje de chat.

<a id="connect-slack"></a>

## Conectar Slack

1. **Iniciar la conexión**

    Desde la CLI, ejecuta:

    ```
    beeuni channels connect
    ```

    En un host con la aplicación de Slack compartida configurada (por ejemplo, Beeuni Cloud), esto muestra un enlace de instalación con un clic. Abre el enlace y elige el espacio de trabajo. Haz clic en **Allow**. Añade `--wait` para que el comando consulte hasta que finalice la instalación.

    Desde el panel, abre la página Channels del proyecto y conecta Slack allí. Usa el mismo flujo de instalación.

2. <a id="use-your-own-slack-app"></a>

    ### Usar tu propia aplicación de Slack

    Para usar tu propia aplicación de Slack, ejecuta `beeuni channels manifest` para mostrar un manifiesto de aplicación. Crea la aplicación en `api.slack.com/apps` a partir de ese manifiesto. Instala la aplicación en tu espacio de trabajo. Después, ejecuta:

    ```
    beeuni channels connect --manual --bot-token xoxb-... --signing-secret ...
    ```

3. **Comprobar la conexión**

    ```
    beeuni channels status
    ```

    Ejecuta `beeuni channels disconnect` para eliminar la conexión. Consulta la [referencia de la CLI](/docs/es/cli) para ver todas las opciones.

Al conectar Slack, se añade por ti una entrada de `channel` [conector](/docs/es/connect/connectors) a `beeuni.yaml`. Nunca escribes esta entrada manualmente.

<a id="use-slack"></a>

## Usar Slack

Menciona al bot con una tarea en cualquier canal al que se haya unido o abre un mensaje directo. El hilo conserva su sesión como se ha descrito anteriormente. Vuelve a mencionar al bot en un hilo de canal para continuar. Una mención sin tarea recibe un recordatorio para añadir una en lugar de iniciar una sesión.

<a id="what-the-agent-can-read"></a>

## Qué puede leer el agente

El agente lee Slack mediante el [conector](/docs/es/connect/connectors) de Slack del proyecto (`beeuni_slack` o el comando `slack` en el sandbox). Todos los proyectos conectados al mismo espacio de trabajo de Slack usan el mismo bot, por lo que Beeuni mantiene cada lectura dentro de las conversaciones propias del proyecto:

| Conversación | Lectura |
|---|---|
| Un canal o DM conectado a este proyecto | Permitida |
| Un hilo que una sesión de este proyecto inició o al que se unió, en cualquier canal | Permitida |
| Un canal, DM o hilo de otro proyecto | Rechazada |
| Una conversación a la que no está conectado ningún proyecto | Permitida solo mientras ningún otro proyecto esté conectado al espacio de trabajo |

Una lectura rechazada responde `403` con el motivo `conversation_not_in_project` y un mensaje que identifica la conversación. Para leer una conversación a la que no está conectado ningún proyecto, conéctala primero: ejecuta `/beeuni switch` en ella y elige este proyecto.

- El historial del canal omite los mensajes del hilo de otro proyecto.
- `get_history` y `get_thread` añaden `user_name` a cada mensaje cuyo autor Slack pueda identificar, junto al id `user`. Se identifican hasta 25 personas por lectura; si Slack no devuelve un nombre en 2 segundos, se omite.
- `list_channels` muestra todos los canales públicos y los canales privados y DM que el agente puede leer.
- `channel_info` responde para cualquier canal público. Un canal privado o DM sigue la tabla anterior.
- `file_info` responde cuando el archivo se comparte en una conversación que el agente puede leer o en un hilo de este proyecto. `slack download` sigue la misma regla: si un archivo solo se comparte en la conversación de otro proyecto, responde `403`. La descarga se detiene en 50 MB y responde `413`.
- `search_messages` se ejecuta solo mientras ningún otro proyecto esté conectado al espacio de trabajo, porque una búsqueda no puede limitarse a las conversaciones de un proyecto.
- `list_users`, `user_info` y `auth_test` leen el directorio del espacio de trabajo y no están limitados.

Las escrituras siguen su propia regla, a continuación.

<a id="what-the-agent-can-post"></a>

## Qué puede publicar el agente

Publicar, enviar un archivo, editar, eliminar, reaccionar, unirse a un canal y vincular un hilo siguen una regla: el agente nunca actúa dentro del canal o hilo de otro proyecto.

| Destino | Escritura |
|---|---|
| Un canal de este proyecto o un hilo que una de sus sesiones inició o al que se unió | Permitida |
| Un canal al que no está conectado ningún proyecto | Permitida. Un mensaje nuevo inicia el hilo de este proyecto, por lo que una respuesta que mencione al bot vuelve a la sesión |
| Un mensaje directo con una persona | Permitido, incluso cuando el DM de esa persona con el bot ejecuta otro proyecto |
| Un canal o DM grupal de otro proyecto | Rechazada |
| Un hilo de otro proyecto, en cualquier conversación | Rechazada: no se permite responder, editar, eliminar ni reaccionar |

Una escritura rechazada responde `403` con el motivo `conversation_not_in_project` y un mensaje que identifica la conversación. `slack send --file` y `slack bind-thread` siguen la misma regla.

`channel` debe ser el id de conversación o de usuario, como `C0123ABCD` o `U0123ABCD`, no un nombre de canal. Slack publica en un nombre, y un nombre no puede comprobarse según la regla. Si Slack publica un mensaje en cualquier lugar distinto de la conversación comprobada, Beeuni elimina el mensaje y rechaza la publicación.

Para publicar en un canal administrado por otro proyecto, ejecuta `/beeuni switch` en él y elige este proyecto, o publica desde ese proyecto.

<a id="control-a-session-with-slash-commands"></a>

## Controlar una sesión con comandos de barra

Escríbelos como `/beeuni <command>` en Slack o como texto sin formato en un DM. Los comandos de barra no se ejecutan dentro del panel DM del Assistant, por lo que Beeuni interpreta allí las mismas palabras como texto sin formato.

| Comando | Qué hace |
|---|---|
| `login`, `logout` | Vincular o desvincular tu identidad de Slack |
| `switch`, `unbind` | Volver a vincular o desvincular este canal de su proyecto |
| `projects` | Enumerar los proyectos a los que puedes vincularlo |
| `sessions` | Enumerar las sesiones recientes iniciadas en este espacio de trabajo |
| `whoami` | Mostrar el panel del canal: proyecto, agente, modelo, política y tu identidad vinculada |
| `models` | Elegir el modelo para este canal — consulta [Modelos y claves](#models-and-keys) |
| `agent <name>`, `model <id>` | Establecer el agente o modelo que usa este canal |
| `policy <mode>` | Establecer quién puede iniciar sesiones aquí |
| `help` | Enumerar todos los comandos |

`policy` acepta `project_open` (predeterminado: cualquier miembro del proyecto que mencione al bot obtiene una sesión), `owner_approval` o `owner_only`. Es una configuración por recurso en un canal, no un rol. No concede ningún permiso que el veredicto del rol deniegue; consulta [Cuentas y acceso](/docs/es/accounts#per-feature-access-settings).

<a id="models-and-keys"></a>

## Modelos y claves

`/beeuni models` enumera todos los modelos que puedes ejecutar aquí, como hace el selector web: modelos de Beeuni y modelos a los que accedes mediante una clave de API de proveedor o una suscripción de ChatGPT. Cada uno indica cómo se paga. Una lista larga es un único selector en el que puedes escribir. Elige uno o escribe `/beeuni model <id>`; `/beeuni model default` vuelve al valor predeterminado del proyecto.

Las claves que cuentan dependen de la conversación:

- **Un DM con el bot** — tus propias claves y la suscripción de ChatGPT, además de las claves compartidas con el proyecto. Sus sesiones son privadas para ti.
- **Un canal o DM grupal** — solo las claves compartidas con todo el proyecto. En su lugar, elige en un DM un modelo que se ejecute con tus propias claves.

Un modelo que usa claves utiliza todas las claves que puedes usar para su proveedor y las alterna cuando se alcanzan límites de velocidad. El modelo del canal inicia cada hilo nuevo; un hilo conserva el modelo con el que comenzó. Si un hilo ya no puede ejecutar un modelo, este se reemplaza para ese mensaje en lugar de fallar. Consulta [Claves de proveedor y acceso de miembros](/docs/es/project/models#provider-keys-and-member-access).

Una continuación con una imagen se ejecuta con un modelo capaz de leer imágenes. Si ningún modelo disponible puede hacerlo, se informa al agente en el prompt: indica que no puede ver la imagen y solicita el texto, en lugar de adivinar.

<a id="channel-and-people-names"></a>

## Nombres de canales y personas

Slack envía ids, como `C0123ABCD` y `U0123ABCD`. Beeuni muestra los nombres que las personas leen en Slack y conserva los ids para las operaciones.

| Dónde | Qué muestra |
|---|---|
| La página Channels, `beeuni channels bindings` | `#channel` para un canal público o privado, la persona para un DM y los miembros para un DM grupal |
| Un mensaje de Slack en una sesión | El nombre del remitente y `#channel` |
| Una respuesta `slack send` en una sesión | `#channel` o la persona de un DM |
| El título de la sesión | Las menciones tal como las muestra Slack: `@Beeuni`, no `<@U0123ABCD>` |
| El prompt del agente | Nombres junto a los ids: `Sam Rivera (U0123ABCD)`, `#general (C0123ABCD)` |
| Los pasos del plan del agente en Slack | Una persona como `@Sam Rivera` y un canal como `#general`. Un paso nunca notifica a nadie |
| Una tarjeta de aprobación en Slack | Un parámetro de canal como enlace de canal, que Slack nombra según tu propio acceso. Un parámetro de usuario con el nombre de la persona |

Un canal que Slack no puede encontrar se muestra como **Unavailable channel** y conserva su id. Esto ocurre cuando se eliminó el canal o se retiró el bot. Si Slack no devuelve un nombre en 2 segundos, se omite de ese mensaje. El prompt contiene entonces solo los ids y el turno no espera.

<a id="approvals"></a>

## Aprobaciones

Cuando un agente necesita una decisión humana antes de continuar, crea un elemento de revisión. Si la sesión se inició desde este hilo, la decisión aparece aquí como una tarjeta: el título, un resumen, un nivel de riesgo y **Approve**, **Request changes** y **Deny**.

**Request changes** abre un cuadro para indicar qué debe cambiar. Lo que escribas se almacena con la decisión y se envía al agente junto con ella, por lo que no tiene que preguntártelo otra vez. Es opcional: envíalo vacío y se indica al agente que pregunte. Aprobar y denegar requieren un solo clic.

Para actuar sobre una revisión se necesita una cuenta de Beeuni vinculada con acceso de escritura al proyecto.

<a id="stopping-a-run"></a>

## Detener una ejecución

Mientras el agente trabaja, su mensaje en directo incluye un botón **Stop**. Este termina la ejecución en el entorno de ejecución, no solo en el mensaje: una ejecución que queda abierta consume el siguiente mensaje del hilo en lugar de responderlo.

La persona que envió el mensaje al que se responde puede detenerlo, al igual que cualquiera aprobado en esa sesión, mientras pueda seguir usando el proyecto. Una persona ajena en el canal no puede hacerlo; recibe una nota privada que se lo indica.

<a id="what-does-not-work"></a>

## Lo que no funciona

- Los comandos de barra no se ejecutan dentro del panel DM del Assistant. Escribe allí `/beeuni <command>` como texto sin formato.
- Actualmente no se admiten otras plataformas de chat, incluido Telegram, como canales. Solo Slack y Microsoft Teams se conectan mediante la CLI y el panel; el correo electrónico y la voz se conectan mediante el panel.
