Saltar al contenido principal
Integraciones

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

  1. Teams envía una activity (un mensaje, la entrada a una conversación, un adjunto) al endpoint público de Roberty.
  2. Roberty valida el JWT que emitió el Bot Framework (aud = el appId del bot).
  3. Se resuelve y se ejecuta el agente correspondiente al tenantId del payload.
  4. La respuesta vuelve a Teams por la API serviceUrl del propio Bot Framework, autenticada con OAuth2 client_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

CampoQué es
Tenant IDEl 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 PasswordEl client secret de la aplicación registrada
Mensaje de bienvenidaSe 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) IDappId
    • Client secretappPassword
    • Directory (tenant) IDtenantId
El punto crítico: el bot es single-tenant

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)

  1. En portal.azure.com, cambia el directorio al tenant de Teams.
  2. Microsoft Entra ID → App registrations → New registration.
  3. En Supported account types, elige Accounts in this organizational directory only (single-tenant).
  4. Anota el Application (client) ID y el Directory (tenant) ID.
  5. En Certificates & secrets → New client secret, genera uno y copia el value (se muestra una sola vez).

2. Crear el Azure Bot

  1. Create a resource → Azure Bot, tipo Single Tenant, opción Use existing app registration.
  2. Introduce el App ID y el App tenant ID (el Directory ID del paso anterior).
  3. En Configuration → Messaging endpoint, introduce:
https://agent-backend.roberty.app/integrations/teams
  1. En Channels, añade el canal Microsoft Teams.
información

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 de https://login.botframework.com/v1/.well-known/keys.
  • La audiencia del token debe coincidir con el appId configurado en el agente.
  • El emisor debe ser https://api.botframework.com o https://sts.windows.net/<tenantId>/.

Las peticiones sin token, o con uno inválido, reciben un 401.


Solución de problemas

SíntomaCausa probable
AADSTS700016: Application ... was not found in the directoryEl App Registration no está en el tenant que se usa para autenticar: tiene que existir en el tenant de Teams (tenantId).
401 Invalid tokenEl appId configurado en el agente no coincide con el del App Registration.
404 Agent not configured for tenantEl tenantId del agente no coincide con el de la organización que envió el mensaje.
El bot aparece «escribiendo» y nunca respondeEl appPassword es incorrecto o caducó; revisa el secret.
El mensaje de bienvenida no apareceEl evento conversationUpdate nunca llegó, o welcomeMessage está en blanco.
El manifiesto no valida al subirloEl App ID no es un GUID válido, o el agente no tiene ninguna versión publicada.

Referencias