/** * El trigger de Microsoft Teams (`serviceConfig.teams`): lo que se le pregunta * a quien lo configura, en un solo sitio para el DTO del api y la pantalla * del dashboard (diseño `plans/microsoft-teams.md` §6.1). * * ## Nada viene elegido * * La fuente (`source`), qué dispara (`fires`) y qué hacer con los mensajes de * la propia cuenta (`fromMe`) son preguntas SIN defecto: `null` = sin * contestar, y Activate no se deja pulsar hasta que estén las tres y el * recurso de la fuente ({@link teamsTriggerSinContestar}). * * `fromMe` es obligatorio porque en Teams el auto-disparo es fácil: un flujo * que publica en el mismo canal que vigila se dispararía a sí mismo (lo que * le pasó a Outlook, con dos corridas de más). La pantalla recomienda «Skip». * * El mecanismo (suscripción de Graph siempre `created,updated`, compartida * entre triggers del mismo canal o chat, y `fires` aplicado al leer) vive en * el api; aquí sólo la forma de la configuración. */ /** El `service` del trigger. */ export declare const TEAMS_TRIGGER_SERVICE = "teams"; /** Qué se vigila: un canal de un equipo, un chat, o todos los chats de la cuenta. */ export declare const TEAMS_TRIGGER_FUENTES: readonly ["channel", "chat", "allChats"]; export type TeamsTriggerFuente = (typeof TEAMS_TRIGGER_FUENTES)[number]; /** Qué dispara: sólo mensajes nuevos, o nuevos y editados. */ export declare const TEAMS_TRIGGER_DISPAROS: readonly ["new", "newAndEdited"]; export type TeamsTriggerDisparo = (typeof TEAMS_TRIGGER_DISPAROS)[number]; /** Los mensajes que manda la propia cuenta conectada: saltarlos o incluirlos. */ export declare const TEAMS_TRIGGER_MENSAJES_PROPIOS: readonly ["skip", "include"]; export type TeamsTriggerMensajesPropios = (typeof TEAMS_TRIGGER_MENSAJES_PROPIOS)[number]; /** «Only messages containing»: lo más largo que se acepta. */ export declare const TEAMS_TRIGGER_CONTIENE_MAXIMO = 255; /** Lo más largo que se acepta en un id de equipo, canal o chat. */ export declare const TEAMS_TRIGGER_ID_MAXIMO = 512; export interface TeamsTriggerConfig { /** Sin defecto: `null` = sin contestar. */ source: TeamsTriggerFuente | null; /** Con `channel`. */ teamId?: string | null; channelId?: string | null; /** Con `chat`. */ chatId?: string | null; /** Sin defecto: `null` = sin contestar. */ fires: TeamsTriggerDisparo | null; /** Sin defecto: `null` = sin contestar. */ fromMe: TeamsTriggerMensajesPropios | null; /** Sólo los mensajes que contienen esto (sin mayúsculas, sobre el texto). */ contains?: string | null; /** Sólo cuando la cuenta conectada sale @mencionada. */ mentionsMe?: boolean; /** Sólo posts nuevos, no respuestas (sólo con `channel`). */ postsOnly?: boolean; } /** * Lo que falta por contestar antes de activar, por nombre de campo y en el * orden de la pantalla. Vacío = se puede activar. La fuente pide su recurso: * `channel` el equipo y el canal, `chat` el chat; `allChats`, nada más. */ export declare function teamsTriggerSinContestar(cfg: Partial | null | undefined): string[];