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.

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.

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.channelse o escopochannels:history. Canais privados precisam demessage.groupsegroups: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:
- Leia a documentação oficial do canal do Slack para entender todas as opções.
- Experimente diferentes tipos de eventos para ver o que funciona melhor para seu caso.
- 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.

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: