Microsoft Teams
Conecta el agente a Microsoft Teams mediante el Bot Framework (single-tenant), con un manifiesto listo para publicar.
Microsoft Teams
La integración con Microsoft Teams permite que el agente responda mensajes directamente en el chat de tu organización, mediante un bot registrado en Azure / Bot Framework.
Accede desde el icono Configuración → pestaña Integraciones → tarjeta Microsoft Teams.
Activar la integración
Activa el interruptor de la tarjeta de Microsoft Teams. Los campos de configuración aparecen una vez activado.
Cómo funciona
- Teams envía una activity (un mensaje, la entrada a una conversación, un adjunto) al endpoint público de Roberty.
- Roberty valida el JWT que emitió el Bot Framework (
aud= elappIddel bot). - Se resuelve y se ejecuta el agente correspondiente al
tenantIddel payload. - La respuesta vuelve a Teams por la API
serviceUrldel propio Bot Framework, autenticada con OAuth2client_credentials.
Roberty guarda el historial de cada conversación (por conversationId), respetando la configuración de Memoria del agente, para que tenga contexto entre mensajes.
Los campos de configuración
| Campo | Qué es |
|---|---|
| Tenant ID | El ID del tenant de Azure Active Directory (un UUID) |
| App ID (Bot) | El Application (client) ID del App Registration creado en el portal de Azure |
| App Password | El client secret de la aplicación registrada |
| Mensaje de bienvenida | Se muestra cuando un usuario inicia una conversación en Teams (opcional) |
Requisitos previos
- Un App Registration y un Azure Bot (Azure Bot Service).
- Del App Registration necesitas:
- Application (client) ID →
appId - Client secret →
appPassword - Directory (tenant) ID →
tenantId
- Application (client) ID →
El bot solo autentica en su propio tenant, así que el App Registration tiene que existir en el mismo tenant que el Teams donde se va a usar. Si tu cuenta de Azure vive en un tenant distinto del de Microsoft 365/Teams, crea el App Registration en el tenant de Teams (App registrations pertenece a Entra ID y no exige suscripción de Azure). El recurso Azure Bot puede quedarse en tu suscripción, apuntando a esa app.
Configurar el bot en Azure
1. Crear el App Registration (en el tenant de Teams)
- En portal.azure.com, cambia el directorio al tenant de Teams.
- Microsoft Entra ID → App registrations → New registration.
- En Supported account types, elige Accounts in this organizational directory only (single-tenant).
- Anota el Application (client) ID y el Directory (tenant) ID.
- En Certificates & secrets → New client secret, genera uno y copia el value (se muestra una sola vez).
2. Crear el Azure Bot
- Create a resource → Azure Bot, tipo Single Tenant, opción Use existing app registration.
- Introduce el App ID y el App tenant ID (el Directory ID del paso anterior).
- En Configuration → Messaging endpoint, introduce:
https://agent-backend.roberty.app/integrations/teams
- En Channels, añade el canal Microsoft Teams.
Roberty usa una única ruta para Teams y resuelve el agente a partir del tenantId del payload.
3. Configurar el agente en Roberty
En esta pantalla, rellena Tenant ID, App ID, App Password y, si quieres, el mensaje de bienvenida.
4. Descargar el manifiesto y publicarlo en Teams
Usa Descargar manifiesto (.zip) en la tarjeta de Teams: construye un paquete listo (manifest.json más iconos) con el nombre y la descripción del agente y el App ID que introdujiste. El botón se habilita cuando hay un App ID relleno y una versión publicada del agente.
En el cliente de Teams: Apps → Manage your apps → Upload an app → Upload a custom app, y selecciona el .zip. (Subir apps personalizadas tiene que estar permitido en la administración de Teams.)
Qué admite
- Memoria de conversación: el historial se guarda por conversación y lo limita la ventana definida en la Memoria del agente.
- Terminar una conversación: el usuario puede enviar
/reset(o/novaconversa,/encerrar,/limpar,/clear,/new) para cerrarla: el agente escribe un mensaje de cierre y el historial se borra. - Adjuntos: a los archivos enviados en el chat se les extrae el texto y se le entrega al agente. Los documentos (PDF, DOCX y similares) funcionan de forma nativa; las imágenes dependen del OCR.
Validación de seguridad
Roberty valida cada petición:
- La cabecera
Authorization: Bearer <jwt>se contrasta con las claves públicas dehttps://login.botframework.com/v1/.well-known/keys. - La audiencia del token debe coincidir con el
appIdconfigurado en el agente. - El emisor debe ser
https://api.botframework.comohttps://sts.windows.net/<tenantId>/.
Las peticiones sin token, o con uno inválido, reciben un 401.
Solución de problemas
| Síntoma | Causa probable |
|---|---|
AADSTS700016: Application ... was not found in the directory | El App Registration no está en el tenant que se usa para autenticar: tiene que existir en el tenant de Teams (tenantId). |
401 Invalid token | El appId configurado en el agente no coincide con el del App Registration. |
404 Agent not configured for tenant | El tenantId del agente no coincide con el de la organización que envió el mensaje. |
| El bot aparece «escribiendo» y nunca responde | El appPassword es incorrecto o caducó; revisa el secret. |
| El mensaje de bienvenida no aparece | El evento conversationUpdate nunca llegó, o welcomeMessage está en blanco. |
| El manifiesto no valida al subirlo | El App ID no es un GUID válido, o el agente no tiene ninguna versión publicada. |