communications-mining
latest
false
Important :
Ce contenu a été traduit à l'aide d'une traduction automatique.
UiPath logo, featuring letters U and I in white
Guide du développeur Communications Mining
Last updated 19 nov. 2024

Intégration EWS auto-hébergée

L'appli EWS est livrée sous forme d'image Docker. Les sections ci-dessous expliquent comment configurer et déployer l'appliance.

Configuration

L'appli s'attend à ce qu'un fichier de configuration JSON soit présent. Cette section explique le contenu du fichier. Reportez-vous à la section Déploiement (Deployment) pour savoir comment mettre le fichier de configuration à la disposition de l'appli.

With OAuth 2.0

You can authenticate with client secret or with client certificate.

The token grant flow used is the client credentials flow.

With client secret

{
  "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"
    }
  }
}

With client certificate

{
  "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"
    }
  }
}

With NTLM

{
  "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"
    }
  }
}
First, replace the dummy values in host, port, and auth_user with their real values, and change access_type if required. See the configuration reference for a description of these parameters and their allowed values.
Then, provide the service user password to the appliance as a REINFER_EWS_AUTH_PASS environment variable - see the Deployment section. The full list of environment variables that you can set to override values in the config is:
NomDESCRIPTION
REINFER_EWS_AUTH_USERUtilisateur du serveur Exchange
REINFER_EWS_AUTH_PASSMot de passe du serveur Exchange
REINFER_EWS_ACCESS_TYPEType d'accès : « délégué » ou « emprunt d'identité »
REINFER_EWS_HOSTHôte du serveur Exchange
REINFER_EWS_PORTPort du serveur Exchange

Mailbox configuration

You can specify one or more mailboxes in your configuration. For each mailbox, you have to provide the mailbox address and specify the following parameters:

NomDESCRIPTION
bucket.ownerProjet du compartiment dans lequel la boîte aux lettres doit être synchronisée.
bucket.nameNom du compartiment dans lequel la boîte aux lettres doit être synchronisée.
start_fromS'il faut démarrer à partir de la dernière heure synchronisée ("compartiment") ou ignorer la dernière heure synchronisée et toujours démarrer à partir de start_timestamp ("config"). Doit être défini sur "compartiment" pour un fonctionnement normal, mais "config" peut être utile dans certains cas lors du débogage.
start_timestampHorodatage à partir duquel démarrer la synchronisation des e-mails. Si ceci n’est pas défini, tous les e-mails seront synchronisés.

La configuration utilise les valeurs par défaut pour un certain nombre de paramètres tels que la fréquence d'interrogation ou la taille des lots. Pour personnaliser davantage votre configuration, reportez-vous à la référence de configuration.

Compartiments

L'intégration Exchange synchronise les données de messagerie brutes dans les compartiments Communications Mining. Comme pour les autres ressources Communications Mining, un compartiment est créé dans un projet qui vous permet de contrôler l'accès au compartiment. Pour lire à partir d’un compartiment, télécharger dans un compartiment ou gérer des compartiments, l’utilisateur a besoin des autorisations respectives dans le projet dans lequel se trouve le compartiment.

Déploiement

Vous pouvez déployer l'appli EWS avec Kubernetes ou avec Docker.

Le déploiement avec Kubernetes vous permet d'exécuter plusieurs instances de l'appli EWS, chaque instance gérant un sous-ensemble de boîtes aux lettres à synchroniser.

Avec Kubernetes

L'utilisation de Kubernetes est un moyen populaire d'exécuter et de gérer des applications conteneurisées. Cette section vous montre comment déployer l'appli EWS à l'aide de Kubernetes. Il suppose que vous avez une familiarité de base avec Kubernetes et que kubectl est installé. Veuillez consulter cette documentation si vous avez besoin d’aide pour démarrer avec Kubernetes.

Pour déployer sur Kubernetes, vous devez créer un fichier YAML décrivant votre application. Pour commencer, copiez l'exemple ci-dessous.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: reinfer-ews-appliance
  labels:
    app: reinfer-ews-appliance
spec:
  podManagementPolicy: Parallel
  replicas: 1
  selector:
    matchLabels:
      app: reinfer-ews-appliance
  serviceName: reinfer-ews-appliance
  template:
    metadata:
      labels:
        app: reinfer-ews-appliance
      name: reinfer-ews-appliance
    spec:
      containers:
        - args:
            - "reinfer-ews"
            - "--bind"
            - "0.0.0.0:8000"
            - "--reinfer-api-endpoint"
            - "https://<mydomain>.reinfer.io/api/"
            - "--shard-name"
            - "$(POD_NAME)"
            # This value should match `spec.replicas` above
            - "--total-shards"
            - "1"
          env:
            - name: REINFER_EWS_CONFIG
              value: "/mnt/config/example_ews_config"
            - name: REINFER_API_TOKEN
              valueFrom:
                secretKeyRef:
                  key: reinfer-api-token
                  name: reinfer-credentials
            - 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-appliance:TAG"
          name: reinfer-ews-appliance
          resources:
            requests:
              cpu: 0.05
              memory: 128Mi
          volumeMounts:
            - mountPath: /mnt/config
              name: config-vol
      volumes:
        - configMap:
            name: ews-config
            items:
              - key: example_ews_config
                path: example_ews_config
          name: config-volapiVersion: apps/v1
kind: StatefulSet
metadata:
  name: reinfer-ews-appliance
  labels:
    app: reinfer-ews-appliance
spec:
  podManagementPolicy: Parallel
  replicas: 1
  selector:
    matchLabels:
      app: reinfer-ews-appliance
  serviceName: reinfer-ews-appliance
  template:
    metadata:
      labels:
        app: reinfer-ews-appliance
      name: reinfer-ews-appliance
    spec:
      containers:
        - args:
            - "reinfer-ews"
            - "--bind"
            - "0.0.0.0:8000"
            - "--reinfer-api-endpoint"
            - "https://<mydomain>.reinfer.io/api/"
            - "--shard-name"
            - "$(POD_NAME)"
            # This value should match `spec.replicas` above
            - "--total-shards"
            - "1"
          env:
            - name: REINFER_EWS_CONFIG
              value: "/mnt/config/example_ews_config"
            - name: REINFER_API_TOKEN
              valueFrom:
                secretKeyRef:
                  key: reinfer-api-token
                  name: reinfer-credentials
            - 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-appliance:TAG"
          name: reinfer-ews-appliance
          resources:
            requests:
              cpu: 0.05
              memory: 128Mi
          volumeMounts:
            - mountPath: /mnt/config
              name: config-vol
      volumes:
        - configMap:
            name: ews-config
            items:
              - key: example_ews_config
                path: example_ews_config
          name: config-vol

Avant de pouvoir déployer l'appli à l'aide de ce fichier YAML, vous devez effectuer quelques étapes supplémentaires.

Tout d'abord, remplacez <mydomain>.reinfer.io par votre point de terminaison d'API de locataire.
Deuxièmement, comme nous voulons éviter de stocker les informations d'identification sous forme de texte clair dans notre fichier YAML, les variables d'environnement REINFER_TOKEN et REINFER_EWS_AUTH_PASS sont renseignées à partir des clés secrètes Kubernetes. Créez les clés secrètes comme suit :
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>

Enfin, puisque nous souhaitons charger la configuration de l'appareil à partir d'un fichier local, nous devons monter ce fichier dans le pod. Pour ce faire , stockez les données dans une ConfigMap Kubernetes et montez la ConfigMap en tant que volume. Créez la ConfigMap comme suit :

kubectl create configmap ews-config \
  --from-file=example_ews_config=your-ews-config.jsonkubectl create configmap ews-config \
  --from-file=example_ews_config=your-ews-config.json
Remarque :

Remarque

Comme alternative au stockage local du fichier de configuration, vous pouvez le télécharger sur Communications Mining et laisser l'appli EWS le récupérer via l'API Communications Mining. Ceci est décrit ici. Si les fichiers de configuration locaux et distants sont spécifiés, l'appareil utilisera le fichier de configuration local.

Vous pouvez maintenant créer votre ensemble d'états et vérifier que tout est en cours d'exécution :

kubectl apply -f reinfer-ews.yaml
kubectl get stskubectl apply -f reinfer-ews.yaml
kubectl get sts

Avec Docker

Vous pouvez également exécuter l'appli EWS dans Docker. La commande ci-dessous démarrera l'appli avec les mêmes paramètres que ceux utilisés dans la section Kubernetes .

EWS_CONFIG_DIR=
REINFER_API_TOKEN=
MSEXCHANGE_PASSWORD=
TAG=

sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/your_ews_config.json \
--env REINFER_API_TOKEN=$REINFER_API_TOKEN \
--env REINFER_EWS_AUTH_PASS=$MSEXCHANGE_PASSWORD \
eu.gcr.io/reinfer-gcr/ews:$TAG \
reinfer-ews --reinfer-api-endpoint https://<mydomain>.reinfer.io/api/ &> ews_$(date -Iseconds).logEWS_CONFIG_DIR=
REINFER_API_TOKEN=
MSEXCHANGE_PASSWORD=
TAG=

sudo docker run \
-v $EWS_CONFIG_DIR:/mnt/config \
--env REINFER_EWS_CONFIG=/mnt/config/your_ews_config.json \
--env REINFER_API_TOKEN=$REINFER_API_TOKEN \
--env REINFER_EWS_AUTH_PASS=$MSEXCHANGE_PASSWORD \
eu.gcr.io/reinfer-gcr/ews:$TAG \
reinfer-ews --reinfer-api-endpoint https://<mydomain>.reinfer.io/api/ &> ews_$(date -Iseconds).log
  • Remplacez <mydomain>.reinfer.io par votre point de terminaison d'API de locataire.
  • Remplacez your_ews_config.json par le nom de votre fichier JSON de configuration EWS.

L'appareil exécutera une synchronisation continue des e-mails dans la plate-forme Communications Mining. S'il est arrêté et redémarré, il récupère à partir du dernier état de synchronisation du compartiment stocké.

Avec Docker (stockage local)

L'appli EWS peut enregistrer les e-mails extraits localement au lieu de les transmettre à la plate-forme Communications Mining.

EWS_LOCAL_DIR=
MSEXCHANGE_PASSWORD=
CONFIG_OWNER=
CONFIG_KEY=
TAG=

sudo docker run \
-v $EWS_LOCAL_DIR:/mnt/ews \
--env REINFER_EWS_AUTH_PASS=$MSEXCHANGE_PASSWORD \
eu.gcr.io/reinfer-gcr/ews:$TAG \
reinfer-ews --local-files-prefix /mnt/ews \
--remote-config-owner $CONFIG_OWNER --remote-config-key $CONFIG_KEY &> ews_$(date -Iseconds).logEWS_LOCAL_DIR=
MSEXCHANGE_PASSWORD=
CONFIG_OWNER=
CONFIG_KEY=
TAG=

sudo docker run \
-v $EWS_LOCAL_DIR:/mnt/ews \
--env REINFER_EWS_AUTH_PASS=$MSEXCHANGE_PASSWORD \
eu.gcr.io/reinfer-gcr/ews:$TAG \
reinfer-ews --local-files-prefix /mnt/ews \
--remote-config-owner $CONFIG_OWNER --remote-config-key $CONFIG_KEY &> ews_$(date -Iseconds).log
  • L'appli s'attend à ce que la configuration se trouve dans $EWS_LOCAL_DIR/config/$CONFIG_OWNER/$CONFIG_KEY.json. Vous pouvez également fournir le chemin d'accès à la configuration en définissant la variable d'environnement $REINFER_EWS_CONFIG .
  • L'appareil enregistrera l'état de synchronisation dans $EWS_LOCAL_DIR/state. S'il est arrêté et redémarré, il reprendra à partir du dernier état de synchronisation enregistré.
  • L'appareil enregistrera les données dans $EWS_LOCAL_DIR/data.

Configuration du magasin dans Communications Mining

Au lieu de fournir un fichier de configuration local à l'appliance comme vous le faisiez si vous aviez suivi le guide de déploiement de l'appliance EWS, vous pouvez à la place gérer le fichier de configuration dans Communications Mining. Notez que si les fichiers de configuration locaux et distants sont spécifiés, l'appareil utilisera par défaut le fichier de configuration local.

Tout d'abord, téléchargez votre fichier de configuration JSON dans Communications Mining :

curl -H "Authorization: Bearer $REINFER_TOKEN" \
  -H "Content-Type: multipart/form-data" \
  -F 'file=@your-ews-config.json' \
  -XPUT https://<mydomain>.reinfer.io/api/v1/appliance-configs/<project-name>/<config-name>curl -H "Authorization: Bearer $REINFER_TOKEN" \
  -H "Content-Type: multipart/form-data" \
  -F 'file=@your-ews-config.json' \
  -XPUT https://<mydomain>.reinfer.io/api/v1/appliance-configs/<project-name>/<config-name>

Pour voir la configuration actuelle :

curl -H "Authorization: Bearer $REINFER_TOKEN" \
  -XGET https://<mydomain>.reinfer.io/api/v1/appliance-configs/<project-name>/<config-name>curl -H "Authorization: Bearer $REINFER_TOKEN" \
  -XGET https://<mydomain>.reinfer.io/api/v1/appliance-configs/<project-name>/<config-name>
Ensuite, dans le fichier YAML kubernetes, définissez le paramètre --remote-config-owner sur le nom du projet et le paramètre --remote-config-key sur le nom de la configuration.

Référence (Reference)

Paramètres d’application

Consultez le tableau ci-dessous pour obtenir une liste des paramètres d’application disponibles. Vous pouvez en savoir plus sur l'exécution de l'appli EWS ici.

ParamètreDESCRIPTION
--reinfer-api-endpointPoint de terminaison pour se connecter à l'API Reinfer. mutuellement exclusif avec --local-files-prefix.
--local-files-prefixChemin d'accès pour stocker les e-mails synchronisés et l'état de synchronisation du compartiment. Listé mutuellement exclusif avec --reinfer-api-endpoint et REINFER_API_TOKEN.
--remote-config-ownerProjet qui possède le fichier de configuration de l'appli EWS distante.
--remote-config-keyNom du fichier de configuration de l'appli EWS distante.
--debug-levelNiveau de débogage. 0 = Pas de débogage, 1 = Débogage du service, 2 = Débogage complet. Par défaut : 1.
--shard-nameNom de la partition, c'est-à-dire ews-N pour extraire le numéro de la partition. Lors de l'exécution dans Kubernetes, vous pouvez le définir sur le nom du pod.
--total-shardsLe nombre total d'instances dans le cluster d'appareils. Lors de l'exécution dans Kubernetes, doit être défini sur la même valeur que le nombre d'instances dans l'ensemble d'états.
--restart-on-unrecoverable-errorsSi cette option est activée, les défaillances irrécupérables entraîneront le redémarrage de l’ensemble du service sans planter.

Paramètres de configuration

Consultez le tableau ci-dessous pour découvrir une liste des paramètres de configuration disponibles. Vous pouvez en savoir plus sur l'écriture du fichier de configuration de l'appli EWS ici.

NomDESCRIPTION
hostHôte du serveur Exchange. Peut être remplacée par la variable d'environnement REINFER_EWS_HOST .
portPort du serveur Exchange. Par défaut : 80. Peut être remplacée par la variable d'environnement REINFER_EWS_PORT .
auth_typeSeul « ntlm » autorisé.
auth_userUtilisateur du serveur Exchange. Peut être remplacée par la variable d'environnement REINFER_EWS_AUTH_USER .
auth_passwordMot de passe du serveur Exchange. Peut être remplacée par la variable d'environnement REINFER_EWS_AUTH_PASS .
access_typeType d'accès : "délégué" ou "emprunt d'identité". Par défaut : "delegate". Peut être remplacée par la variable d'environnement REINFER_EWS_ACCESS_TYPE .
ews_ssl_verifySi défini sur « false », ne vérifie pas les certificats. Par défaut : "true".
poll_frequencyLe temps d’attente entre les lots, en secondes. Par défaut : 15.
poll_message_sleepLa durée d'attente entre les e-mails individuels d'un lot, en secondes. Par défaut : 0,1.
max_concurrent_uploadsNombre de téléchargements simultanés vers Communications Mining, entre 0 et 32. Par défaut : 8.
emails_per_folderNombre maximum d'e-mails à récupérer dans chaque dossier par lot, entre 1 et 100 000. Par défaut : 2 520. Ce paramètre permet à l'appli de faire des progrès sur tous les dossiers de manière égale au cas où il y aurait un dossier très volumineux.
reinfer_batch_sizeNombre d'e-mails à récupérer par lot, entre 1 et 1 000. Par défaut : 80.
mailboxesListe des boîtes aux lettres à récupérer. Voir ici pour une explication sur la configuration des boîtes aux lettres.
audit_emailSi vous avez configuré l'appareil avec une configuration à distance, Communications Mining enverra un e-mail à cette adresse chaque fois que la configuration sera mise à jour. Par défaut : Aucun.
ews_ssl_ciphersRendre l'appli EWS utiliser des chiffrements spécifiques. Les chiffrements doivent être une chaîne au format de liste de chiffrement OpenSSL. Par défaut : Aucun.

Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Uipath Logo White
Confiance et sécurité
© 2005-2024 UiPath Tous droits réservés.