- Introducción
- Configuración de su cuenta
- Equilibrio
- Clústeres
- Deriva del concepto
- Cobertura
- Conjuntos de datos
- Campos generales
- Etiquetas (predicciones, niveles de confianza, jerarquía de etiquetas y sentimiento de etiqueta)
- Modelos
- Transmisiones
- Clasificación del modelo
- Proyectos
- Precisión
- Recordar
- Mensajes anotados y no anotados
- Campos extraídos
- Fuentes
- Taxonomías
- Formación
- Predicciones positivas y negativas verdaderas y falsas
- Validación
- Mensajes
- Control y administración de acceso
- Gestionar fuentes y conjuntos de datos
- Comprender la estructura de datos y los permisos
- Crear o eliminar un origen de datos en la GUI
- Preparando datos para cargar archivos .CSV
- Cargar un archivo CSV en un origen
- Cargar un archivo PST
- Crear un conjunto de datos
- Fuentes y conjuntos de datos multilingües
- Habilitar sentimiento en un conjunto de datos
- Modificar la configuración del conjunto de datos
- Eliminar un mensaje
- Eliminar un conjunto de datos
- Exportar un conjunto de datos
- Utilizar integraciones de Exchange
- Etiquetas de transformación de correo electrónico
- Entrenamiento y mantenimiento de modelos
- Comprender las etiquetas, los campos generales y los metadatos
- Jerarquía de etiquetas y mejores prácticas
- Comparar casos de uso de análisis y automatización
- Convertir tus objetivos en etiquetas
- Descripción general del proceso de entrenamiento del modelo
- Anotación generativa
- Estado de Dastaset
- Entrenamiento de modelos y mejores prácticas de anotación
- Entrenamiento con análisis de sentimiento de etiqueta habilitado
- Comprender los requisitos de datos
- Entrenamiento
- Introducción a Refinar
- Explicación de la precisión y la recuperación
- Precisión y recuperación
- Cómo funciona la validación
- Comprender y mejorar el rendimiento del modelo
- Razones para etiquetar una precisión media baja
- Entrenamiento utilizando la etiqueta Comprobar y la etiqueta Perdida
- Entrenamiento mediante la etiqueta de aprendizaje (refinar)
- Entrenamiento mediante Buscar (Refinar)
- Comprender y aumentar la cobertura
- Mejorar el equilibrio y utilizar Reequilibrar
- Cuándo dejar de entrenar tu modelo
- Uso de campos generales
- Extracción generativa
- Uso de análisis y supervisión
- Automations and Communications Mining™
- Desarrollador
- Uso de la API
- Tutorial de la API
- Fuentes
- Conjuntos de datos
- Comentarios
- Archivos adjuntos
- Predictions
- Crear una transmisión
- Actualizar una transmisión
- Obtener una transmisión por nombre
- Obtener todas las transmisiones
- Eliminar una transmisión
- Obtener resultados de la transmisión
- Obtener comentarios de una transmisión (heredado)
- Avanzar una transmisión
- Restablecer una transmisión
- Etiquetar una excepción
- Desetiquetar una excepción
- Eventos de auditoría
- Obtener todos los usuarios
- Cargar datos
- Descargando datos
- Integración de Exchange con el usuario del servicio de Azure
- Integración de Exchange con la autenticación de aplicaciones de Azure
- Integración de Exchange con Azure Application Authentication y Graph
- Guía de migración: servicios web de Exchange (EWS) a la API de Microsoft Graph
- Obtener datos para Tableau con Python
- Integración de Elasticsearch
- Extracción de campos general
- Integración de Exchange autohospedado
- Marco de automatización de UiPath®
- Actividades oficiales de UiPath®
- Cómo aprenden las máquinas a entender palabras: una guía para las incrustaciones en PNL
- Aprendizaje basado en solicitudes con Transformers
- Efficient Transformers II: destilación de conocimientos y ajuste
- Transformadores eficientes I: mecanismos de atención
- Modelado de intenciones jerárquico profundo no supervisado: obtener valor sin datos de entrenamiento
- Corregir el sesgo de anotación con Communications Mining™
- Aprendizaje activo: mejores modelos ML en menos tiempo
- Todo está en los números: evaluar el rendimiento del modelo con métricas
- Por qué es importante la validación del modelo
- Comparación de Communications Mining™ y Google AutoML para la inteligencia de datos conversacional
- Licencia
- Preguntas frecuentes y más
Configura e implementa la imagen de Docker de la aplicación de sincronización de Exchange para integrar un servidor de Exchange autoalojado con Communications Mining en Automation Cloud.
Microsoft retirará los servicios web de Exchange (EWS) para Exchange Online el 1 de octubre de 2026 (anuncio de Microsoft). El servidor de Exchange Server local no se ve afectado y sigue funcionando con normalidad. Si tu integración autoalojada se conecta a Exchange Online, recomendamos cambiar a la API de Microsoft Graph antes de esta fecha. Para conocer los pasos de migración, consulta la guía de migración de EWS a Microsoft Graph API.
La aplicación Exchange Sync se entrega como una imagen de Docker. Las siguientes secciones explican cómo configurar e implementar el dispositivo.
Autenticación en Communications Mining
Cuando la aplicación Exchange Sync se carga en Communications Mining, necesita una credencial para la API de Communications Mining, que utiliza para leer su configuración y escribir correos electrónicos en depósitos. Esta credencial es independiente de la que utiliza el dispositivo para llegar a su servidor de Exchange y funciona con todos los tipos de autenticación de Exchange descritos en Configuración.
Configura exactamente uno de los siguientes. El dispositivo se detiene al iniciarse si configuras ambos o ninguno.
| Credencial | Qué es |
|---|---|
| Token de API | Un token de API de desarrollador, emitido a un usuario designado. Para obtener una, consulta Uso de la API. |
| Aplicación externa | Una aplicación externa de UiPath, que utiliza el flujo de credenciales de cliente OAuth 2.0. Recomendado para una integración unattended. Marca Autenticación con una aplicación externa. |
Ambos se suministran al dispositivo de la misma manera: establece una variable de entorno o apunta un parámetro a un archivo que contiene el secreto. Cuando se establecen ambos, el archivo gana.
| Credencial | Variable de entorno | Parámetro de archivo |
|---|---|---|
| Token de API | REINFER_API_TOKEN | --reinfer-api-token-path |
| Secreto de aplicación de aplicación externa | REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET | --external-application-client-secret-path |
Los ejemplos en Implementación utilizan las variables de entorno, rellenadas a partir de un secreto de Kubernetes. Si estás fortaleciendo la implementación, utiliza los parámetros de archivo en su lugar: el entorno de un contenedor es legible a través de /proc/<pid>/environ y docker inspect, mientras que un archivo montado puede restringirse con permisos de archivo.
Cualquiera que elijas, debe tener los permisos Depósito: Escribir y Depósito: Anexar en cada proyecto en el que se sincronice el dispositivo. Si almacenas la configuración en Communications Mining, también necesita Configuración del dispositivo: leer en el proyecto nombrado por --remote-config-owner. Un token de API lleva los permisos del usuario para el que se emitió. Para conocer los roles que llevan estos permisos y cómo crear un rol personalizado, consulta Gestionar acceso.
Las implementaciones de almacenamiento local y Azure Blob Storage no necesitan una credencial de Communications Mining.
Autenticarse con una aplicación externa
Crea la aplicación y concédele acceso como se describe en Autenticación con aplicaciones externas, seleccionando los ámbitos enumerados allí en Ámbito(s) de aplicación en lugar de Ámbito(s) de usuario.
A continuación, configure el dispositivo con los parámetros de la aplicación externa descritos en Parámetros de la aplicación. Ten en cuenta lo siguiente:
--reinfer-api-endpointdebe ser tu punto final de la API de tenant de Automation Cloud, en el formulariohttps://cloud.uipath.com/<org>/<tenant>/reinfer_/api/. El token de acceso lo emite tu organización de Automation Cloud y solo se acepta allí.- La URL del token debe ser una URL
https, porque el secreto de la aplicación se envía en el cuerpo de la solicitud. De lo contrario, el dispositivo se niega a iniciarse.
El dispositivo renueva el token de acceso a medida que caduca. Si el punto final de identidad es inalcanzable o tiene errores, la encuesta afectada se omite y se vuelve a intentar. Las credenciales rechazadas son un error de configuración: el dispositivo registra el fallo y se detiene, a menos que lo ejecutes con --restart-on-unrecoverable-errors, en cuyo caso se reinicia cada pocos segundos y reintenta indefinidamente.
Configuración
Dado que la aplicación Exchange Sync requiere la presencia de un archivo de configuración JSON al inicio, esta sección explica el contenido del archivo. Consulta la sección Implementación para obtener instrucciones sobre cómo hacer que el archivo de configuración esté disponible para la aplicación Exchange Sync.
OAuth 2.0
Si utilizas el tipo de autenticación OAuth 2.0, puedes utilizar la API de Graph o la API de EWS. Ambos te permiten autenticarte con el secreto del cliente o con el certificado del cliente.
El flujo de concesión de tokens utilizado es el flujo de credenciales de cliente.
API Graph con secreto de cliente
{
"microsoft_api": "graph",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_secret": "<client_secret>",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
{
"microsoft_api": "graph",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_secret": "<client_secret>",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
API Graph con certificado de cliente
{
"microsoft_api": "graph",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_credential_private_key": "<private_key>",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
{
"microsoft_api": "graph",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_credential_private_key": "<private_key>",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
API de EWS con secreto de cliente
{
"ews_endpoint": "https://outlook.office365.com/EWS/Exchange.asmx",
"auth_type": "oauth2",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_secret": "<client_secret>",
"access_type": "impersonation",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
{
"ews_endpoint": "https://outlook.office365.com/EWS/Exchange.asmx",
"auth_type": "oauth2",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_secret": "<client_secret>",
"access_type": "impersonation",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
API de EWS con certificado de cliente
{
"ews_endpoint": "https://outlook.office365.com/EWS/Exchange.asmx",
"auth_type": "oauth2",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_credential_private_key": "<private_key>",
"auth_oauth_client_credential_thumbprint": "<thumbprint>",
"access_type": "impersonation",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
{
"ews_endpoint": "https://outlook.office365.com/EWS/Exchange.asmx",
"auth_type": "oauth2",
"auth_oauth_authority": "https://login.microsoftonline.com/<tenant_id>/",
"auth_oauth_client_id": "<client_id>",
"auth_oauth_client_credential_private_key": "<private_key>",
"auth_oauth_client_credential_thumbprint": "<thumbprint>",
"access_type": "impersonation",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
NTLM
Si utilizas la autenticación NTLM, solo se puede utilizar con la API de EWS.
{
"host": "https://exchange-server.example.com",
"port": 443,
"auth_type": "ntlm",
"auth_user": "ews-service-user@example.com",
"access_type": "delegate",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
{
"host": "https://exchange-server.example.com",
"port": 443,
"auth_type": "ntlm",
"auth_user": "ews-service-user@example.com",
"access_type": "delegate",
"mailboxes": {
"abc@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
},
"xyz@example.com": {
"bucket": {
"owner": "project-name",
"name": "bucket-name"
},
"start_from": "bucket",
"start_timestamp": "2020-01-01T00:00:00+00:00"
}
}
}
Primero, reemplaza los valores ficticios en host, port y auth_user por sus valores reales, y cambia access_type si es necesario. Para obtener una descripción de estos parámetros y sus valores permitidos, consulta la referencia de configuración.
A continuación, proporciona la contraseña de usuario del servicio a la aplicación Exchange Sync como una variable de entorno REINFER_EWS_AUTH_PASS . Para obtener más información, consulta la sección Implementación .
La lista completa de variables de entorno que puedes establecer para anular valores en la configuración es la siguiente:
| Nombre | Descripción |
|---|---|
REINFER_EWS_AUTH_USER | Usuario del servidor de Exchange |
REINFER_EWS_AUTH_PASS | Contraseña del servidor de Exchange |
REINFER_EWS_ACCESS_TYPE | Tipo de acceso: "delegado" o "suplantación" |
REINFER_EWS_HOST | Host del servidor de Exchange |
REINFER_EWS_PORT | Puerto del servidor de Exchange |
Configuración del buzón
Puedes especificar uno o más buzones en tu configuración. Para cada buzón, debes proporcionar la dirección del buzón y especificar los siguientes parámetros:
| Nombre | Descripción |
|---|---|
bucket.owner | Proyecto del depósito en el que se debe sincronizar el buzón. |
bucket.name | Nombre del depósito en el que se debe sincronizar el buzón. |
start_from | Si se debe comenzar desde la última hora sincronizada ("depósito") o ignorar la última hora sincronizada y comenzar siempre desde start_timestamp ("config"). Debe establecerse en "depósito" para el funcionamiento normal, pero "config" puede ser útil en algunos casos al depurar. |
start_timestamp | Marca de tiempo desde la que iniciar la sincronización del correo electrónico. Si no se establece, se sincronizarán todos los correos electrónicos. |
La configuración utiliza los valores predeterminados para una serie de ajustes, como la frecuencia de sondeo o el tamaño del lote. Para personalizar aún más tu configuración, consulta la referencia de configuración.
Depósitos
La integración de Exchange sincroniza los datos de correo electrónico sin procesar en depósitos de Communications Mining™. Al igual que otros recursos de Communications Mining, se crea un depósito en un proyecto, lo que te permite controlar el acceso al depósito.
Para leer desde un depósito, cargar en un depósito o gestionar depósitos, debes tener asignados los permisos respectivos en el proyecto en el que se encuentra el depósito.
Implementación
Puedes implementar la aplicación Exchange Sync con Kubernetes o con Docker.
La implementación con Kubernetes te permite ejecutar varias instancias de la aplicación Exchange Sync, y cada instancia gestiona un subconjunto de buzones de correo que se sincronizarán.
Con Kubernetes
El uso de Kubernetes es una forma popular de ejecutar y gestionar aplicaciones en contenedores. Esta sección explica cómo implementar la aplicación Exchange Sync utilizando Kubernetes.
Requisitos
- conocimientos básicos de Kubernetes. Para empezar con Kubernetes, consulta Implementar en Kubernetes.
- tener
kubectlinstalado.
kind: StatefulSet
metadata:
name: uipath-exchange-sync-app
labels:
app: uipath-exchange-sync-app
spec:
podManagementPolicy: Parallel
replicas: 1
selector:
matchLabels:
app: uipath-exchange-sync-app
serviceName: uipath-exchange-sync-app
template:
metadata:
labels:
app: uipath-exchange-sync-app
name: uipath-exchange-sync-app
spec:
containers:
- args:
- "uipath-exchange-sync-app"
- "--bind"
- "0.0.0.0:8000"
- "--reinfer-api-endpoint"
- "https://cloud.uipath.com/<org>/<tenant>/reinfer_/api/"
- "--shard-name"
- "$(POD_NAME)"
# This value should match `spec.replicas` above
- "--total-shards"
- "1"
# To authenticate as an external application, uncomment these
# and swap the REINFER_API_TOKEN block below
# - "--external-application-token-url"
# - "https://cloud.uipath.com/<org>/identity_/connect/token"
# - "--external-application-client-id"
# - "<app_id>"
env:
- name: REINFER_EWS_CONFIG
value: "/mnt/config/example_exchange_sync_config"
# Remove this block when authenticating as an external application
- name: REINFER_API_TOKEN
valueFrom:
secretKeyRef:
key: reinfer-api-token
name: reinfer-credentials
# Only needed when authenticating as an external application
# - name: REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET
# valueFrom:
# secretKeyRef:
# key: external-application-client-secret
# name: reinfer-credentials
# Only needed when using EWS API
- name: REINFER_EWS_AUTH_PASS
valueFrom:
secretKeyRef:
key: ews-auth-pass
name: reinfer-credentials
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: "your.private.registry.com/reinfer/ews:TAG"
name: uipath-exchange-sync-app
resources:
requests:
cpu: 0.05
memory: 128Mi
volumeMounts:
- mountPath: /mnt/config
name: config-vol
volumes:
- configMap:
name: exchange-sync-config
items:
- key: example_exchange_sync_config
path: example_exchange_sync_config
name: config-vol
kind: StatefulSet
metadata:
name: uipath-exchange-sync-app
labels:
app: uipath-exchange-sync-app
spec:
podManagementPolicy: Parallel
replicas: 1
selector:
matchLabels:
app: uipath-exchange-sync-app
serviceName: uipath-exchange-sync-app
template:
metadata:
labels:
app: uipath-exchange-sync-app
name: uipath-exchange-sync-app
spec:
containers:
- args:
- "uipath-exchange-sync-app"
- "--bind"
- "0.0.0.0:8000"
- "--reinfer-api-endpoint"
- "https://cloud.uipath.com/<org>/<tenant>/reinfer_/api/"
- "--shard-name"
- "$(POD_NAME)"
# This value should match `spec.replicas` above
- "--total-shards"
- "1"
# To authenticate as an external application, uncomment these
# and swap the REINFER_API_TOKEN block below
# - "--external-application-token-url"
# - "https://cloud.uipath.com/<org>/identity_/connect/token"
# - "--external-application-client-id"
# - "<app_id>"
env:
- name: REINFER_EWS_CONFIG
value: "/mnt/config/example_exchange_sync_config"
# Remove this block when authenticating as an external application
- name: REINFER_API_TOKEN
valueFrom:
secretKeyRef:
key: reinfer-api-token
name: reinfer-credentials
# Only needed when authenticating as an external application
# - name: REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET
# valueFrom:
# secretKeyRef:
# key: external-application-client-secret
# name: reinfer-credentials
# Only needed when using EWS API
- name: REINFER_EWS_AUTH_PASS
valueFrom:
secretKeyRef:
key: ews-auth-pass
name: reinfer-credentials
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: "your.private.registry.com/reinfer/ews:TAG"
name: uipath-exchange-sync-app
resources:
requests:
cpu: 0.05
memory: 128Mi
volumeMounts:
- mountPath: /mnt/config
name: config-vol
volumes:
- configMap:
name: exchange-sync-config
items:
- key: example_exchange_sync_config
path: example_exchange_sync_config
name: config-vol
Antes de poder implementar la aplicación Exchange Sync utilizando este archivo YAML, hay algunos pasos adicionales que debes realizar:
-
Sustituye
cloud.uipath.com/<org>/<tenant>/reinfer_por el punto de conexión de la API de tu tenant. -
Crea los secretos de la siguiente manera:
kubectl create secret generic reinfer-credentials \ --from-literal=reinfer-api-token=<REINFER_TOKEN> \ --from-literal=ews-auth-pass=<MSEXCHANGE_PASSWORD>kubectl create secret generic reinfer-credentials \ --from-literal=reinfer-api-token=<REINFER_TOKEN> \ --from-literal=ews-auth-pass=<MSEXCHANGE_PASSWORD>Nota:- Para evitar almacenar las credenciales como texto no cifrado en nuestro archivo YAML, las variables de entorno
REINFER_TOKENyREINFER_EWS_AUTH_PASSse rellenan a partir de los secretos de Kubernetes. - El secreto
ews-auth-passsolo es necesario cuando se utiliza la API de EWS.
Para autenticarse como una aplicación externa en lugar de con un token de API, almacena el secreto de la aplicación bajo la clave
external-application-client-secreten lugar dereinfer-api-tokeny, a continuación, elimina el comentario de las líneas de la aplicación externa en el archivo YAML, sustituyendo tu propio nombre de organización e ID de aplicación por<org>y<app_id>. - Para evitar almacenar las credenciales como texto no cifrado en nuestro archivo YAML, las variables de entorno
-
Para cargar la configuración del dispositivo desde un archivo local, monta ese archivo en el pod almacenando los datos en un ConfigMap de Kubernetes y montando el ConfigMap como un volumen.
-
Crea el ConfigMap de la siguiente manera:
kubectl create configmap exchange-sync-config \ --from-file=example_exchange_sync_config=your-exchange-sync-config.jsonkubectl create configmap exchange-sync-config \ --from-file=example_exchange_sync_config=your-exchange-sync-config.jsonNota:Como alternativa al almacenamiento local del archivo de configuración, puedes cargarlo en Communications Mining y dejar que la aplicación Exchange Sync lo obtenga a través de la API de Communications Mining. Esto se describe en la configuración del almacén en Communications Mining. Si se especifican los archivos de configuración locales y remotos, el dispositivo utiliza el archivo de configuración local.
Ahora puedes crear tu StatefulSet y comprobar que todo se está ejecutando de la siguiente manera:
kubectl apply -f uipath-exchange-sync.yaml
kubectl get sts
kubectl apply -f uipath-exchange-sync.yaml
kubectl get sts
Con Docker
Como alternativa, puedes ejecutar la aplicación Exchange Sync en Docker. El siguiente comando inicia el dispositivo con los mismos parámetros que se utilizan en la sección Kubernetes :
EWS_CONFIG_DIR="location_of_your_self-hosted_appliance_config_directory"
REINFER_API_TOKEN="YOUR API TOKEN"
TAG=latest
sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/config.json \
--env REINFER_API_TOKEN=$REINFER_API_TOKEN \
eu.gcr.io/reinfer-gcr/ews:$TAG reinfer-ews \
--reinfer-api-endpoint https://cloud.uipath.com/YourOrganizationName/TenantName/reinfer_/api/ \
&> ews_$(date -Iseconds).log
EWS_CONFIG_DIR="location_of_your_self-hosted_appliance_config_directory"
REINFER_API_TOKEN="YOUR API TOKEN"
TAG=latest
sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/config.json \
--env REINFER_API_TOKEN=$REINFER_API_TOKEN \
eu.gcr.io/reinfer-gcr/ews:$TAG reinfer-ews \
--reinfer-api-endpoint https://cloud.uipath.com/YourOrganizationName/TenantName/reinfer_/api/ \
&> ews_$(date -Iseconds).log
- Sustituye
cloud.uipath.com/<org>/<tenant>/reinfer_por el punto de conexión de la API de tu tenant. - Sustituye
your_exchange_sync_config.jsonpor el nombre de tu archivo JSON de configuración de la aplicación de sincronización de Exchange.
Para autenticarse como una aplicación externa en lugar de con un token de API, proporciona el secreto de la aplicación en lugar de REINFER_API_TOKEN y añade los parámetros de la aplicación externa:
EWS_CONFIG_DIR="location_of_your_self-hosted_appliance_config_directory"
REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET="YOUR APP SECRET"
TAG=latest
sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/config.json \
--env REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET=$REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET \
eu.gcr.io/reinfer-gcr/ews:$TAG reinfer-ews \
--reinfer-api-endpoint https://cloud.uipath.com/YourOrganizationName/TenantName/reinfer_/api/ \
--external-application-token-url https://cloud.uipath.com/YourOrganizationName/identity_/connect/token \
--external-application-client-id YourAppId \
&> ews_$(date -Iseconds).log
EWS_CONFIG_DIR="location_of_your_self-hosted_appliance_config_directory"
REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET="YOUR APP SECRET"
TAG=latest
sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/config.json \
--env REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET=$REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET \
eu.gcr.io/reinfer-gcr/ews:$TAG reinfer-ews \
--reinfer-api-endpoint https://cloud.uipath.com/YourOrganizationName/TenantName/reinfer_/api/ \
--external-application-token-url https://cloud.uipath.com/YourOrganizationName/identity_/connect/token \
--external-application-client-id YourAppId \
&> ews_$(date -Iseconds).log
Para mantener el secreto fuera del entorno del contenedor, escríbelo en un archivo, monta ese archivo de solo lectura y pasa --external-application-client-secret-path en lugar de la variable de entorno.
La aplicación Exchange Sync se ejecuta continuamente sincronizando correos electrónicos en la plataforma Communications Mining. Si lo detienes y lo vuelves a iniciar, se reanuda desde el último estado de sincronización del depósito almacenado.
Con Docker (almacenamiento local)
La aplicación Exchange Sync puede guardar los correos electrónicos extraídos localmente en lugar de enviarlos a la plataforma Communications Mining™ a través de lo siguiente:
EWS_LOCAL_DIR=
CONFIG_OWNER=
CONFIG_KEY=
TAG=
sudo docker run \
-v $EWS_LOCAL_DIR:/mnt/ews \
eu.gcr.io/reinfer-gcr/ews:$TAG \
--local-files-prefix /mnt/ews \
--remote-config-owner $CONFIG_OWNER --remote-config-key $CONFIG_KEY \
&> ews_$(date -Iseconds).log
EWS_LOCAL_DIR=
CONFIG_OWNER=
CONFIG_KEY=
TAG=
sudo docker run \
-v $EWS_LOCAL_DIR:/mnt/ews \
eu.gcr.io/reinfer-gcr/ews:$TAG \
--local-files-prefix /mnt/ews \
--remote-config-owner $CONFIG_OWNER --remote-config-key $CONFIG_KEY \
&> ews_$(date -Iseconds).log
Información general
- La aplicación Exchange Sync espera encontrar la configuración en
$EWS_LOCAL_DIR/config/$CONFIG_OWNER/$CONFIG_KEY.json. Como alternativa, puedes proporcionar la ruta a la configuración estableciendo la variable de entorno$REINFER_EWS_CONFIGcomo se muestra en el ejemplo anterior. - La aplicación Exchange Sync guarda el estado de sincronización en
$EWS_LOCAL_DIR/state. Si lo detienes y lo vuelves a iniciar, se reanuda desde el último estado de sincronización almacenado. - La aplicación Exchange Sync guarda los datos en
$EWS_LOCAL_DIR/data.
Con Docker (Azure Blob Storage)
La aplicación Exchange Sync puede guardar los correos electrónicos extraídos en Azure Blob Storage en lugar de enviarlos a la plataforma Communications Mining™ a través de lo siguiente:
EWS_CONFIG_DIR=
AZ_STORAGE_ACCOUNT_NAME=
AZ_CONTAINER_NAME=
TAG=
sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/your_exchange_sync_config.json \
eu.gcr.io/reinfer-gcr/ews:$TAG \
--private-file-prefix az://$AZ_STORAGE_ACCOUNT_NAME/$AZ_CONTAINER_NAME \
&> ews_$(date -Iseconds).log
EWS_CONFIG_DIR=
AZ_STORAGE_ACCOUNT_NAME=
AZ_CONTAINER_NAME=
TAG=
sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/your_exchange_sync_config.json \
eu.gcr.io/reinfer-gcr/ews:$TAG \
--private-file-prefix az://$AZ_STORAGE_ACCOUNT_NAME/$AZ_CONTAINER_NAME \
&> ews_$(date -Iseconds).log
Información general
- Debes proporcionar la ruta a la configuración estableciendo la variable de entorno
$REINFER_EWS_CONFIG. - La aplicación Exchange Sync se autentica en Azure Blob Storage utilizando uno de los métodos DefaultAzureCredential. Asegúrate de utilizar un método que sea conveniente para ti. Independientemente del método utilizado, asegúrate de otorgar el rol de Colaborador de datos de Storage Blob a la aplicación Exchange Sync.
- La aplicación Exchange Sync guarda el estado de sincronización en
az://$AZ_STORAGE_ACCOUNT_NAME/$AZ_CONTAINER_NAME/state. Si lo detienes y lo vuelves a iniciar, se reanuda desde el último estado de sincronización almacenado. - La aplicación Exchange Sync guarda los datos en
az://$AZ_STORAGE_ACCOUNT_NAME/$AZ_CONTAINER_NAME/data.
Almacenar la configuración en Communications Mining
En lugar de proporcionar un archivo de configuración local al dispositivo como hacías si seguías la guía de implementación de la aplicación Exchange Sync, puedes gestionar el archivo de configuración en Communications Mining™.
Si se especifican tanto los archivos de configuración locales como los remotos, el dispositivo utilizará de forma predeterminada el archivo de configuración local.
Primero, carga tu archivo de configuración JSON en Communications Mining:
curl -H "Authorization: Bearer $REINFER_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F 'file=@your_exchange_sync_config.json' \
-XPUT https://cloud.uipath.com/<org>/<tenant>/reinfer_/api/v1/appliance-configs/<project-name>/<config-name>
curl -H "Authorization: Bearer $REINFER_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F 'file=@your_exchange_sync_config.json' \
-XPUT https://cloud.uipath.com/<org>/<tenant>/reinfer_/api/v1/appliance-configs/<project-name>/<config-name>
Para ver la configuración actual:
curl -H "Authorization: Bearer $REINFER_TOKEN" \
-XGET https://cloud.uipath.com/<org>/<tenant>/reinfer_/api/v1/appliance-configs/<project-name>/<config-name>
curl -H "Authorization: Bearer $REINFER_TOKEN" \
-XGET https://cloud.uipath.com/<org>/<tenant>/reinfer_/api/v1/appliance-configs/<project-name>/<config-name>
Estas son llamadas administrativas únicas, por lo que $REINFER_TOKEN arriba es su propio token de API. Si tu organización no emite tokens de API personales, obtén un token de acceso a través del flujo de credenciales de cliente y utilízalo en su lugar. Para cargar una configuración se necesita el permiso de escritura de Configuración del dispositivo y para verla se necesita el permiso de lectura de Configuración del dispositivo.
A continuación, en el archivo YAML de Kubernetes, establece el parámetro --remote-config-owner en el nombre del proyecto y el parámetro --remote-config-key en el nombre de la configuración.
Referencia
Parámetros de la aplicación
La siguiente tabla contiene una lista de parámetros de aplicación disponibles. Para obtener más información sobre la ejecución de la aplicación Exchange Sync, consulta la sección Implementación .
| Parámetro | Descripción |
|---|---|
--reinfer-api-endpoint | Punto final para conectarse a la API Reinfer. Debe terminar en una barra inclinada final. Mutuamente excluyente con --local-files-prefix . |
--reinfer-api-token-path | Ruta a un archivo que contiene el token de la API de Communications Mining, por ejemplo /mnt/api-token.txt . Tiene prioridad sobre la variable de entorno REINFER_API_TOKEN, que solo se lee cuando no se ha establecido. Consulta Autenticación en Communications Mining . |
--external-application-token-url | Punto final del token de identidad que emite los tokens de acceso de la aplicación externa, por https://cloud.uipath.com/<org>/identity_/connect/token ejemplo. Debe ser una URL https. Obligatorio al autenticarse como aplicación externa. |
--external-application-client-id | ID de aplicación de la aplicación externa de UiPath como para autenticarse, en lugar de utilizar REINFER_API_TOKEN . |
--external-application-client-secret-path | Ruta a un archivo que contenga el secreto de la aplicación externa, por ejemplo /mnt/app-secret.txt . Tiene prioridad sobre la variable de entorno REINFER_EXTERNAL_APPLICATION_CLIENT_SECRET, que solo se lee cuando no se ha establecido. Consulta Autenticación en Communications Mining . |
--external-application-scope | Ámbitos para solicitar el token de acceso de la aplicación externa. Estos también deben concederse a la propia aplicación. El valor predeterminado es PM.User PM.User.Read Ixp.ApiAccess . |
--local-files-prefix | Ruta para almacenar los correos electrónicos sincronizados y el estado de sincronización del depósito. Mutuamente exclusivo con --reinfer-api-endpoint y REINFER_API_TOKEN . Los parámetros de la aplicación externa se ignoran en este modo. |
--remote-config-owner | Proyecto propietario del archivo de configuración de la aplicación de sincronización de Exchange remota . |
--remote-config-key | Nombre del archivo de configuración remoto de la aplicación Exchange Sync . |
--debug-level | Nivel de depuración, donde:
1. |
--shard-name | Nombre del fragmento, que es uipath-exchange-sync-app-N , del que extraer el número del fragmento. Cuando se ejecuta en Kubernetes, puedes establecerlo en el nombre del pod. |
--total-shards | El número total de instancias en el clúster de dispositivos. Cuando se ejecuta en Kubernetes, el parámetro debe establecerse en el mismo valor que el número de instancias en StatefulSet. |
--restart-on-unrecoverable-errors | Si se habilita, los fallos irrecuperables harán que todo el servicio se reinicie sin bloquearse. |
Parámetros de configuración
La siguiente tabla muestra una lista de los parámetros de configuración disponibles. Para obtener más información sobre cómo escribir el archivo de configuración de la aplicación Exchange Sync, consulta la sección Configuración .
| Nombre | Descripción |
|---|---|
host | Solo se utiliza con la API de EWS. Host del servidor de Exchange. Puede ser anulado por la variable de entorno REINFER_EWS_HOST . |
port | Solo se utiliza con la API de EWS. Puerto del servidor de Exchange. El valor predeterminado es 80. Puedes anularlo con la variable de entorno REINFER_EWS_PORT . |
auth_type | Solo se utiliza con la API de EWS. Solo se permite ntlm . |
auth_user | Solo se utiliza con la API de EWS. Usuario del servidor de Exchange. Puedes anularlo con la variable de entorno REINFER_EWS_AUTH_USER . |
auth_password | Solo se utiliza con la API de EWS. Contraseña del servidor de Exchange. Puedes anularlo con la variable de entorno REINFER_EWS_AUTH_PASS . |
access_type | Solo se utiliza con la API de EWS. El tipo de acceso puede ser delegate o impersonation. El valor predeterminado es delegate. Puedes anularlo con la variable de entorno REINFER_EWS_ACCESS_TYPE . |
ews_ssl_verify | Solo se utiliza con la API de EWS. Si se establece en false, no verificará los certificados. El valor predeterminado es true. |
poll_frequency | El tiempo de espera entre lotes, en segundos. El valor predeterminado es 15. |
poll_message_sleep | El tiempo de espera entre correos electrónicos individuales en un lote, en segundos. El valor predeterminado es 0.1. |
max_concurrent_uploads | Número de cargas simultáneas en Communications Mining, entre 0 y 32. El valor predeterminado es 8. |
emails_per_folder | Número máximo de correos electrónicos a recuperar de cada carpeta por lote, entre 1 y 100 000. El valor predeterminado es 2520. Esta configuración permite que la aplicación Exchange Sync progrese en todas las carpetas de manera uniforme en caso de que haya una carpeta muy grande. |
reinfer_batch_size | Cuántos correos electrónicos recuperar por lote, entre 1 y 1000. El valor predeterminado es 80. |
mailboxes | Lista de buzones para recuperar. Para obtener más información sobre cómo configurar los buzones, consulta la sección Configuración . |
audit_email | Si ha configurado el dispositivo con una configuración remota, Communications Mining envía un correo electrónico a esta dirección cada vez que se actualiza la configuración. El valor predeterminado es None. |
ews_ssl_ciphers | Solo se utiliza con la API de EWS. Hacer que la aplicación Exchange Sync utilice cifrados específicos. Los cifrados deben ser una cadena en el formato de lista de cifrado OpenSSL. El valor predeterminado es None. |
- Autenticación en Communications Mining
- Autenticarse con una aplicación externa
- Configuración
- OAuth 2.0
- NTLM
- Configuración del buzón
- Implementación
- Con Kubernetes
- Con Docker
- Con Docker (almacenamiento local)
- Con Docker (Azure Blob Storage)
- Almacenar la configuración en Communications Mining
- Referencia
- Parámetros de la aplicación
- Parámetros de configuración