Adaptador web-client
Puppeteer + Chrome dentro de Xvfb. Sin clave SDK de Teams, sin consentimiento de admin en tu tenant — el bot se une a la URL de reunión como cualquier invitado anónimo.
bot api · microsoft teams
disponible hoyMete una URL teams.microsoft.com o teams.live.com en POST /v1/bots; nos unimos vía el cliente web como invitado anónimo, capturamos audio por hablante, y emitimos un webhook firmado con la ruta del manifiesto al salir.
resumen
Solo cliente web, por diseño. Sin clave de SDK nativo de Teams requerida, sin app instalable de Teams que registrar, sin consentimiento de admin en tu tenant. El bot conduce un Chrome pilotado por Puppeteer que carga teams.microsoft.com/meetingjoin con la URL que enviaste, rellena el formulario de unión con tu displayName, y aterriza en la sala de espera para que el host admita. Mismo contenedor Docker, mismo orquestador, mismo contrato de webhook que los adaptadores Meet y Zoom.
Captions + nombres. Teams envía eventos de caption finalizados a través de un canal de datos que interceptamos dentro del Chrome del bot — no raspamos el DOM de la UI de captions, así los captions no se caen cuando los participantes redimensionan ventanas o mueven paneles. Los nombres reales de participantes vienen del panel People (que Teams mantiene estable a través de sus rediseños de UI); el audio es por hablante indexado por el mapeo SSRC de WebRTC igual que el adaptador Meet.
Lo que aún no está aquí. Sin camino de bot de cumplimiento aún — eso es el item de hoja de ruta Q4 /product/compliance-recording-api. Sin Teams Live Events (broadcast, no reunión). Sin reuniones legacy de Skype-for-Business (deprecado por MS de todas formas). Para todo lo demás — reuniones Teams programadas, sesiones meet-now ad-hoc, reuniones de canal, breakout rooms (sala única) — el adaptador web lo maneja hoy, al mismo $0,30/h plano que Meet y Zoom.
lo que recibes
Puppeteer + Chrome dentro de Xvfb. Sin clave SDK de Teams, sin consentimiento de admin en tu tenant — el bot se une a la URL de reunión como cualquier invitado anónimo.
Tapamos el WebSocket de eventos de caption de Teams dentro de la página para que los captions sean estables a través de rediseños de UI y redimensionamientos de ventana.
Nombres reales de participantes del panel People, unidos a audio por hablante vía SSRC de WebRTC. Sin anonimato 'speaker_2' en el JSONL.
El bot espera en la sala de espera para que el organizador admita. Sub-código lobby_timeout en el webhook si nadie admite dentro de la ventana configurada.
Captura de pestaña en VP9 y mensajes de chat entrantes, misma forma que las salidas Meet/Zoom. Drop-in si ya consumes la API del bot.
host_denied_admission, lobby_timeout, removed_from_meeting, meeting_ended, recording_disabled — surgen en el webhook de finalización.