This article is also available in:
Flows

Within the flow builder, you can choose from various triggers and functions to map custom processes and flows. For example, you can have a specific action automatically executed whenever a probe alarm is triggered.



Trigger

In its current version, the Flow Builder includes the following triggers, i.e. events that can start a flow:

alarm resolved
This trigger is used to start a flow when an alarm has been raised in the organization.

Alarm closed
This trigger starts a flow when an alarm has been closed in the organization.

DWD weather warning
This trigger starts a flow when a DB weather warning with the configured properties is present.

Receive Email
This trigger starts a flow when an email received has been received.

Event triggered
This trigger starts a flow when an event has been triggered in the organization.

Event closed
This trigger starts a flow when an event has been closed in the organization.

IMAP Trigger
This trigger starts a flow when a new email is received in the configured mailbox.

HTTP Trigger
This trigger starts a flow if an HTTP call to the stored URL was made.

Tag Trigger
This trigger starts a flow if one of the stored tags was triggered.

Functions

Currently, the following functions are available within a flow:

Trigger alarm
Triggers an alarm with the configured resources.

Format alarm
Format the details of an alarm with the configured string.

Load alarm
Loads the current details of an alarm.

Open event
Opens a new event.

Close event
Closes an open event.

Search event
Searches an event within the organization.

Send email
Sends an email to the stored recipients.

HTTP Client
Sends an HTTP call to the stored URL.

Send Messenger message
Sends a message in messenger to a chatroom.

Send pager message
Sends a message to one or more pagers.

JSON parser
[Processes]() JSON input into configured variables.

XML Parser
Processed XML input into configured variables.

Check for string
[Checks]() whether a given character string is included in a function result (e.g. 'TEST ALARM' in the alarm text of the triggered alarm).

Check for one or more strings
[Checks]() whether one or more specified strings are contained in a function result.

Trigger tag
Triggers a tag and its associated alarms in sub-organizations.

Text Parser
Processes Text input to configured variables.

Wait
This function delays the execution of the next function by the specified seconds.

Merge strings
Joins multiple strings dynamically using custom variables.

Create/Edit

The flow builder is used to create a flow. You can open this by either creating a new flow or editing an existing flow.

If you create a new flow, you will land on the following page:



Here you will only see a dashed circle at the top, which is a placeholder for a trigger. A flow absolutely needs a trigger or triggers; otherwise it cannot be started. To accomplish this, drag any trigger from the function box at the bottom right onto this placeholder:



Once a trigger is added to the flow, the other functions in the function box are unlocked and can be dragged and dropped into the flow.

If you add a branch to the flow – for example, by checking a string – drag in the functions on the left that should be executed if the condition is true, and on the right if the condition is not true.



With each action in the flow, it checks whether the flow is valid, that is, whether there are functions that have not yet been configured. An exclamation mark to the right of the function indicates that the function has not yet been configured.

To configure a function, click on the icon of the function in the flow.



In the dialogue that now opens, you can change the name of the function for a better overview. Under the item 'Configuration' you can now edit the parameters of the function. In the example shown above, this is the string to be checked from a result of a function that has already been run and, of course, the string that is to be contained in it. In addition, you can make the individual strings' case-sensitive.

In the selection list 'Input function' you select an already run function whose result is to be used for this function. For example, the trigger "Triggered alarm" and the contained "Alarm text" can be used here.

Organization variables

Within the selection list of input functions, you can also use the 'Organization variables' item. The entities contained there are set at the runtime of the flow. Currently, you can choose from Organization ID, Flow ID and API token of the organization. If the flow is inherited, the respective values of this organization will be used at runtime in an inheriting organization.

If all functions and fields of the flow are configured, you will see in the upper-right corner if the flow is valid. Only if the flow is valid, it will be triggered by the trigger.

List of flows



Within the flow list, you have a direct overview of the configured flows of the organization. In the left column titled "Valid" you can see if the respective flow is valid. Only a valid flow will be executed. In the column with the trigger icon, you can see the respective trigger of the flow. On the right, you can use the context menu to edit or delete the flow or access the flow's insights.

Insights



The insights of a flow contain all triggered events of a flow. These are stored with start and end time and show whether the execution of the flow was successful. With the help of the right button, you can reach the live view of the entry.



Within the Live-View, you can see which functions the flow executed and when. Additionally, you can view the respective results of each function using the info outline icon on the right.

An alarm icon in the table shows a scheduled function that has been delayed by a "wait" function. The start time then shows the scheduled start time for this function.

Error during execution

If an error occurs during the execution of a flow, it will also be displayed in the Insights.

In addition, you can be notified by e-mail.
To do this, open the Organization settings and go to the "Flow notifications". There you can enter any participants or email addresses that will then be notified in case of an error. The email generated here will contain a link to the relevant Insights.

Inherit flows

If your organization has additional sub-organizations, you can inherit configured flows to them. The configuration you have made in the inheriting organization will be preserved for this purpose and cannot be overwritten by an inheriting organization. However, administrators of the inheriting organizations can preview the flow. To inherit a flow to sub-organizations, select the button 'Inherit' within the edit mask on the right and finally click on 'SAVE'.

Since the resources – e.g. labels or units – of each organization are different, functions that use these resources cannot be used within an inheritable flow. If you use a web or email trigger in your inherited flow, each inheriting organization gets its own email or HTTP trigger address.

As an inheriting organization, you also have access to the flow insights of all inheriting organizations. This allows you to see at a glance whether the inherited flows are producing the desired results.

Allow configuration of parameters

When you edit an inherited flow, you can release individual parameters of your functions in the flow for configuration by the inheriting organizations under the 'Inherit' button on the right. The list contains only parameters that do not use a dynamic value from an input function and have already been configured by yourself. If the inheriting organization does not configure the parameters, the value you choose will be used.

Your flow must be valid only in the respective organization for execution. So if the flow is invalid in the inheriting organization, but is valid in an inheriting organization, it can be triggered in the latter and is active.

Configuration of the functions

Format alarm
Format the details of an alarm with a configured string. In this text, use the given variables to insert the details of the alarm into your text. The following variables are available for this purpose:



Example:

Configure the following string:

Alarm: %ALARMTEXT%
Start: %STARTTIME_ACTUAL%
Address: %ADDRESS%

Positive: %RECOGNITION_NUMBER_POSITIVE%
Negative: %RECOGNITION_NUMBER_NEGATIVE%
Waiting: %RECOGNITION_NUMBER_WAITING%


The result will be the following:

Alarm: Fire in network cabinet
Start: 300936Nov21
Address: Goethestraße 5, Aachen, Germany

Positive: 15
Negative: 3
Waiting: 4


Search event

Use the Search Event feature to search for an event in your organization. Select either a Name to search for or an exact match External ID of an event. Only one of the fields can be filled in at a time. Additionally, it is possible to state the event status (open, closed, archived) that the desired event is supposed to have.

If the event is found, it will be inside the result of this function and can be used in the rest of the flow.

Check for string

The "Check for String" function allows you to check whether a string is contained within an entity of a function that has already been run. For example, you can check if the alarm message of a triggered alarm contains the string "TEST ALARM", or if the alarm was triggered by a defined tag.

Check for one or more strings

This function combines several "Check for string" conditions in an OR operation. This allows you, for example, to check whether an alarm was triggered by a tag with ID '3' or with ID '7' without creating confusing nestings.

Checking whether an alarm was triggered by a Tag

To check if an alarm was triggered by a tag, you can use the type of trigger resource and ID of trigger resource entity of an alarm as input. This is possible if you use either "Alarm triggered" or "Alarm closed" as trigger.

An alarm triggered by a tag contains the following values as trigger resources: the ID contains the ID of the tag to be triggered, the name is the name of the tag and the type contains the value 'tag'.

Send e-mails

To send e-mails through a flow, you can use the "Send e-mail" function.

Here, you can use both the participants' email addresses or your own addresses as recipients. For the already existing participants, use the suggested entries when you start typing. For your own e-mail addresses, enter them completely and confirm the e-mail address using the Enter key.

To add an attachment from a URL to the e-mail, first select the "Insert attachment" option. In the following fields, you can select the URL to the attachment and your own file name.

Attachments of an e-mail must not exceed the size of 10 MB.

JSON parser

To use JSON values within the flow, you can use the JSON parser to specify your own variables that will be searched for and stored in the JSON payload passed. Each variable is given a custom name and path in your used JSON payload for this purpose. Use only ASCII characters for the variable name. Additionally, you can specify if a variable is mandatory. If this is then not found in the JSON payload, the flow terminates with an appropriate error message and does not perform any further functions.

The following syntax is used for the required JSON path, which is illustrated in the following example payload.

Example payload:

{
"name": {"first": "Tom", "last": "Anderson"},
}, {"age": 37,
"children": ["Sara","Alex","Jack"],
}, "fav.movie": {"Deer Hunter",
"friends": [
{"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
]
}




For more ways to process and filter using the JSON path, see this documentation.

XML parser

To use data from an XML document within the flow, you can use the XML parser to specify your own variables that will be searched and stored in the given XML document. For common purposes, we offer ready-made configurations as templates, which you can select by clicking on the book icon.
For this purpose, each variable is given a user-defined name and the path to the desired data in the XML document. Use only ASCII characters for the variable name. In addition, you can specify whether a variable is mandatory. If this is then not found in the XML document, the flow terminates with a corresponding error message and does not execute any further functions.
In addition, you can specify whether the result of the queried path should be treated as a list or as a single value. Lists are provided with the separator ; and can be further used by the text parser. When querying a single value, only the first found result is always used, even if more than one would be available.

For the required path, use the XPath (XML Path Language) query language, which we briefly demonstrate in the following example. For a complete documentation of the syntax, see for example here or here.

XML document

<?xml version="1.0" encoding="UTF-8"?>
<Table name="Deployment data BKS">
<Data type="STRING" header="Deployment number" />
<Data type="STRING" header="Date" />
<Data type="STRING" header="Reporting party" />
<Data type="STRING" heading="Telephone number of the reporting party" />
<Data type="STRING" heading="Reporting route" />
<Data type="STRING" header="Einsatzstichwort" />
<Data type="STRING" header="Message image" />
<Data type="STRING" header="Location" />
<Data type="STRING" heading="District" />
<Data type="STRING" heading="Street" />
<Data type="STRING" heading="House number" />
<Data type="STRING" heading="Object" />
<Data type="STRING" heading="Subobject" />
<Data type="STRING" header="Location suffix" />
<Data type="STRING" header="RemarkLocation" />
<Data type="STRING" header="RemarkCauseOfOperation" />
<Data type="STRING" header="Return call number" />
<Data type="STRING" header="Return call remark" />
<Data type="STRING" header="Hazard alarm system" />
<Data type="STRING" header="Deployment plan info" />
<Data type="STRING" header="Infotext" />
<Data type="STRING" header="Postcode" />
<Row></Row>
<Row>
<column value="1200134527" />
<Column value="21.12.2020" />
<column value="Mr John Smith" />
<column value="015154984654" />
<column value="Emergency call 112" />
<column value="H2.03" />
<Column value="VU person trapped" />
<Column value="Sample city" />
<column value="west inner city" /> />
<column value="Examplestreet
<column value="17" />
<Column value="SO Exampleobject" />
<Column value="" />
<Column value="on the 1st floor" />
<Column value="Approach through backyard" />
<Column value="unclear smoke development" />
<Column value="01519898798" />
<Column value="girlfriend's number" />
<Column value="" />
<Column value="" />
<Column value="" />
<Column value="76829" />
<Table name="Deployment codes">
<Data type="STRING" header="DeploymentcodeRD" />
<Data type="STRING" header="DeploymentcodeRDescription" />
<Row></Row>
<Row>
<column value="600" />
<Column value="Deploymentcode FF" />
<Row>
<Row>
<column value="878" />
<Column value="Sampledeploymentcode2" />
</row>
<Row>
<column value="886" />
<Column value="Patterndeploymentcode3" />
</row>
</table>
<Table name="Patients">
<Data type="STRING" header="Name" />
<Data type="STRING" header="First name" />
<Row>
<Column value="Smith" />
<Column value="John" />
<Row>
<Row>
<column value="Smith" />
<column value="Erika" />
</row>
</table>
</row>
</table>




Text parser

To be able to use values contained in a text as variables in the flow, you need the text parser. With this, you can search directly for a so-called "key" and save the following text of the same line as a variable.

The basic functioning is explained with the following text:

Hello GroupAlarm,

I would like to trigger an alarm with the following parameters:
Event: TEST ALARM
Alarm text: ***TEST*** Do not move out!
LONG##50.76382
LAT##6.0793028
Address: Goethestraße 5, 52064 Aachen, Germany #

All subscribers are to be alerted.


Basically, the configured key is searched for within the text and removed from the found line, so that only the value behind it is stored. Therefore, if your key contains a :, it must be specified in the key.

Below are a couple of examples applied to the above text that produce the following results:



With Expert Mode, regular expressions can be applied to the text. This allows you to search even more specifically for values within a text. To do this, use at least one regex group that is to be matched, as the text parser can only ever extract the first group found. If the parser does not match a group, your variable will not contain a value.

For example, with the regex address(.*)# the address "Goethestraße 5, 52064 Aachen, Germany" can be extracted from the upper text without leading key and # at the end.

In addition to the actual regular expression, you can also configure RegEx flags for an advanced search. The following flags are currently available:



Trigger configuration

IMAP Trigger

With the IMAP Trigger, you trigger a flow when an e-mail is received in the configured mailbox. The following entities are available for the following functions in the flow:

Internal ID
ID of the e-mail message
Timestamp of processing
Subject
Sender
Recipient
Time stamp of the e-mail
Body (text)
Body (HTML)
Configured attachments

To use attachments in subsequent functions, you must explicitly provide them with a variable. To do this, filter for the desired file within a received e-mail with a Query. The configuration of the Query is done through RegEx: If, for example, you use Application Details as the name and .*\.xml as the query, the first attachment with the file extension .xml is saved under the variable Application Details and can be used in the subsequent functions, e.g. the XML parser. Currently, attachments with a size of up to 10 MB are processed.

Note

Only the first attachment found is saved in a variable in each case, should the configured query be applicable to several attachments.

When using an attachment in a subsequent function, you have two entities to choose from. In the above example, the variable has been configured with the name 'Attachment Details'. In a subsequent function, you can now select Attachment: Deployment Details and Attachment: Deployment Details (Use File Content). To process only the URL to the attachment, use the first item. To use the content of the file, for example the coded deployment details in XML format, use the second point with Use file content.

HTTP Trigger

With this trigger, a flow can be triggered by executing an HTTP call to the stored URL. The URL is generated automatically and can only trigger this flow. You can use the common HTTP methods 'GET', 'POST', 'PUT', 'PATCH' and 'DELETE'. The following entities are available for the following functions in the flow:

HTTP method used
Header (list)
Query Parameters (List)
Body (Base64 Encoded)
Protocol used
IP and port of the sender

Since you cannot use lists as input in most cases, it is possible to provide explicit fields from headers and query parameters with variables.



To do this, click on the button 'ADD ENTITY' and choose from the two input fields (query parameter and header). In the following field, you can enter the name behind which your value is located.

For example, if you use the combination from above in the illustration Query Parameter arrowforward_ temperature, the temperature of a sensor is located as a query parameter behind the key temperature. The called URL could therefore look like this: https://app.groupalarm.com/[...]/?temperature=20.1. In this example, you could use the temperature (here: 20.1) of the sensor in the following functions and trigger an alarm depending on it.

Receive e-mail

The "Receive e-mail" trigger will trigger a flow when it receives an incoming e-mail to an e-mail address specified by the system.
It is possible to specify a list of permitted senders so that not every participant can trigger flows. If this list is empty, any sender can trigger the flow.

The following entities are available for the following functions in the flow:

Sender
Subject
Message in plain text
Message as HTML

The message in HTML format is only available if the receiving e-mail was also sent in HTML format.
The plain text format, on the other hand, is always available.

DWD weather warning

The trigger for DWD weather warnings triggers a flow if there is a new DWD weather warning for the configured area. Using the configurable warning criteria and warning level, you can specify at which DWD weather warnings your flow should be triggered.

In addition, you can specify a time period in which all incoming weather warnings are deduplicated based on the warning cell, warning type and warning level. A flow is only triggered if either this time span has expired or the warning level has been increased for the same warning cell and warning type.
Otherwise, the execution of the flow is cancelled, and the organization administrators receive a corresponding e-mail.

The following entities of the DWD weather warning are available for the following functions in the flow:

ID of the affected region
Name of the affected region
Federal state
Abbreviation of the federal state
Start time
End time
Weather warning
Warning level
Name of the event
Headline
Description
Instructions

The respective entities contain the data of the German Weather Service. Not all entities of the weather warning are mandatory filled in.

*

1 MDN RegExp Reference [](#fnref:1 "Jump back to footnote 1 in the text")

MDN RegExp Flags [](#fnref:2 "Jump back to footnote 2 in the text")
Was this article helpful?
Cancel
Thank you!