# Microsoft Teams

> Pon a tu agente dentro del Microsoft Teams de tu empresa con un bot de Azure tuyo, sin tienda de apps. Se conecta en 10 minutos y lo instala tu admin con un .zip.

URL: https://www.ghosty.studio/docs/canales/microsoft-teams

Tu agente puede vivir dentro del **Microsoft Teams** de tu empresa: le escriben en un chat directo o lo mencionan en un canal, y contesta con lo que sabe y las herramientas que le diste. No pasa por la tienda de apps de Teams: el bot es **tuyo**, registrado en el Azure de tu empresa, y gs sólo contesta por él.

No confundir con [Ghosty Teams](/docs/canales/teams), el chat de equipo de Ghosty.

## Lo que necesitas

- Acceso al **portal de Azure** de tu empresa (el mismo tenant de tu Microsoft 365) con permiso para crear recursos y registrar apps.
- Que tu **admin de Teams** permita subir apps personalizadas (Teams admin center → Apps → Políticas de configuración).
- El plan gratuito (F0) del Azure Bot alcanza: el canal de Teams no cobra mensajes.

## Conectarlo

1. En Azure, **crea un Azure Bot**. Tipo de app: **Single Tenant**. Plan: **F0**.
2. En el bot, **Canales → Microsoft Teams** y guarda.
3. En **Configuración** copia el **Microsoft App ID** y el **App Tenant ID**. En «Administrar contraseña» crea un **secreto de cliente** y cópialo.
4. En Ghosty, abre la ficha del agente → **Canales → Microsoft Teams** y pega los tres datos. Ghosty los prueba con Microsoft antes de guardarlos; el secreto se guarda cifrado.
5. Copia el **messaging endpoint** que te da Ghosty (`https://www.ghosty.studio/api/mteams/messages/…`) y pégalo en tu Azure Bot → Configuración.
6. Antes de subir nada puedes probarlo: en tu Azure Bot, **Probar en Web Chat** ya contesta con tu agente.
7. Pulsa **Descargar el .zip para Teams** y entrégaselo a tu admin: Teams admin center → **Administrar apps → Cargar nueva app**. En unas horas aparece en «Creado para tu organización».

Si el bot no contesta, la ficha (y `ghosty channels mteams ls <agente>`; en `--json`, `lastError`) dice el último problema: por ejemplo «el token no es para este bot» quiere decir que el messaging endpoint quedó pegado en otro Azure Bot.

## Cómo contesta

- **Chat directo**: cada persona tiene su propia conversación con el agente.
- **Canal o chat de grupo**: el agente contesta en el mismo hilo cuando lo mencionan (`@nombre`), y cada hilo es una conversación aparte. Si en el mensaje mencionas a otra persona, el agente ve su nombre.
- Al instalarlo en un chat o equipo saluda una vez y explica cómo hablarle.
- Lee las imágenes que le pegan y, en chat directo, los archivos que le adjuntan (los archivos de un canal viven en SharePoint y todavía no los lee). Los archivos que genera (PDF, Excel) llegan como liga de descarga.
- Respuestas largas llegan en varios mensajes; mientras piensa se ve «escribiendo…».
- Si le pides un seguimiento o un recordatorio («revísalo mañana a las 9»), el agente se programa y te escribe en el mismo chat o hilo cuando toca.
- `/clear` empieza la conversación de cero.

Por default el canal es de **equipo**: quien escribe en tu Teams es tu gente, así que el agente puede usar las herramientas de administración. Si lo usas para atender a personas de fuera, cambia el rol del canal a «cliente» en la ficha.

## Desde la terminal y la API

```bash
ghosty channels mteams connect <agente> --app-id <guid> --tenant <guid> --name "Sofi"   # secreto en GHOSTY_MTEAMS_SECRET
ghosty channels mteams ls <agente>                     # bots, endpoint, último mensaje y último problema
ghosty channels mteams zip <agente> <bot> --out sofi-teams.zip
ghosty channels mteams off|on|rm <agente> <bot>
```

La API es `GET|POST|PATCH|DELETE /api/v2/agents/{id}/mteams` y `GET /api/v2/agents/{id}/mteams/{botId}/zip` (ver la [referencia de la API](/docs/api/referencia)). Sólo el dueño del agente.
