Introducción: La Evolución de los Agentes de Slack
Los agentes de Slack siempre han estado limitados a patrones simples de comando-respuesta. Pero con el auge de la IA agéntica, necesitan manejar conversaciones complejas de múltiples turnos y eventos proactivos. La última actualización de eve trae un conjunto de características que cambian el juego: mensajes conscientes de sesión, cancelación, reinicio y reacciones a eventos.
Ya no es necesario mencionar al bot cada vez. Ahora tu agente puede mantener contexto y actuar autónomamente dentro de un hilo, haciendo las interacciones más naturales y eficientes.
Características Principales
- Respuestas Autónomas en Hilos: Sin repetir menciones.
- Control de Sesión: Cancela respuestas en progreso o reinicia conversaciones enteras.
- Acciones Basadas en Eventos: Reacciona a cualquier evento de Slack que tu app suscriba.

Inmersión Profunda: Implementando los Nuevos Hooks
Continuando Conversaciones Sin Menciones Repetidas
El núcleo de esta actualización es el hook onMessage. Recibe mensajes de Slack y usa dos funciones auxiliares: ctx.isBotMentioned() y ctx.isSubscribed(). La última verifica si el mensaje pertenece a un hilo con una sesión activa. Esto significa que, una vez que tu agente está en una conversación, puede seguir respondiendo sin ser mencionado de nuevo.
Aquí tienes un ejemplo práctico:
// Ejemplo: Despachar DMs, menciones y seguimientos en hilos
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;
},
});
Este código garantiza que tu agente responda a mensajes directos, menciones explícitas y cualquier seguimiento en un hilo activo. Para enrutar según los participantes, usa ctx.thread.listParticipants() para obtener IDs únicos en orden.
Cancelando y Reiniciando Sesiones
Dos helpers de sesión te dan control fino:
ctx.cancel(): Detiene el turno actual pero mantiene la sesión. Llámalo antes de devolver{ auth }para encolar el nuevo mensaje como entrada de reemplazo.ctx.reset(): Termina la sesión por completo. El siguiente mensaje comienza desde cero.
Así implementas un comando de reinicio:
// Ejemplo: Comando de reinicio activado por el usuario
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;
},
});
Manejo de Cualquier Callback de Eventos
El hook onEvent permite que tu agente reaccione a cualquier evento que tu app de Slack suscriba, como reaction_added, team_join o channel_created. Usa ctx.receive() para iniciar un turno del agente, o llámalo varias veces para distribuir eventos.
Por ejemplo, puedes incorporar nuevos miembros en varios canales:
// Ejemplo: Distribuir evento team_join a múltiples canales
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,
})),
);
},
});
Este código demuestra cómo convertir un solo evento en múltiples acciones dirigidas.

Limitaciones y Consideraciones
Aunque estas características son poderosas, hay algunas advertencias:
- Requisitos de Alcance: Mensajes en canales públicos requieren el trigger
message.channelsy el scopechannels:history. Canales privados necesitanmessage.groupsygroups:history. Asegúrate de que tu app de Slack tenga los permisos correctos. - Estado de la Sesión: Reiniciar una sesión la termina permanentemente; no hay deshacer. Ten una lógica robusta.
- Límites de Tasa: Con reacciones basadas en eventos, podrías alcanzar límites de tasa de la API de Slack si hay alto tráfico. Planifica en consecuencia.
Próximos Pasos para Aprender
Para aprovechar al máximo la integración de eve con Slack:
- Lee la documentación oficial del canal de Slack para entender todas las opciones.
- Experimenta con diferentes tipos de eventos para ver qué funciona mejor para tu caso.
- Combina con otras funcionalidades como el enfoque de pruebas JIT para desarrollo agéntico para asegurar que tu agente sea confiable antes del despliegue.

Conclusión: Abraza la Era Agéntica
Esta actualización marca un paso significativo hacia agentes de Slack más autónomos e interactivos. Al usar estos nuevos hooks, puedes construir agentes que se sientan más humanos y receptivos. Comienza implementando el hook onMessage para habilitar continuidad en hilos, luego explora onEvent para acciones proactivas. Recuerda probar bien—considera adoptar prácticas de pruebas just-in-time para garantizar que tu agente se comporte correctamente en producción.
¡Feliz construcción!
Artículos Relacionados: