> For the complete documentation index, see [llms.txt](https://docs.editran.onesait.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.editran.onesait.com/documentacion-editran/connect-3.2/api/ejemplos/01_upload-send.md).

# 01 - ejemplo script - upload-send

Este script se presenta como un ejemplo práctico para ilustrar el posible uso de las APIs de Editran, mostrando cómo integrarlas en procesos automatizados mediante PowerShell. Su objetivo es servir como referencia para desarrolladores y administradores que deseen implementar soluciones similares en sus entornos.

Tiene el script disponible en:

{% file src="/files/FWjTWCCmqU38qbMcHeDc" %}

El script upload-send.ps1 ha sido diseñado para simplificar y automatizar el proceso de subida y envío de ficheros a canales de comunicación dentro de entornos que requieren una gestión eficiente y segura de datos. Este documento describe el funcionamiento del script, sus parámetros, el flujo de ejecución y ejemplos prácticos para facilitar su uso tanto en escenarios interactivos como en procesos automatizados.

La herramienta está orientada a entornos Windows y multiplataforma, garantizando compatibilidad con PowerShell 5.x y PowerShell 7+, evitando dependencias específicas que limiten su portabilidad. Gracias a su estructura modular, el script permite validar credenciales, actualizar directorios y ejecutar la emisión del canal de forma controlada, mostrando mensajes claros de progreso y errores.

El script **`upload-send.ps1`** automatiza el proceso de **subir un fichero a un canal** de emisión, o bidireccional, y realizar **el envío del canal**.

Consta de cuatro fases principales:

1. **Validación de las credenciales** Validación del usuario y contraseña especificados.
2. **Recuperación de directorios** Obtiene los directorios del canal indicado.
3. **Actualización de directorios** Actualiza los directorios del canal indicado con la ruta del fichero especificado.
4. **Emisión del canal**\
   Realiza la emision del canal especificado.

***

## Parámetros

| Nombre        | Obligatorio | Descripción                                                                         |
| ------------- | ----------- | ----------------------------------------------------------------------------------- |
| `servidor`    | Sí          | Servidor (http\:// o https\:// opcional, por defecto se usa https).                 |
| `usuario`     | Sí          | Identificación del usuario (correo electrónico o nombre de cuenta).                 |
| `password`    | Sí          | Contraseña asociada al usuario. Puede pasarse por argumento o pedirse en ejecución. |
| `codigoCanal` | Sí          | Código del canal en formato `local-remoto-aplicacion`.                              |
| `ruta`        | Sí          | Ruta completa del fichero que se desea subir.                                       |

***

## Flujo del script

1. Solicita o recibe los parámetros.
2. Realiza la validación del usuario.
3. Si la validación es correcta, actualiza los directorios del canal con la ruta del fichero.
4. Si no hay errores, realiza la emisión del canal.
5. Muestra mensajes de progreso y errores por consola.

En caso de error en cualquiera de las funciones, se detiene la ejecución y se muestra un mensaje descriptivo.

***

## Compatibilidad

* **PowerShell 5.x (Windows clásico)**
* **PowerShell 7+ (Core / multiplataforma)**

El script evita el uso de características específicas de PS7 para mantener compatibilidad con ambos entornos.

***

## Ejemplos de uso

### 1. Ejecución para mostrar la ayuda

```powershell
PS> powershell -ExecutionPolicy Bypass -File ".\upload-send.ps1" -help
```

Salida esperada:

```txt
Sintaxis:
    upload-send [-options]
           (para subir un fichero a un canal determinado y realizar el envío)
   o  upload-send -help | -h
           (para mostrar esta ayuda)

donde las opciones incluyen:
    -servidor <host[:puerto]>
           Servidor (http:// o https:// opcional, por defecto se usa https)
    -usuario <usuario>
           Identificación (correo electrónico) del usuario
    -password <password>
           Contraseña del usuario
    -codigoCanal <local-remoto-aplicacion>
           Código del canal en formato local-remoto-aplicacion
    -rutaFichero <ruta>
           Ruta completa del fichero a subir y enviar
    -help | -h
           Muestra esta ayuda
```

### 2. Ejecución directa con parámetros

```powershell
PS> powershell -ExecutionPolicy Bypass -File ".\upload-send.ps1"
    -servidor "MiServidor"
    -usuario "user@empresa.com"
    -password "MiClaveSegura"
    -codigoCanal "local-remoto-app"
    -ruta "C:\temp\fichero.xml"
```

### 3. Ejecución solicitando parámetros de forma interactiva

```powershell
PS> powershell -ExecutionPolicy Bypass -File ".\upload-send.ps1"
```

```txt
Servidor: MiServidor
Identificación (correo electrónico) del usuario: user@empresa.com
Contraseña del usuario: MiClaveSegura
Código del canal (formato: local-remoto-aplicacion): local-remoto-app
Ruta completa del fichero a subir y enviar: C:\temp\fichero.xml
```

### 4. Ejecución alternativa: inicializando parámetros en el fichero

En lugar de pasar todos los parámetros por la línea de comandos, es posible definirlos inicializarlos en el script. Esto puede ser útil para ejecuciones recurrentes o automatizadas.

1. Editar el script.
2. Modificar el bloque siguiente para inicializar los valores de los parámetros que se desee.

   ```powershell
   # --------------------------------------------------------------------
   #  Inicialización de parámetros
   #  Para asignar un valor por defecto a un parámetro, 
   #  quitar el carácter de comentario '#' del parámetro correspondiente
   # --------------------------------------------------------------------
   # $servidor = ''
   # $usuario = ''
   # $password = ''
   # $codigoCanal = ''
   # $rutaFichero = ''
   ```
3. Guardar el script.
4. Ejecutar el script: solicitando de forma interactiva los parámetros que no se han inicializado (punto 3) o bien, informando los parámetros que no se han inicializado (punto 2).

***

### Ejemplo de fichero de parámetros (`config.txt`)

```powershell
# Parámetros de configuración para upload-send
servidor=https://mi-servidor.com:8443
usuario=usuario@ejemplo.com
password=MiPasswordSecreto
codigoCanal=local-remoto-aplicacion
rutaFichero=C:\ruta\al\fichero.txt
```

## Salida esperada

```txt
===============================================
      SCRIPT DE SUBIDA Y ENVÍO DE FICHEROS
===============================================
Este script permite subir un fichero a un canal
y ejecutar el envío correspondiente en Connect.


===============================================
                DATOS VALIDADOS
===============================================
Servidor: MiServidor
Usuario: user@empresa.com
Contraseña: ********
Código del canal: local-remoto-app
Ruta del fichero: C:\temp\fichero.xml
===============================================

Validando credenciales...
[OK] Acceso autorizado

Obteniendo directorios del canal...
[OK] Se han obtenido correctamente los directorios del canal local-remoto-app

Actualizando directorios del canal...
[OK] Se han actualizado correctamente los directorios del canal local-remoto-app

Realizando emisión del canal...
[OK] Se ha realizado correctamente la emisión del canal local-remoto-app
```

## Salida con errores

Si ocurre un error se mostrará un mensaje en rojo con el detalle, y no se continúa con el proceso.

Ejemplo:

```txt
===============================================
      SCRIPT DE SUBIDA Y ENVÍO DE FICHEROS
===============================================
Este script permite subir un fichero a un canal
y ejecutar el envío correspondiente en Connect.


===============================================
                DATOS VALIDADOS
===============================================
Servidor: MiServidor
Usuario: user@empresa.com
Contraseña: ********
Código del canal: local-remoto-app
Ruta del fichero: C:\temp\fichero.xml
===============================================

Validando credenciales...
[OK] Acceso autorizado

Obteniendo directorios del canal...
[OK] Se han obtenido correctamente los directorios del canal local-remoto-app

Actualizando directorios del canal...
[OK] Se han actualizado correctamente los directorios del canal local-remoto-app

Realizando emisión del canal...
[ERROR] Trying to add a send directory to a reception channel (400)
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.editran.onesait.com/documentacion-editran/connect-3.2/api/ejemplos/01_upload-send.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
