Ir al contenido

Operar NORA con IA

Esta página tiene dos usos: que una IA (un agente, un copiloto) sepa operar NORA, y que le pegues el contexto correcto para que te ayude a construir robots e integraciones sin adivinar.

NORA publica su documentación en formato llms.txt, pensado para modelos de lenguaje:

ArchivoQué esCuándo usarlo
/llms.txtÍndice: títulos, descripciones y enlaces de toda la doc.Para que la IA sepa qué existe y navegue.
/llms-full.txtVolcado completo de toda la doc en Markdown.Para pegar todo el conocimiento de NORA como contexto.
/llms-small.txtVersión compacta.Cuando la ventana de contexto es limitada.
  1. Una máquina Windows/macOS con el agente instalado es donde corre el robot; debe estar Online.
  2. Un proceso es tu código Python (un release) que el agente ejecuta como un job.
  3. Una cola reparte unidades de trabajo entre robots; los assets guardan credenciales cifradas que el robot lee en runtime.
  4. El job se dispara a mano, por cron o por webhook/API, y se vigila con logs, progreso y detección de anomalías.

El robot habla con la plataforma con from nora_agent import sdk. Los sistemas externos hablan con la API pública (https://nora-api.valisoftconsulting.com/api/v1, cabecera X-API-Key, respuestas {"success": true, "data": ...}).

Cada receta dice el objetivo y la llamada exacta. Las firmas completas están en la Lámina de comandos.

Quiero…LlamadaVer
Loguear un hitosdk.log("info", "mensaje", {"clave": valor})SDK
Reportar avancesdk.update_progress(50, "mitad")SDK
Leer un argumento de entradames = sdk.get_input("mes") (declarado en nora.json)Argumentos
Devolver un resultadosdk.set_output({"total": 142})Argumentos
Leer una credencialcred = sdk.get_asset("portal"); cred["username"], cred["value"]Assets
Tomar el siguiente item de una colaitem = sdk.get_queue_item("MiCola") (None si vacía)Colas
Cerrar un item OK / con errorsdk.complete_queue_item("MiCola", item["id"], {...}) · sdk.fail_queue_item(..., "motivo")Colas
Encolar trabajo desde el robotsdk.add_queue_items("MiCola", lista_de_dicts)Colas
Pedir aprobación humana de un itemsdk.send_queue_item_for_review("MiCola", item["id"]) + sdk.wait_for_queue_review(...)Colas
Preguntarle algo al operadorsdk.ask_user("¿Continúo?", ["Sí", "No"])SDK
Salir limpio si piden Stopif sdk.should_stop(): returnTutorial 3
Usar la resolución correctaleer NORA_DISPLAY_WIDTH/HEIGHT antes que la del SOSDK
Quiero…LlamadaScopeVer
Listar procesosGET /processes/listdata[].idprocesses:readAutenticación
Disparar un jobPOST /jobs/trigger con {"process_id":"…"} (machine_id opcional: si se omite, NORA elige una máquina online)jobs:writeDisparar jobs
Ver el estado/resultado de un jobGET /jobs/{id} (patrón de polling)jobs:readConsultar jobs
Cargar muchos items en una colaPOST /queues/by-name/{name}/items/bulkqueues:writeColas vía API
Leer un assetGET /assets/by-name/{name}?environment=productionassets:readAssets vía API
Disparar por webhook fijoPOST /webhooks/trigger/{process_id}ninguno (requiere feature webhooks)Webhooks
Quiero…CómoVer
Programar por horarioPOST /api/v1/schedules (cron + zona horaria)Programaciones
Crear un trigger de webhook con HMACPOST /api/v1/triggers (devuelve token+secret)Triggers
Disparar el trigger entrante (emisor)POST /api/v1/triggers/inbound/{webhook_token} con cabecera X-Webhook-Signature: sha256=<HMAC-SHA256 del cuerpo crudo> (clave = webhook_secret); endpoint público (sin X-API-Key); el prefijo sha256= es obligatorioTriggers
Orquestar varios procesosPOST /api/v1/dags + /dags/{id}/executeFlujos DAG
Revisar anomalíasGET /api/v1/anomalies?severity=critical&is_resolved=falseAnomalías

Construir y desplegar un robot (lo que haría una IA)

Sección titulada «Construir y desplegar un robot (lo que haría una IA)»
Ventana de terminal
pip install nora-sdk # SDK + CLI
nora login # sesión
nora dev run main.py # probar con datos en vivo (sin agente)
nora package # empaquetar (auto-versiona, excluye secretos)
nora release push # subir como release
# luego: crear el Proceso en la consola y lanzar/programar el job

Tutorial guiado de punta a punta: Primer robot (RPA Challenge).

  • Nunca poner secretos en el código ni en los datos: usar assets (get_asset). nora package aborta si detecta un secreto.
  • Loguear con sdk.log(...), no con print() (en un job gestionado, print no llega a la plataforma).
  • Las funciones que bloquean esperando al operador (ask_user) y las señales de control (should_stop/get_job_signal) solo funcionan en un job gestionado lanzado desde el Robots Center, no en nora dev run.
  • Cerrar siempre cada item de cola (complete/fail); no dejarlo in_progress.
  • Preferir NORA_DISPLAY_WIDTH/HEIGHT a la resolución del SO en máquinas desatendidas.
  • En nora dev run/dev env el token está acotado a dev/staging (nunca production). Como sdk.get_asset(name) usa environment="production" por defecto, en pruebas locales pasa el entorno explícito: sdk.get_asset("portal", environment="dev"); el default production solo lee assets dentro de un job gestionado.