Cuando un usuario invitado envía un mensaje a un bot en Microsoft Teams, es posible que el bot nunca responda. Este problema ocurre aunque el mismo bot funcione para usuarios internos. La causa principal suele ser una discrepancia entre la configuración de autenticación del bot y el contexto de inquilino del usuario invitado. Este artículo explica por qué falla el bot y proporciona soluciones paso a paso tanto para el administrador de Teams como para el desarrollador del bot.
Los usuarios invitados en Teams son identidades externas agregadas a su inquilino. Tienen acceso limitado y a menudo desencadenan flujos de autenticación diferentes. Los bots que dependen de tokens de Azure AD a veces rechazan estos flujos porque la audiencia del token o el ID de inquilino no coinciden. Las soluciones a continuación cubren cambios de directiva, actualizaciones de permisos de aplicaciones y ajustes a nivel de código.
Puntos clave: solución de la falta de respuesta del bot para usuarios invitados
- Centro de administración de Teams > Configuración de toda la organización > Acceso de invitados: Active el acceso de invitados y asegúrese de que la aplicación del bot esté permitida para usuarios externos.
- Manifiesto de la aplicación de Azure AD > oauth2AllowImplicitFlow: Establezca este valor en true para habilitar el flujo implícito que muchos bots de Teams usan para el inicio de sesión de invitados.
- Código del bot > método OnTurnAsync: Compruebe el ID de inquilino en la actividad entrante y gestione los inquilinos invitados sin generar una excepción.
Por qué un bot de Teams ignora a los usuarios invitados
Los bots en Teams se registran como aplicaciones de Azure AD. Cuando un usuario chatea con un bot, Teams envía una actividad al punto de conexión del bot. Luego, el bot valida la identidad del usuario mediante el token de la solicitud. Para los usuarios internos, el token contiene el ID del inquilino principal. Para los usuarios invitados, el token puede contener el ID del inquilino invitado o un ID combinado. Si el código del bot solo acepta el inquilino principal, rechaza silenciosamente la solicitud del invitado.
Otra causa común es la directiva de permisos de aplicaciones. Los administradores de Teams pueden restringir qué aplicaciones están disponibles para los usuarios invitados. Aunque el bot esté instalado en un canal, es posible que un invitado no tenga permiso para interactuar con él. El bot parece no responder porque el mensaje del usuario nunca llega al punto de conexión del bot.
Por último, el flujo de autenticación del bot puede no admitir la concesión implícita. Muchos bots de Teams usan el flujo implícito de Azure AD para obtener tokens. Si el registro de la aplicación no permite este flujo, los usuarios invitados que no pueden completar el inicio de sesión interactivo no verán respuesta.
Acceso de invitados y contexto de inquilino
Cuando un usuario invitado envía un mensaje, el objeto de actividad contiene un campo tenant.id. Este valor puede diferir del inquilino donde está registrado el bot. El bot debe comparar este ID con su propio ID de inquilino y responder en consecuencia. Si el bot no gestiona la discrepancia, simplemente descarta el mensaje.
Pasos para diagnosticar y solucionar la falta de respuesta del bot
Siga estos pasos en orden. Cada paso aborda una causa específica. Es posible que deba realizar todos ellos para resolver completamente el problema.
- Verifique que el acceso de invitados esté habilitado en Teams
Vaya al Centro de administración de Teams enadmin.teams.microsoft.com. Seleccione Configuración de toda la organización y luego Acceso de invitados. Confirme que Permitir el acceso de invitados en Microsoft Teams esté activado. Si está desactivado, actívelo y guarde el cambio. Espere hasta 24 horas para que el cambio se propague. - Compruebe la directiva de permisos de aplicaciones para invitados
En el Centro de administración de Teams, vaya a Directivas de mensajería. Seleccione la directiva asignada al usuario invitado. Asegúrese de que Chat privado esté habilitado. También revise Permisos de aplicaciones en Administrar aplicaciones y confirme que la aplicación del bot esté permitida. Si la aplicación está bloqueada, permítala y guarde. - Revise el registro de la aplicación de Azure AD
Abra el Portal de Azure y vaya a Azure Active Directory > Registros de aplicaciones. Busque la aplicación que representa su bot. Seleccione Autenticación. En Concesión implícita y flujos híbridos, marque tanto Tokens de acceso como Tokens de ID. Guarde los cambios. - Actualice el código del bot para gestionar los ID de inquilinos invitados
En el métodoOnTurnAsyncde su bot, inspeccione el objetoChannelDataoConversationde la actividad. Busque la propiedadtenant.id. Si no coincide con el ID de inquilino de su bot, no genere una excepción. En su lugar, responda con un mensaje que reconozca al usuario invitado. Este simple cambio evita que el bot parezca inactivo. - Pruebe con una cuenta de invitado
Cree una cuenta de invitado de prueba en su inquilino. Invite al invitado a un equipo donde esté instalado el bot. Envíe un mensaje al bot. Observe la respuesta del bot. Si aún falla, revise los registros del bot en busca de errores relacionados con la validación de tokens o la discrepancia de inquilino. - Use el Emulador de Bot Framework para pruebas locales
Ejecute su bot localmente y use el Emulador de Bot Framework para enviar una actividad con un ID de inquilino invitado. Esta herramienta le permite simular una solicitud de invitado sin necesidad de una cuenta de invitado real. Si el bot responde en el emulador, es probable que el problema esté en la configuración de Teams, no en el código.
Ajuste del código de autenticación del bot
Si su bot usa el SDK de Bot Framework, puede establecer la propiedad AllowedTenants en su adaptador o controlador. Esta propiedad acepta una lista de ID de inquilinos que tienen permitido acceder al bot. Agregue el ID del inquilino invitado a esta lista. Por ejemplo, en C# podría escribir:
options.AllowedTenants = new List<string> { "your-tenant-id", "guest-tenant-id" };
Este enfoque indica al bot que acepte tokens del inquilino invitado. Sin esto, el bot rechaza el token y permanece en silencio.
Si el bot aún no responde
El usuario invitado no puede ver el bot en el chat
Si el invitado ni siquiera puede encontrar el bot, es posible que la aplicación no esté instalada en el ámbito personal del invitado. Pida al propietario del equipo que agregue el bot al canal nuevamente. En el equipo, seleccione el icono Aplicaciones, busque el bot y haga clic en Agregar. El bot aparecerá en el canal para todos los miembros, incluidos los invitados.
El bot responde solo a usuarios internos
Este síntoma apunta a un problema de código. Es probable que el bot compruebe el dominio de correo electrónico o el ID de inquilino del usuario y rechace a los usuarios externos. Revise su middleware de autenticación. Elimine cualquier comprobación de dominio codificada de forma rígida. Use la lista AllowedTenants en su lugar, como se muestra arriba.
El invitado recibe un error “El bot no está disponible”
Este error suele aparecer cuando el punto de conexión del bot no es accesible. Compruebe el estado del servicio de hospedaje del bot. Si el bot está hospedado en Azure, verifique que el servicio de aplicaciones esté en ejecución. También confirme que la URL del punto de conexión de mensajería en el registro del bot sea correcta y use HTTPS.
Nueva experiencia del bot para invitados de Teams frente a la experiencia del usuario interno: diferencias clave
| Elemento | Usuario invitado | Usuario interno |
|---|---|---|
| ID de inquilino en la actividad | Inquilino invitado o ID combinado | ID del inquilino principal |
| Flujo de autenticación | Puede requerir flujo implícito | Flujo OAuth estándar |
| Directiva de permisos de aplicaciones | Puede estar restringida por el administrador | Generalmente permitida de forma predeterminada |
| Comportamiento de respuesta del bot | Silencioso si hay discrepancia de inquilino | Responde con normalidad |
Comprender estas diferencias le ayuda a diagnosticar el problema más rápido. La tabla muestra que la variable principal es el contexto de inquilino y el método de autenticación.
Después de aplicar las soluciones, vuelva a probar con una cuenta de invitado. El bot ahora debería responder a los mensajes de invitados. Para escenarios avanzados, considere usar el método TeamsInfo.getMember para obtener los detalles del perfil del invitado. Este método le ayuda a personalizar las respuestas para usuarios invitados según su identidad externa.