Introdução: A Evolução dos Agentes do Slack

Agentes do Slack sempre foram limitados a padrões simples de comando-resposta. Mas com o avanço da IA agêntica, eles precisam lidar com conversas complexas de múltiplas voltas e eventos proativos. A última atualização do eve traz um conjunto de recursos que mudam o jogo: mensagens com noção de sessão, cancelamento, reset e reações a eventos.

Nada de mencionar o bot toda hora. Agora seu agente pode manter contexto e agir autonomamente dentro de um thread, tornando as interações mais naturais e eficientes.

Principais Recursos em Destaque

  • Respostas Autônomas em Threads: Sem repetir menções.
  • Controle de Sessão: Cancele respostas em andamento ou resete conversas inteiras.
  • Ações Baseadas em Eventos: Reaja a qualquer evento do Slack que seu app assine.

AI agent replying to Slack messages in a thread with automated session controls Software Concept Art

Mergulho Profundo: Implementando os Novos Hooks

Continuando Conversas Sem Menções Repetidas

O núcleo desta atualização é o hook onMessage. Ele recebe mensagens do Slack e usa duas funções auxiliares: ctx.isBotMentioned() e ctx.isSubscribed(). A última verifica se a mensagem pertence a um thread com sessão ativa. Isso significa que, uma vez que seu agente está em uma conversa, ele pode continuar respondendo sem ser mencionado novamente.

Aqui está um exemplo prático:

// Exemplo: Despachar DMs, menções e respostas em threads
export default slackChannel({
  credentials: connectSlackCredentials("slack/my-agent"),
  async onMessage(ctx, message) {
    if (message.author?.isBot) return null;
    const isDirectMessage = message.raw.channel_type === "im";
    return isDirectMessage || ctx.isBotMentioned() || (await ctx.isSubscribed()) ? { auth: null } : null;
  },
});

Esse código garante que seu agente responda a mensagens diretas, menções explícitas e qualquer follow-up em um thread ativo. Para roteamento baseado em participantes, use ctx.thread.listParticipants() para obter IDs únicos em ordem.

Cancelando e Resetando Sessões

Dois helpers de sessão dão controle fino:

  • ctx.cancel(): Para a execução atual, mas mantém a sessão. Chame antes de retornar { auth } para enfileirar a nova mensagem como entrada substituta.
  • ctx.reset(): Termina a sessão completamente. A próxima mensagem começa do zero.

Veja como implementar um comando de reset:

// Exemplo: Comando de reset acionado pelo usuário
export default slackChannel({
  credentials: connectSlackCredentials("slack/my-agent"),
  async onMessage(ctx, message) {
    if (message.text.trim() !== "!new") return null;
    await ctx.reset({ reason: "Slack user requested !new" });
    await ctx.thread.post("Started a fresh conversation.");
    return null;
  },
});

Lidando com Qualquer Callback de Eventos

O hook onEvent permite que seu agente reaja a qualquer evento que seu app do Slack assine, como reaction_added, team_join ou channel_created. Use ctx.receive() para iniciar uma execução do agente, ou chame várias vezes para distribuir eventos.

Por exemplo, você pode onboard novos membros em vários canais:

// Exemplo: Distribuir evento team_join para múltiplos canais
const onboardingChannels = ["C0123ABC", "C0456DEF"];
export default slackChannel({
  credentials: connectSlackCredentials("slack/my-agent"),
  async onEvent({ receive }, event) {
    if (event.type !== "team_join") return;
    await Promise.all(
      onboardingChannels.map((channelId) => receive({
        message: `A user joined the Slack workspace. Onboard them from this event:\n${JSON.stringify(event)}`,
        target: { channelId },
        auth: null,
      })),
    );
  },
});

Esse código demonstra como transformar um único evento em várias ações direcionadas.

Developer configuring event hooks for Slack integration in eve agent Programming Illustration

Limitações e Considerações

Embora esses recursos sejam poderosos, há algumas ressalvas:

  • Requisitos de Escopo: Mensagens em canais públicos exigem o trigger message.channels e o escopo channels:history. Canais privados precisam de message.groups e groups:history. Certifique-se de que seu app do Slack tenha as permissões corretas.
  • Estado da Sessão: Resetar uma sessão a encerra permanentemente; não há desfazer. Tenha uma lógica robusta.
  • Limites de Taxa: Com reações baseadas em eventos, você pode atingir limites de taxa da API do Slack se houver alto tráfego. Planeje adequadamente.

Próximos Passos para Aprender

Para aproveitar ao máximo a integração do eve com o Slack:

  1. Leia a documentação oficial do canal do Slack para entender todas as opções.
  2. Experimente diferentes tipos de eventos para ver o que funciona melhor para seu caso.
  3. Combine com outras funcionalidades como a abordagem de testes JIT para desenvolvimento agêntico para garantir que seu agente seja confiável antes do deploy.

Diagram of Slack event flow to eve agent with session management Technical Structure Concept

Conclusão: Abrace a Era Agêntica

Esta atualização marca um passo significativo em direção a agentes do Slack mais autônomos e interativos. Ao usar esses novos hooks, você pode construir agentes que parecem mais humanos e responsivos. Comece implementando o hook onMessage para habilitar continuidade em threads, depois explore onEvent para ações proativas. Lembre-se de testar bem—considere adotar práticas de testes just-in-time para garantir que seu agente se comporte corretamente em produção.

Boa construção!


Artigos Relacionados:

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.