Puente Power Automate, servidor local del tablero HTML v7 y exportacion a Excel/TSV para monitoreo de proyectos en Microsoft Planner. Co-authored-by: Cursor <cursoragent@cursor.com>
4 KiB
Power Automate — Webhook al cambiar tareas en Planner
Este flujo notifica al tablero cuando alguien crea o modifica una tarea en Planner. El tablero se actualiza solo entonces, sin consultar cada X segundos.
Planner (tarea creada/modificada)
↓
Power Automate (flujo automatico)
↓ POST
Python /api/webhook/planner-changed
↓
Servidor refresca datos + avisa a Chrome (SSE)
Requisitos
python run_tablero.pycorriendo en un PC de la red (siempre encendido en horario de uso).- Ese PC accesible desde internet de Microsoft (red de oficina; PA no alcanza
localhost). - En
.env:
DASHBOARD_USE_EVENTS=true
DASHBOARD_WEBHOOK_SECRET=tu_secreto_largo_aqui
DASHBOARD_WEBHOOK_DEBOUNCE_SECONDS=3
DASHBOARD_FALLBACK_POLL_SECONDS=0
Genera un secreto aleatorio (ej. Sapian-Tablero-2026-Xk9mP2).
Paso 1 — Obtener la URL del webhook
Al iniciar el servidor veras algo como:
Webhook PA: http://192.168.69.147:8765/api/webhook/planner-changed
URL completa con secreto (para Power Automate):
http://192.168.69.147:8765/api/webhook/planner-changed?secret=tu_secreto_largo_aqui
Reemplaza la IP por la de tu PC servidor (
ipconfig).
Paso 2 — Crear el flujo en Power Automate
- make.powerautomate.com → Crear → Flujo automatizado en la nube.
- Nombre:
Tablero RTC - Avisar cambios Planner.
Trigger
Busca y elige Planner:
| Opcion | Configuracion |
|---|---|
| Cuando se crea una tarea | Grupo / Plan: tu equipo de proyectos |
| Cuando se modifica una tarea | Mismo grupo / plan |
Puedes usar dos triggers en el mismo flujo (ambos disparan la misma accion).
Si tienes varios planes, repite el trigger por plan o usa un flujo por plan.
Accion — HTTP POST al tablero
| Campo | Valor |
|---|---|
| Accion | HTTP → POST |
| URI | http://TU_IP:8765/api/webhook/planner-changed?secret=TU_SECRETO |
| Encabezados | Content-Type = application/json |
| Cuerpo | Ver JSON abajo |
Cuerpo sugerido (JSON):
{
"origen": "power_automate",
"plan_id": "@{triggerOutputs()?['body/planId']}",
"tarea_id": "@{triggerOutputs()?['body/id']}",
"titulo": "@{triggerOutputs()?['body/title']}"
}
Los campos son opcionales; el servidor solo necesita recibir el POST.
- Guardar y Activar el flujo.
Paso 3 — Probar
- Inicia el tablero:
python run_tablero.py - Abre
http://localhost:8765/en Chrome. - En Planner, edita una tarea (cambia titulo, % o estado).
- En la consola del servidor deberias ver:
[WEBHOOK] Cambio detectado en Planner (...)
[WEBHOOK] Datos actualizados. Clientes SSE notificados: 1
- El tablero se actualiza sin recargar F5.
Debounce (agrupar cambios)
Si editas varias tareas seguidas, el servidor espera 3 segundos (configurable) y hace una sola consulta a Planner. Evita saturar Power Automate.
DASHBOARD_WEBHOOK_DEBOUNCE_SECONDS=3
Respaldo opcional (polling)
Si el webhook falla temporalmente, puedes activar un respaldo lento:
DASHBOARD_FALLBACK_POLL_SECONDS=300
Eso consulta cada 5 minutos solo como red de seguridad. Con 0 (default) no hay polling.
Errores comunes
| Problema | Solucion |
|---|---|
| PA no llega al webhook | Usa IP de red, no localhost. Abre puerto 8765 en firewall. |
| 401 Unauthorized | El secret en la URL debe coincidir con .env. |
| Tablero no cambia | Verifica que el flujo PA este Activado y el historial muestre ejecuciones OK. |
| SSE desconectado | Chrome reconecta solo; revisa que el servidor siga corriendo. |
Flujos que necesitas en total
| Flujo | Funcion |
|---|---|
| Puente Planner a Python (ya existente) | Responde con JSON cuando Python pide datos (POWER_AUTOMATE_URL) |
| Avisar cambios Planner (este) | Avisa al tablero cuando hay cambios (/api/webhook/planner-changed) |
Son dos flujos distintos en Power Automate.