Skip to content

Alerts

Go to Alerts

When we have multiple automations running at the same time, it is a challenge to visualize the entire operation. Alerts are used to provide small messages that can describe some specific aspect of a given automation.

There are three types of alerts on Maestro:

  • 🟦 INFO messages represented by the blue icon.
  • 🟨 WARNING messages represented by the yellow icon.
  • 🟥 ERROR messages represented by the red icon.

Alerts

Tip

Explore the Snippet Generator to get code examples that facilitate alert manipulations, access and learn how to generate info alerts, warning alerts, error alerts and customized emails via code.

The generated snippets are available in languages Python, Java, JavaScript, and TypeScript.

How to emit alerts using the Maestro SDK

You can easily send alerts to the platform using the Maestro SDK in your automation code.

Installation

If you don't have the dependency installed yet, just follow these instructions:

pip install botcity-maestro-sdk

Important

In addition to installing, remember to include the dependency in the bot's requirements.txt file.

<repositories>
    <repository>
        <id>nexus-botcity-public</id>
        <url>https://devtools.botcity.dev:8081/repository/botcity-public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <!-- Your other dependencies -->
    <dependency>
        <groupId>dev.botcity</groupId>
        <artifactId>maestro-sdk</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>
npm i @botcity/botcity-maestro-sdk
npm i @botcity/botcity-maestro-sdk

Importing the SDK

After installation, import the dependency and instantiate the Maestro SDK:

# Import for integration with BotCity Maestro SDK
from botcity.maestro import *

# Disable errors if we are not connected to Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False

# Instantiating the Maestro SDK
maestro = BotMaestroSDK.from_sys_args()
# Fetching the details of the current task being executed
execution = maestro.get_execution()
// Import for integration with BotCity Maestro SDK
import dev.botcity.maestro_sdk.*;
...

public void action(BotExecution botExecution) {

    try {
        // Instantiating the Maestro SDK
        BotMaestroSDK maestro = new BotMaestroSDK();
        maestro.login(botExecution);
    ...
// Import for integration with BotCity Maestro SDK
const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')

// Getting parameters passed by Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args

// Login with information from the Dev. Environment page
const maestro = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")

// Fetching the details of the current task being executed
const executionTask = await maestro.getTask(taskid)
// Import for integration with BotCity Maestro SDK
import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'

// Getting parameters passed by Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args

// Login with information from the Dev. Environment page
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")

// Fetching the details of the current task being executed
const executionTask: Task = await maestro.getTask(taskid)

Emitting a new alert

# Sending a new INFO alert
maestro.alert(
    task_id=execution.task_id,
    title="Info Alert",
    message="This is an info alert",
    alert_type=AlertType.INFO
)
// Sending a new INFO alert
maestro.alert(botExecution.getTaskId(), "Info Alert", "This is an info alert", AlertType.INFO);
// Sending a new INFO alert
const alert = await maestro.alert(executionTask.id, "Info Alert", "This is an info alert", "INFO")
// Sending a new INFO alert
const alert: Alert = await maestro.alert(executionTask.id, "Info Alert", "This is an info alert", "INFO")

Note

When emitting an alert, specific users can be notified by email. These users are configured on the Automations page in the Orchestrator.

Warn

Users who can receive email alerts are all those who have access to the Workspace where the automation was implemented.

Complete code

from botcity.core import DesktopBot
from botcity.maestro import *

# Disable errors if we are not connected to Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False

def main():
    maestro = BotMaestroSDK.from_sys_args()
    execution = maestro.get_execution()

    # Sending a new INFO alert
    maestro.alert(
        task_id=execution.task_id,
        title="Info Alert",
        message="This is an info alert",
        alert_type=AlertType.INFO
    )

    bot = DesktopBot()
    # Implement here your logic...
    ...

def not_found(label):
    print(f"Element not found: {label}")

if __name__ == '__main__':
    main()
import dev.botcity.framework.bot.DesktopBot;
import dev.botcity.maestro_sdk.BotExecutor;
import dev.botcity.maestro_sdk.BotMaestroSDK;
import dev.botcity.maestro_sdk.model.AlertType;
import dev.botcity.maestro_sdk.runner.BotExecution;
import dev.botcity.maestro_sdk.runner.RunnableAgent;

public class FirstBot extends DesktopBot implements RunnableAgent
{
    public FirstBot() {
        try {
            setResourceClassLoader(this.getClass().getClassLoader());
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void action(BotExecution botExecution) {

        try {
            BotMaestroSDK maestro = new BotMaestroSDK();
            maestro.login(botExecution);

            // Sending a new INFO alert
            maestro.alert(botExecution.getTaskId(), "Info Alert", "This is an info alert", AlertType.INFO);

            // Implement here your logic...
            ...

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    private void notFound(String label) {
        System.out.println("Element not found: "+label);
    }

    public static void main(String[] args) {
        BotExecutor.run(new FirstBot(), args);
    }
}
const main = async () => {
    const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')

    const args = process.argv.slice(2)
    const [server, taskid, token] = args

    const maestro = new BotMaestroSdk()
    maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")

    const executionTask = await maestro.getTask(taskid)

    // Sending a new INFO alert
    const alert = await maestro.alert(executionTask.id, "Info Alert", "This is an info alert", "INFO")
}

main()
const main = async () => {
    import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'

    const args = process.argv.slice(2)
    const [server, taskid, token] = args

    const maestro: BotMaestroSdk = new BotMaestroSdk()
    maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")

    const executionTask: Task = await maestro.getTask(taskid)

    // Sending a new INFO alert
    const alert: Alert = await maestro.alert(executionTask.id, "Info Alert", "This is an info alert", "INFO")
}

main()