> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-report-settings.md).

# Configuración de informes de Runbook

Configura ajustes centralizados de entrega por correo electrónico y almacenamiento para los runbooks de informes.

## Resumen

Varios runbooks de RealmJoin incluyen capacidades de informes automatizados para entregar informes, notificaciones y alertas directamente a los administradores. Según la configuración, los informes pueden ser:

* **enviarse por correo electrónico** — usando la API de Microsoft Graph en nombre de una dirección de remitente configurada
* **cargarse en una Storage Account de Azure** — y ponerse a disposición como un enlace de descarga SAS con tiempo limitado

Dar soporte a ambos canales de entrega es el estándar previsto para todos los runbooks de informes a partir de ahora. Es posible que aún no todos los runbooks de informes admitan ambos canales, pero el conjunto de runbooks compatibles está creciendo continuamente. Ambos canales pueden habilitarse de forma independiente o en combinación.

Todos los ajustes compartidos se configuran una sola vez en la [Personalización de RealmJoin Runbook](https://portal.realmjoin.com/settings/runbooks-customizations) y se aplican automáticamente a todos los runbooks que usan la función correspondiente. Los ajustes que difieren según el runbook (como el nombre del contenedor de destino) no forman parte de esta configuración central y se establecen directamente en el runbook correspondiente.

Las funciones que consumen estos ajustes — [`Send-RjRbReportEmail`](/es/dev-reference/report-functions/send-rjrbreportemail.md) y [`Publish-RjRbFilesToStorageContainer`](/es/dev-reference/report-functions/publish-rjrbfilestostoragecontainer.md) — son proporcionadas por el **RealmJoin.RunbookHelper** módulo de PowerShell. Consulte [Funciones de informes](/es/dev-reference/report-functions.md) para obtener documentación detallada de uso.

## Entrega por correo electrónico

### Requisitos previos

Recomendamos usar un buzón compartido dedicado, como `realmjoin-report@contoso.com`. Este buzón se usará como dirección del remitente para todos los informes. Puede usar una dirección sin respuesta, ya que no se espera que los destinatarios respondan a los informes automatizados.

> **Nota:** La dirección del remitente debe ser un buzón de usuario o compartido — un grupo de Microsoft 365 no puede enviar correo a través de la API de Graph. Las direcciones de grupo como destinatarios de informes **destinatarios** funcionan técnicamente, pero no se recomiendan: que los miembros reciban realmente el correo depende de la configuración de seguimiento/suscripción del grupo, y los fallos de entrega solo son visibles como informes de no entrega en el buzón del remitente.

### Configuración

Como se describe detalladamente en la [Personalización basada en JSON](https://docs.realmjoin.com/automation/runbooks/runbook-customization#json-based-customizing) documentación, vaya a [Personalización de RealmJoin Runbook](https://portal.realmjoin.com/settings/runbooks-customizations) en el Portal de RealmJoin (Configuración > Personalizaciones de runbook).

En el `Configuración` bloque, agregue o modifique la `RJReport` sección para incluir la `EmailSender` propiedad con la dirección de correo electrónico del remitente que desee:

```json
{
    "Settings": {
        "RJReport": {
            "EmailSender": "realmjoin-report@contoso.com"
        }
    }
}
```

Reemplace `realmjoin-report@contoso.com` con la dirección real de su buzón compartido.

### Información de contacto del Service Desk (opcional)

Esta configuración central solo proporciona los valores unificados del Service Desk para todos los runbooks. Si la información de contacto se incluye realmente en un correo de notificación lo determina el propio runbook correspondiente — solo los runbooks que implementan los parámetros de Service Desk correspondientes (por ejemplo, `ServiceDeskDisplayName`, `ServiceDeskPortalUrl`) leen estos valores y los muestran en sus correos electrónicos.

Para proporcionar la información de contacto del Service Desk para estos runbooks, agregue las siguientes propiedades a la `RJReport` sección:

```json
{
    "Settings": {
        "RJReport": {
            "EmailSender": "realmjoin-report@contoso.com",
            "ServiceDesk_DisplayName": "IT Service Desk",
            "ServiceDesk_EMail": "servicedesk@domain.com",
            "ServiceDesk_Phone": "+49123456789",
            "ServiceDesk_PortalUrl": "https://servicedesk.domain.com"
        }
    }
}
```

**Parámetros:**

* `ServiceDesk_DisplayName` — Nombre para mostrar de su Service Desk (p. ej., "IT Support", "Help Desk")
* `ServiceDesk_EMail` — Dirección de correo electrónico del Service Desk (se muestra como un `mailto:` enlace clicable)
* `ServiceDesk_Phone` — Número de teléfono del Service Desk en formato internacional (se muestra como un `tel:` enlace clicable)
* `ServiceDesk_PortalUrl` — URL del portal o sitio web de su Service Desk (se muestra como un enlace clicable)

Todos los parámetros son opcionales. Si se configuran, aparecerán en el pie del correo electrónico como enlaces clicables.

> **Nota:** Algunos runbooks además aceptan un enlace de ticket por ejecución (p. ej., `ServiceDeskTicketUrl`) para hacer referencia al ticket específico que desencadenó la solicitud. Este es un parámetro del runbook, no forma parte de esta configuración central.

### Personalización del correo electrónico (opcional)

Los correos de informe pueden llevar una personalización específica del Tenant: los gráficos predeterminados de encabezado y pie de RealmJoin pueden reemplazarse por sus propias imágenes, la imagen del pie puede enlazar a un destino personalizado — por ejemplo, su intranet o portal de TI — y los colores de la plantilla pueden ajustarse a su diseño corporativo.

Para configurar la personalización, agregue una `personalización` subsección al `RJReport` bloque (anidado como `StorageAccount`):

```json
{
    "Settings": {
        "RJReport": {
            "Branding": {
                "HeaderImageUrl": "https://cdn.contoso.com/branding/email-header.png",
                "FooterImageUrl": "https://cdn.contoso.com/branding/email-footer.png",
                "FooterLink": "https://intranet.contoso.com",
                "AccentColor": "#0052cc",
                "TextColor": "#1a1a2e"
            }
        }
    }
}
```

**Parámetros:**

| Configuración    | Requerido | Predeterminado                       | Descripción                                                                                                                                             |
| ---------------- | --------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `HeaderImageUrl` | no        | gráfico de encabezado de RealmJoin   | URL HTTPS pública de una imagen de encabezado personalizada que reemplaza el gráfico de encabezado predeterminado de RealmJoin                          |
| `FooterImageUrl` | no        | gráfico de pie de RealmJoin          | URL HTTPS pública de una imagen de pie personalizada que reemplaza el gráfico de pie predeterminado de RealmJoin                                        |
| `FooterLink`     | no        | `https://www.realmjoin.com`          | URL a la que enlaza la imagen del pie                                                                                                                   |
| `AccentColor`    | no        | `#f8842c` (naranja de RealmJoin)     | Color de acento de la plantilla de correo electrónico: filas de encabezado de tablas, botones de acción, bordes de acento de los cuadros de información |
| `TextColor`      | no        | `#011e33` (azul marino de RealmJoin) | Color principal del texto de la plantilla de correo electrónico: texto del cuerpo, encabezados, elementos de lista, código                              |

**Requisitos de las imágenes:**

* La imagen debe ser accesible mediante una **URL HTTPS pública** — por ejemplo, un contenedor de Azure Blob Storage con acceso de lectura anónimo, una CDN o el sitio web de la empresa. Una URL que contenga un SAS Token también funciona y mantiene privado el contenedor.
* Formatos admitidos: **PNG, JPEG o GIF**. El formato se detecta a partir de la firma del archivo, no de la extensión del archivo.
* Las imágenes se muestran a **750 px de ancho**. Las dimensiones recomendadas son **750×200 px** (que coinciden con los banners predeterminados) o **1500×400 px** para pantallas de alta densidad de píxeles.
* Máximo **200 KB** por imagen; **100 KB o menos** se recomienda. Las imágenes de personalización comparten el límite total de tamaño del correo electrónico de \~4 MB con los adjuntos del informe (a modo de comparación, los gráficos predeterminados de RealmJoin son 52 KB y 15 KB).

**Requisitos de color:**

* Los valores deben ser colores hexadecimales de 6 dígitos, incluido el `#` — por ejemplo `#0052cc`. Las formas abreviadas (`#05c`) y los nombres de color (`rojo`) no son compatibles.
* Tanto los correos electrónicos como sus adjuntos se leen en modo claro **y** modo oscuro: elija un color de texto que siga siendo legible sobre una tarjeta de contenido blanca y un color de acento con suficiente contraste frente al texto blanco de los botones.
* Los colores de estado (verde/rojo/ámbar para los estados de éxito, error y advertencia) y los grises neutros no son configurables a propósito — tienen un significado que no debería cambiar según el Tenant.

Las imágenes se descargan y validan por el runbook en cada ejecución. Si un ajuste se deja vacío, se usan el gráfico, el color y el enlace del pie predeterminados de RealmJoin. Si una descarga falla, una imagen no es válida o un color no es un valor hexadecimal válido, se registra una advertencia y se usa en su lugar el valor predeterminado correspondiente — una configuración de personalización dañada nunca impide que se envíe un correo electrónico de informe.

Todos los ajustes son opcionales y surten efecto para todos los runbooks que envían correos electrónicos de informe.

> **Nota:** Los ajustes de color requieren **RealmJoin.RunbookHelper 0.8.9** o posterior en la Automation Account. Con versiones anteriores del módulo, los ajustes de imagen siguen aplicándose y los colores se ignoran.

## Entrega a Storage Account

Los runbooks de informes que admiten este canal de entrega pueden cargar su salida en un contenedor de Azure Blob Storage. Tras una carga exitosa, el runbook devuelve un enlace SAS con tiempo limitado que puede usarse para descargar el archivo directamente. Este canal puede usarse de forma independiente o además de la entrega por correo electrónico.

### Requisitos previos

Se requiere una Storage Account de Azure existente. La identidad administrada de la Automation Account (o el Service Principal usado por los runbooks) necesita el rol integrado de Azure RBAC **Reader and Data Access**, asignado directamente en la Storage Account.

La carga recupera la clave de la Storage Account mediante `listKeys` y la usa para crear el contenedor, cargar los archivos y firmar los enlaces de descarga SAS. **Reader and Data Access** es el rol integrado más pequeño que incluye esta acción. **Storage Account Contributor** también funciona, pero además permite administrar y eliminar la Storage Account. **Storage Blob Data Contributor** no es suficiente, ya que no incluye `listKeys`.

> **Nota:** La clave de la cuenta concede acceso a todos los datos de la Storage Account. Use una Storage Account dedicada para los informes y asigne el rol en la Storage Account, no en su grupo de recursos. El acceso con clave compartida debe permitirse en la Storage Account (`allowSharedKeyAccess` no debe ser `false`, por ejemplo mediante la directiva de Azure "Storage accounts should prevent shared key access"), de lo contrario la carga falla.

### Configuración

Vaya a [Personalización de RealmJoin Runbook](https://portal.realmjoin.com/settings/runbooks-customizations) y agregue un `StorageAccount` subsección al `RJReport` bloque:

```json
{
    "Settings": {
        "RJReport": {
            "StorageAccount": {
                "ResourceGroup": "rg-reports",
                "StorageAccountName": "stcontosoreports",
                "LinkExpiryDays": 6
            }
        }
    }
}
```

**Parámetros:**

| Configuración        | Requerido | Predeterminado | Descripción                                                         |
| -------------------- | --------- | -------------- | ------------------------------------------------------------------- |
| `ResourceGroup`      | sí        | —              | Grupo de recursos que contiene la Storage Account                   |
| `StorageAccountName` | sí        | —              | Nombre de la Storage Account de Azure                               |
| `LinkExpiryDays`     | no        | `6`            | Número de días hasta que caduque el enlace de descarga SAS generado |

> **Nota:** Los ajustes específicos de un runbook individual — como el nombre del contenedor de destino o un nombre de blob personalizado — se configuran directamente en ese runbook y, de forma intencionada, no forman parte de esta configuración central. Lo mismo se aplica al prefijo del nombre de blob: si un prefijo de marca de tiempo (`yyyyMMdd-HHmmss`) se antepone al nombre del blob para evitar sobrescrituras lo controla el `AddBlobNamePrefix` parámetro de [`Publish-RjRbFilesToStorageContainer`](/es/dev-reference/report-functions/publish-rjrbfilestostoragecontainer.md) (predeterminado `$false`), que cada runbook pasa explícitamente.

## Ejemplo combinado

El siguiente fragmento muestra una `RJReport` configuración completa con todas las funciones habilitadas:

```json
{
    "Settings": {
        "RJReport": {
            "EmailSender": "realmjoin-report@contoso.com",
            "ServiceDesk_DisplayName": "IT Service Desk",
            "ServiceDesk_EMail": "servicedesk@domain.com",
            "ServiceDesk_Phone": "+49123456789",
            "ServiceDesk_PortalUrl": "https://servicedesk.domain.com",
            "Branding": {
                "HeaderImageUrl": "https://cdn.contoso.com/branding/email-header.png",
                "FooterImageUrl": "https://cdn.contoso.com/branding/email-footer.png",
                "FooterLink": "https://intranet.contoso.com",
                "AccentColor": "#0052cc",
                "TextColor": "#1a1a2e"
            },
            "StorageAccount": {
                "ResourceGroup": "rg-reports",
                "StorageAccountName": "stcontosoreports",
                "LinkExpiryDays": 6
            }
        }
    }
}
```


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-report-settings.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
