Slack e canais
Conecte o Slack a um projeto e controle sessões por um canal.
Um canal conecta uma plataforma de chat a um projeto. Uma mensagem em um canal conectado inicia uma sessão. O agente responde na mesma thread.
Canais disponíveis
Atualmente, o Beeuni é compatível com quatro plataformas de canal:
- Slack — conecte com um clique pelo app gerenciado pelo Beeuni ou use seu próprio token de bot.
- Microsoft Teams — conecte por OAuth com consentimento do administrador da organização ou use seu próprio Azure Bot (experimental; ative em Settings → Feature flags).
- Email — um canal com tecnologia AgentMail (experimental; ative em Settings → Feature flags).
- Voz — um canal de voz em tempo real (experimental; ative em Settings → Feature flags). Converse com um agente em tempo real.
A conexão pelo CLI e pelo painel só está disponível para Slack e Microsoft Teams. Email e voz são gerenciados pelo painel. Esta página aborda o Slack. O Teams segue as mesmas regras de sessão, vinculação de identidade e credenciais.
Como um canal inicia uma sessão
A primeira mensagem em uma thread do Slack ou conversa do Teams cria uma sessão. A thread mantém essa sessão mesmo depois que o sandbox para e é retomado.
Em um canal do Slack, uma mensagem posterior só chega à sessão quando menciona o bot. Respostas sem marcação são destinadas às pessoas na thread. O agente as lê na próxima vez que alguém o mencionar. Em uma mensagem direta, todas as mensagens vão para a sessão.
Um workspace do Slack conectado a mais de um projeto mostra um seletor de projeto na primeira menção.
Vinculação de identidade
Antes de o agente atuar, o Beeuni vincula cada remetente do chat a uma conta do Beeuni. Execute /beeuni login no Slack e siga o link para entrar. O Teams exige o mesmo. Um remetente sem vínculo recebe uma solicitação para vincular a conta, em vez de iniciar uma sessão.
Um link de entrada só funciona uma vez e expira após 10 minutos. Uma conta do Slack conectada a uma conta do Beeuni não pode ser conectada a outra: execute /beeuni logout primeiro. Se sua organização exigir autenticação de dois fatores, o Beeuni solicitará seu segundo fator antes de conectar você, e o chat será executado com o fator usado na conexão.
Cada ação é executada como a conta vinculada da pessoa que a realizou, com a função dessa conta no projeto. Proprietários e administradores da conta são considerados gerentes do projeto.
| Ação | Quem pode realizá-la |
|---|---|
| Mencionar o bot em uma nova mensagem ou na thread dele | Uma conta vinculada com acesso ao projeto, dentro da política do canal |
| Interromper uma execução | A pessoa que enviou a mensagem respondida ou qualquer pessoa aprovada para participar da sessão, desde que ainda possa usar o projeto |
| Alterar o projeto, agente, modelo ou política do canal | Um gerente do projeto; em uma mensagem direta com o bot, qualquer membro do projeto |
| Tomar uma decisão sobre uma revisão | Um gerente do projeto |
| Aprovar ou negar uma chamada de conector | Um gerente do projeto ou a pessoa que iniciou a sessão |
Aprovar alguém para participar de uma thread owner_approval |
O proprietário da sessão |
link-bot |
Um gerente do projeto |
Onde ficam as credenciais
O token de bot de um canal conectado é um segredo com escopo de conector. Ele não aparece na página Secrets do projeto. O Beeuni nunca o injeta em um sandbox. O Beeuni resolve o token no servidor quando o agente envia ou lê uma mensagem de chat.
Conectar o Slack
Inicie a conexão
No CLI, execute:
beeuni channels connectEm um host com o app compartilhado do Slack configurado (como o Beeuni Cloud), esse comando exibe um link de instalação com um clique. Abra o link e escolha o workspace. Clique em Allow. Adicione --wait para que o comando continue verificando até a instalação ser concluída.
No painel, abra a página Channels do projeto e conecte o Slack por lá. O fluxo de instalação é o mesmo.
Usar seu próprio app do Slack
Para usar seu próprio app do Slack, execute beeuni channels manifest para exibir um manifesto do app. Crie o app em api.slack.com/apps usando esse manifesto. Instale o app no workspace. Em seguida, execute:
beeuni channels connect --manual --bot-token xoxb-... --signing-secret ...Verifique a conexão
beeuni channels statusExecute beeuni channels disconnect para remover a conexão. Consulte a referência do CLI para ver todas as opções.
Ao conectar o Slack, uma entrada de conector channel é adicionada a beeuni.yaml para você. Você nunca precisa escrever essa entrada manualmente.
Usar o Slack
Mencione o bot com uma tarefa em qualquer canal ao qual ele tenha sido adicionado ou abra uma mensagem direta. Como descrito acima, a thread mantém sua sessão. Mencione o bot novamente em uma thread de canal para dar continuidade. Se você apenas mencionar o bot, sem uma tarefa, receberá um lembrete para adicionar uma, em vez de iniciar uma sessão.
O que o agente pode ler
O agente lê o Slack pelo conector do Slack do projeto (beeuni_slack ou pelo comando slack no sandbox). Todos os projetos conectados ao mesmo workspace do Slack usam o mesmo bot. Por isso, o Beeuni mantém cada leitura dentro das conversas do próprio projeto:
| Conversa | Leitura |
|---|---|
| Um canal ou uma mensagem direta conectado a este projeto | Permitida |
| Uma thread iniciada ou integrada por uma sessão deste projeto, em qualquer canal | Permitida |
| Um canal, mensagem direta ou thread de outro projeto | Recusada |
| Uma conversa não conectada a nenhum projeto | Permitida somente enquanto nenhum outro projeto estiver conectado ao workspace |
Uma leitura recusada responde 403 com o motivo conversation_not_in_project e uma mensagem que identifica a conversa. Para ler uma conversa que não esteja conectada a nenhum projeto, conecte-a primeiro: execute /beeuni switch nela e escolha este projeto.
- O histórico do canal não inclui as mensagens de uma thread de outro projeto.
get_historyeget_threadadicionamuser_namea cada mensagem cujo autor o Slack consiga identificar, ao lado do IDuser. Até 25 pessoas são identificadas por leitura; um nome que o Slack não retornar em até 2 segundos será omitido.list_channelslista todos os canais públicos e os canais privados e as mensagens diretas que o agente pode ler.channel_inforesponde para qualquer canal público. Para um canal privado ou mensagem direta, aplica-se a tabela acima.file_inforesponde quando o arquivo é compartilhado em uma conversa que o agente pode ler ou em uma thread deste projeto.slack downloadsegue a mesma regra: se um arquivo for compartilhado somente em uma conversa de outro projeto, a resposta será403. O download é interrompido em 50 MB e responde413.search_messagessó é executado enquanto nenhum outro projeto estiver conectado ao workspace, pois uma busca não pode ser limitada às conversas de um único projeto.list_users,user_infoeauth_testleem o diretório do workspace e não têm restrições.
As gravações seguem a regra própria descrita abaixo.
O que o agente pode publicar
Publicar, enviar um arquivo, editar, excluir, reagir, entrar em um canal e vincular uma thread seguem a mesma regra: o agente nunca atua dentro do canal ou da thread de outro projeto.
| Destino | Gravação |
|---|---|
| Um canal deste projeto ou uma thread iniciada ou integrada por uma das sessões do projeto | Permitida |
| Um canal não conectado a nenhum projeto | Permitida. Uma nova mensagem inicia a thread deste projeto, então uma resposta que mencione o bot retorna à sessão |
| Uma mensagem direta com uma pessoa | Permitida, inclusive quando a mensagem direta dessa pessoa com o bot executa outro projeto |
| Um canal ou uma mensagem direta em grupo de outro projeto | Recusada |
| Uma thread de outro projeto, em qualquer conversa | Recusada: não pode responder, editar, excluir nem reagir |
Uma gravação recusada responde 403 com o motivo conversation_not_in_project e uma mensagem que identifica a conversa. slack send --file e slack bind-thread seguem a mesma regra.
channel deve ser o ID da conversa ou do usuário, como C0123ABCD ou U0123ABCD, e não o nome do canal. O Slack publica em um nome, que não pode ser verificado de acordo com a regra. Se, ainda assim, o Slack publicar uma mensagem em qualquer lugar que não seja a conversa verificada, o Beeuni excluirá a mensagem e recusará a publicação.
Para publicar em um canal gerenciado por outro projeto, execute /beeuni switch nele e escolha este projeto, ou publique pelo outro projeto.
Controlar uma sessão com comandos de barra
Digite estes comandos como /beeuni <command> no Slack ou como texto simples em uma mensagem direta. Os comandos de barra não são executados no painel de mensagens diretas do Assistant, então o Beeuni interpreta as mesmas palavras como texto simples nesse painel.
| Comando | O que faz |
|---|---|
login, logout |
Vincula ou desvincula sua identidade do Slack |
switch, unbind |
Vincula novamente ou desvincula este canal do projeto |
projects |
Lista os projetos aos quais você pode vincular o canal |
sessions |
Lista as sessões recentes iniciadas neste workspace |
whoami |
Exibe o painel do canal: projeto, agente, modelo, política e sua identidade vinculada |
models |
Escolhe o modelo para este canal — consulte Modelos e chaves |
agent <name>, model <id> |
Define o agente ou modelo usado por este canal |
policy <mode> |
Define quem pode iniciar sessões aqui |
help |
Lista todos os comandos |
policy aceita project_open (padrão — qualquer membro do projeto que mencione o bot inicia uma sessão), owner_approval ou owner_only. Esta configuração se aplica a um recurso de um canal específico; não é uma função. Ela não concede permissões que o resultado da função negue — consulte Contas e acesso.
Modelos e chaves
/beeuni models lista todos os modelos que você pode usar aqui, como faz o seletor da Web: modelos do Beeuni e modelos acessados por uma chave de API de provedor ou uma assinatura do ChatGPT. Cada modelo informa como é pago. Uma lista longa aparece em um único seletor no qual você pode digitar. Escolha um modelo ou digite /beeuni model <id>; /beeuni model default retorna ao padrão do projeto.
As chaves disponíveis dependem da conversa:
- Uma mensagem direta com o bot — suas próprias chaves e assinatura do ChatGPT, além das chaves compartilhadas com o projeto. As sessões são privadas para você.
- Um canal ou uma mensagem direta em grupo — somente as chaves compartilhadas com todo o projeto. Em vez disso, escolha em uma mensagem direta um modelo que use suas próprias chaves.
Um modelo que usa chaves utiliza todas as chaves que você pode usar para o provedor, alternando entre elas quando os limites de uso são atingidos. O modelo do canal inicia cada nova thread; uma thread mantém o modelo com que foi iniciada. Se um modelo deixar de estar disponível para uma thread, ele será substituído somente nessa mensagem, em vez de a mensagem falhar. Consulte Chaves de provedores e acesso de membros.
Uma mensagem de continuação com imagem é executada em um modelo capaz de ler imagens. Se nenhum modelo disponível puder fazer isso, o agente será informado no prompt: ele dirá que não consegue ver a imagem e pedirá o texto, em vez de tentar adivinhar.
Nomes de canais e pessoas
O Slack envia IDs, como C0123ABCD e U0123ABCD. O Beeuni exibe os nomes que as pessoas veem no Slack e mantém os IDs para as operações.
| Onde | O que exibe |
|---|---|
A página Channels, beeuni channels bindings |
#channel para um canal público ou privado, a pessoa em uma mensagem direta, os membros em uma mensagem direta em grupo |
| Uma mensagem do Slack em uma sessão | O nome do remetente e #channel |
Uma resposta slack send em uma sessão |
#channel ou a pessoa em uma mensagem direta |
| O título da sessão | Menções como o Slack as exibe: @Beeuni, não <@U0123ABCD> |
| O prompt do agente | Nomes ao lado dos IDs: Sam Rivera (U0123ABCD), #general (C0123ABCD) |
| As etapas do plano do agente no Slack | Uma pessoa como @Sam Rivera, um canal como #general. Uma etapa nunca notifica ninguém |
| Um cartão de aprovação no Slack | Um parâmetro de canal como link do canal, que o Slack nomeia conforme seu próprio acesso. Um parâmetro de usuário com o nome da pessoa |
Se o Slack não encontrar um canal, ele aparecerá como Canal indisponível e manterá o ID. Isso acontece quando o canal foi excluído ou o bot foi removido dele. Um nome que o Slack não retornar em até 2 segundos será omitido dessa mensagem. O prompt incluirá somente os IDs, e a resposta não aguardará.
Aprovações
Quando o agente precisa de uma decisão humana antes de prosseguir, ele cria um item de revisão. Se a sessão foi iniciada nesta thread, a decisão aparece aqui em um cartão com título, resumo, nível de risco e as opções Approve, Request changes e Deny.
Request changes abre um campo para informar o que deve ser alterado. O que você digitar será armazenado junto com a decisão e enviado ao agente, para que ele não precise perguntar novamente. É opcional — se você enviar o campo vazio, o agente receberá instruções para perguntar. Aprovar e negar continuam sendo ações de um clique.
Para tomar uma decisão sobre uma revisão, é necessário ter uma conta do Beeuni vinculada com acesso de gravação ao projeto.
Interromper uma execução
Enquanto o agente trabalha, a mensagem ao vivo exibe um botão Stop. Ele encerra a execução no runtime, não apenas na mensagem — uma execução que permanece aberta absorve a próxima mensagem da thread em vez de respondê-la.
A execução pode ser interrompida pela pessoa que enviou a mensagem respondida ou por qualquer pessoa aprovada para participar dessa sessão, desde que ainda possa usar o projeto. Quem estiver apenas acompanhando o canal não poderá interrompê-la e receberá uma mensagem privada informando isso.
O que não funciona
- Os comandos de barra não são executados no painel de mensagens diretas do Assistant. Digite
/beeuni <command>como texto simples nesse painel. - Outras plataformas de chat, incluindo Telegram, ainda não são compatíveis como canais. A conexão pelo CLI e pelo painel só está disponível para Slack e Microsoft Teams; email e voz são conectados pelo painel.