Communications Mining
Neuestes
False
Communications Mining-Entwicklerhandbuch
Last updated 17. Mai 2024

Selbst gehostete EWS-Integration

Die EWS-Appliance wird als Docker-Image bereitgestellt. In den folgenden Abschnitten wird erläutert, wie Sie die Einheit konfigurieren und bereitstellen.

Konfiguration

Die Anwendung erwartet, dass eine JSON-Konfigurationsdatei vorhanden ist. In diesem Abschnitt wird der Inhalt der Datei erläutert. Anweisungen zum Bereitstellen der Konfigurationsdatei für die Einheit finden Sie im Abschnitt „Bereitstellung“.

Kopieren Sie zum Starten das folgende Beispiel.

{
  "host": "https://exchange-server.example.com",
  "port": 443,
  "auth_type": "ntlm",
  "auth_user": "reinfer-ews-service-user",
  "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": "reinfer-ews-service-user",
  "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"
    }
  }
}
Ersetzen Sie zuerst die Dummy-Werte in host, port, auth_user und access_type durch ihre echten Werte. Eine Beschreibung dieser Parameter und deren zulässige Werte finden Sie in der Konfigurationsreferenz .
Jetzt fehlt nur noch das Kennwort, damit die Anwendung eine Verbindung mit dem Exchange-Server herstellen kann. Anstatt das Kennwort in der Konfigurationsdatei im Klartext zu speichern, sollte es der Anwendung als REINFER_EWS_AUTH_PASS -Umgebungsvariable zur Verfügung gestellt werden – dies wird im Abschnitt Bereitstellung beschrieben. Die vollständige Liste der Umgebungsvariablen, die Sie festlegen können, um Werte in der Konfiguration zu überschreiben, ist:
NameBESCHREIBUNG
REINFER_EWS_AUTH_USERExchange-Serverbenutzer
REINFER_EWS_AUTH_PASSKennwort für Exchange-Server
REINFER_EWS_ACCESS_TYPEZugriffstyp: „Delegieren“ oder „Identitätswechsel“
REINFER_EWS_HOSTExchange-Serverhost
REINFER_EWS_PORTExchange-Serverport
Ersetzen Sie schließlich die Dummy-Werte in mailboxes durch ihre echten Werte. Sie können ein oder mehrere Postfächer angeben. Für jedes Postfach müssen Sie die Postfachadresse angeben und die folgenden Parameter angeben:
NameBESCHREIBUNG
bucket.ownerProjekt des Buckets, in dem das Postfach synchronisiert werden soll.
bucket.nameName des Buckets, in dem das Postfach synchronisiert werden soll.
start_fromOb ab dem letzten synchronisierten Zeitpunkt („bucket“) gestartet oder die letzte synchronisierte Zeit ignoriert und immer bei start_timestamp gestartet werden soll („config“). Sollte für normalen Betrieb auf „bucket“ festgelegt werden, beim Debuggen kann jedoch in einigen Fällen „config“ nützlich sein.
start_timestampZeitstempel, ab dem die Synchronisierung der E-Mails gestartet werden soll. Wird diese Option nicht festgelegt, werden alle E-Mails synchronisiert.

Die Konfiguration verwendet die Standardwerte für eine Reihe von Einstellungen, z. B. die Abrufhäufigkeit oder Batchgröße. Informationen zum weiteren Anpassen Ihrer Konfiguration finden Sie in der Konfigurationsreferenz.

Buckets

Die Exchange-Integration synchronisiert rohe E-Mail-Daten mit Communications Mining- Buckets. Wie bei anderen Communications Mining-Ressourcen wird ein Bucket in einem Projekt erstellt, mit dem Sie den Zugriff auf den Bucket steuern können. Zum Lesen aus einem Bucket, zum Hochladen in ein Bucket oder zum Verwalten von Buckets benötigt der Benutzer die entsprechenden Berechtigungen in dem Projekt, in dem sich der Bucket befindet.

Bereitstellung

Sie können die EWS-Appliance entweder mit Kubernetes oder mit Docker bereitstellen.

Durch die Bereitstellung mit Kubernetes können Sie mehrere Instanzen der EWS-Appliance ausführen, wobei jede Instanz eine Teilmenge der zu synchronisierenden Postfächer verarbeitet.

Mit Kubernetes

Kubernetes ist eine beliebte Methode zum Ausführen und Verwalten von Containeranwendungen. Dieser Abschnitt zeigt Ihnen, wie Sie die EWS-Appliance mit Kubernetes bereitstellen. Es wird davon ausgegangen, dass Sie mit Kubernetes vertraut sind und kubectl installiert haben. Bitte lesen Sie diese Dokumentation, wenn Sie Hilfe beim Einstieg in Kubernetes benötigen.

Für die Bereitstellung auf Kubernetes müssen Sie eine YAML-Datei erstellen, die Ihre Anwendung beschreibt. Kopieren Sie zum Starten das folgende Beispiel.

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

Bevor Sie die Anwendung mit dieser YAML-Datei bereitstellen können, müssen Sie einige zusätzliche Schritte ausführen.

Ersetzen Sie zuerst <mydomain>.reinfer.io durch Ihren Mandanten-API-Endpunkt.
Zweitens werden die Umgebungsvariablen REINFER_TOKEN und REINFER_EWS_AUTH_PASS mit Kubernetes-Geheimnissen aufgefüllt, da wir vermeiden möchten, Anmeldeinformationen als Klartext in unserer YAML-Datei zu speichern. Erstellen Sie die Geheimnisse wie folgt:
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>

Da wir schließlich die Gerätekonfiguration aus einer lokalen Datei laden möchten, müssen wir diese Datei in den Pod einbinden. Dazu speichern wir die Daten in einer Kubernetes ConfigMap und stellen die ConfigMap als Volume bereit. Erstellen Sie die ConfigMap wie folgt:

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
Hinweis:

Hinweis

Als Alternative zum lokalen Speichern der Konfigurationsdatei können Sie sie in Communications Mining hochladen und von der EWS-Appliance über die Communications Mining-API abrufen lassen. Dies wird hier beschrieben. Wenn sowohl lokale als auch Remote-Konfigurationsdateien angegeben sind, verwendet die Einheit die lokale Konfigurationsdatei.

Sie können nun Ihr StatefulSet erstellen und überprüfen, ob alles läuft:

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

Mit Docker

Alternativ können Sie die EWS-Appliance in Docker ausführen. Der folgende Befehl startet die Anwendung mit den gleichen Parametern, die im Abschnitt Kubernetes verwendet werden.

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
  • Ersetzen Sie <mydomain>.reinfer.io durch Ihren Mandanten-API-Endpunkt.
  • Ersetzen Sie your_ews_config.json durch den Namen Ihrer EWS-Konfigurations-JSON-Datei.

Die Anwendung wird kontinuierlich ausgeführt und synchronisiert E-Mails mit der Communications Mining-Plattform. Wenn er angehalten und erneut gestartet wird, nimmt er den Zustand des zuletzt gespeicherten Bucket-Synchronisierungsstatus wieder auf.

Mit Docker (lokaler Speicher)

Die EWS-Appliance kann extrahierte E-Mails lokal speichern, anstatt sie in die Communications Mining-Plattform zu pushen.

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
  • Die Anwendung erwartet, die Konfiguration in $EWS_LOCAL_DIR/config/$CONFIG_OWNER/$CONFIG_KEY.json zu finden. Alternativ können Sie den Pfad zur Konfiguration angeben, indem Sie die Umgebungsvariable $REINFER_EWS_CONFIG festlegen.
  • Die Maschine speichert den Synchronisierungsstatus in $EWS_LOCAL_DIR/state. Wenn sie angehalten und erneut gestartet wird, wird der Vorgang ab dem zuletzt gespeicherten Synchronisierungsstatus fortgesetzt.
  • Die Anwendung speichert Daten in $EWS_LOCAL_DIR/data.

Speicherkonfiguration in Communications Mining

Anstatt der App eine lokale Konfigurationsdatei zur Verfügung zu stellen, wie wenn Sie der Anleitung zur Bereitstellung der EWS-Appliance gefolgt sind, können Sie die Konfigurationsdatei stattdessen in Communications Mining verwalten. Beachten Sie, dass, wenn sowohl lokale als auch Remote-Konfigurationsdateien angegeben sind, die Einheit standardmäßig die Verwendung der lokalen Konfigurationsdatei verwendet.

Laden Sie zuerst Ihre JSON-Konfigurationsdatei in Communications Mining hoch:

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>

So zeigen Sie die aktuelle Konfiguration an:

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>
Legen Sie dann in der Kubernetes-YAML-Datei den Parameter --remote-config-owner auf den Projektnamen und den Parameter --remote-config-key auf den Konfigurationsnamen fest.

Referenz (Reference)

Anwendungsparameter

Eine Liste der verfügbaren Anwendungsparameter finden Sie in der folgenden Tabelle. Weitere Informationen zum Ausführen der EWS-Appliance finden Sie hier.

ParameterBESCHREIBUNG
--reinfer-api-endpointEndpunkt zum Herstellen einer Verbindung mit der reinfer API. Sich gegenseitig ausschließen mit --local-files-prefix.
--local-files-prefixPfad zum Speichern synchronisierter E-Mails und Bucket-Synchronisierungsstatus. Sich gegenseitig ausschließen mit --reinfer-api-endpoint und REINFER_API_TOKEN.
--remote-config-ownerProjekt, das die Remote-Konfigurationsdatei der EWS-Appliance besitzt.
--remote-config-keyName der Remote-Konfigurationsdatei der EWS-Appliance.
--debug-levelDebug-Stufe. 0 = Kein Debuggen, 1 = Dienst-Debuggen, 2 = Vollständiges Debuggen. Standard: 1.
--shard-nameShardname, also ews-N , aus dem die Shardnummer extrahiert werden soll. Bei der Ausführung in Kubernetes können Sie ihn auf den Pod-Namen festlegen.
--total-shardsDie Gesamtzahl der Instanzen im Gerätecluster. Muss bei der Ausführung in Kubernetes auf den gleichen Wert wie die Anzahl der Instanzen im StatefulSet festgelegt werden.
--restart-on-unrecoverable-errorsWenn diese Option aktiviert ist, führen nicht behebbare Fehler dazu, dass der gesamte Dienst neu gestartet wird, ohne abzustürzen.

Konfigurationsparameter

Eine Liste der verfügbaren Konfigurationsparameter finden Sie in der folgenden Tabelle. Weitere Informationen zum Schreiben der EWS-Appliance-Konfigurationsdatei finden Sie hier.

NameBESCHREIBUNG
hostExchange-Serverhost. Kann durch die Umgebungsvariable REINFER_EWS_HOST überschrieben werden.
portExchange-Serverport. Standard: 80. Kann durch die Umgebungsvariable REINFER_EWS_PORT überschrieben werden.
auth_typeNur „ntrm“ zulässig.
auth_userExchange-Serverbenutzer. Kann durch die Umgebungsvariable REINFER_EWS_AUTH_USER überschrieben werden.
auth_passwordKennwort für Exchange-Server. Kann durch die Umgebungsvariable REINFER_EWS_AUTH_PASS überschrieben werden.
access_typeZugriffstyp: „Delegieren“ oder „Identitätswechsel“. Standard: „delegate“. Kann durch die Umgebungsvariable REINFER_EWS_ACCESS_TYPE überschrieben werden.
ews_ssl_verifyWenn „false“ festgelegt ist, werden die Zertifikate nicht überprüft. Standard: „true“.
poll_frequencyDie Wartezeit zwischen den Batches in Sekunden. Standard: 15.
poll_message_sleepDie Wartezeit zwischen einzelnen E-Mails in einem Batch in Sekunden. Standard: 0.1.
max_concurrent_uploadsAnzahl der gleichzeitigen Uploads in Communications Mining zwischen 0 und 32. Standard: 8.
emails_per_folderDie maximale Anzahl der E-Mails, die aus jedem Ordner pro Batch abgerufen werden können, liegt zwischen 1 und 100.000. Standard: 2520. Mit dieser Einstellung kann die Anwendung bei allen Ordnern gleichmäßig voranschreiten, auch wenn der Ordner sehr groß ist.
reinfer_batch_sizeDie Anzahl der abzurufenden E-Mails pro Batch, zwischen 1 und 1000. Standard: 80.
mailboxesListe der abzurufenden Postfächer. Eine Erklärung zum Konfigurieren der Postfächer finden Sie hier .
audit_emailWenn Sie die Anwendung mit einer Remote -Konfiguration konfiguriert haben, sendet Communications Mining eine E-Mail an diese Adresse, wenn die Konfiguration aktualisiert wird. Standard: Keine.
ews_ssl_ciphersStellen Sie sicher, dass die EWS-Appliance bestimmte Verschlüsselungen verwendet. Die Verschlüsselungen müssen eine Zeichenfolge im OpenSSL-Verschlüsselungslistenformat sein. Standard: Keine.

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
UiPath Logo weiß
Vertrauen und Sicherheit
© 2005-2024 UiPath. All rights reserved.