camunda-community-hub / camunda-8-inbound-connector-email-watch

Apache License 2.0
1 stars 2 forks source link

Community Extension Compatible with: Camunda Platform 8

Inbound Email Watch Connector Template

!!! Work in progress !!!

A starting point to build a Start and Intermediate Inbound Email Watch Connector. Monitor inbox folders for incoming emails and start process instances or throw intermediate events. Feedback and PRs are welcome! In the Connector you'll need to provide the username and password of the email account. For gmail you'll need to create an app password. You'll need to provide the IMAP protocol host URL, port, and connection timeout. You'll also need to provide the folder to monitor (typically "INBOX") and the long polling interval in seconds. Upon connector startup it will check for unread emails and start instances or publish messages. It will then use IMAP's IDLE protocol to wait for new emails to avoid needless polling. Despite standards that say IDLE can be active for up to 30 minutes, most vendors will close connections after a few minutes so be sure to keep the long polling interval to under five minutes in most cases.

There are four outputs and can be accessed from the event object: event.from, event.replyTo, event.subject, event.body

Example

For intermediate catch events you need to set a correlation key in the process using a variable and send the correlation key in the payload as part of the incoming message

Build

You can package the Connector by running the following command:

mvn clean package

This will create the following artifacts:

Shading dependencies

You can use the maven-shade-plugin defined in the Maven configuration to relocate common dependencies that are used in other Connectors and the Connector Runtime. This helps to avoid classpath conflicts when the Connector is executed.

Use the relocations configuration in the Maven Shade plugin to define the dependencies that should be shaded. The Maven Shade documentation provides more details on relocations.

API

Connector Properties

This Connector can be configured with the following properties:

Name Description Example
Username Username to authenticate with email server username@camunda.com
Password Password to authenticate with email server notapassword
IMAP protocol host URL URL to IMAP protocol email server imap.gmail.com
Port Port the email server is using 993
Connection timeout Connection timeout in milliseconds 5000
Folder Email folder to monitor, typically 'INBOX' INBOX
Polling interval Long polling interval, in seconds 120
Correlation key (process) - for intermediate catch event Process variable to correlate incoming message processCorrelationKey
Correlation key (payload) - for intermediate catch event Correlation key in incoming message event.messageCorrelationKey
Activation condition - for intermediate catch event Condition under which the Connector triggers event.aVariable = 'ok'

Output

This Connector produces the following output:

{
  "event": {
    "from": [ {
      "address": "someaddress@somedomain.com",
      "personal": "somebody",
      "group": false,
      "type":"rfc822"
    } ],
    "replyTo": [ {
      "address": "someaddress@somedomain.com",
      "personal":"somebody",
      "group":false,
      "type":"rfc822"
    } ],
    "subject":"Some subject",
    "body":["Body of email"]
  }
}

Test locally

Run unit tests

mvn clean verify

Test with local runtime

Use the Camunda Connector Runtime to run your function as a local Java application.

In your IDE you can also simply navigate to the LocalContainerRuntime class in test scope and run it via your IDE. If necessary, you can adjust application.properties in test scope.

Element Template

The element templates can be found in the element-templates directory.