Saltar a contenido

Archivos de Resultado

Utilizando el SDK de BotCity Maestro, puedes cargar artefactos en el orquestador de BotCity Maestro para que estén disponibles para otros usuarios o aplicaciones a través del portal web o la API.

Archivos de Resultado

Llamamos a estos archivos artefactos porque son el resultado de la ejecución de una tarea y pueden ser cualquier tipo de archivo.

Cómo usar archivos de resultado con el SDK de Maestro

Puedes cargar fácilmente archivos de resultado en la plataforma utilizando el SDK de Maestro en tu código de automatización.

Instalación

Si aún no tienes instalada la dependencia, simplemente sigue estas instrucciones:

pip install botcity-maestro-sdk

Important

Además de la instalación, recuerda incluir la dependencia en el archivo requirements.txt del bot.

<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

Importar el SDK

Después de la instalación, importa la dependencia e instancia el SDK de Maestro:

# 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)

Cargar un archivo de resultado

# Uploading a result file (artifact) to the Maestro.
maestro.post_artifact(
    task_id=execution.task_id,
    artifact_name="My Artifact.png",
    filepath="screenshot.png"
)
// Uploading a result file (artifact) to the Maestro.
File artifact = new File("screenshot.png");
maestro.postArtifact(botExecution.getTaskId(), "My Artifact.png", artifact);
// Uploading a result file (artifact) to the Maestro.
const filepath = "screenshot.png"
const artifact = await maestro.createArtifact(executionTask.id, "My Artifact.png", filepath)
// Uploading a result file (artifact) to the Maestro.
const filepath: string = "screenshot.png"
const artifact: Artifact = await maestro.createArtifact(executionTask.id, "My Artifact.png", filepath)

Código completo

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()

    bot = DesktopBot()

    # Take and save a screenshot in the path given
    bot.save_screenshot("screenshot.png")

    # Uploading a result file (artifact) to the Maestro
    maestro.post_artifact(
        task_id=execution.task_id,
        artifact_name="My Artifact.png",
        filepath="screenshot.png"
    )

    # 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);

            // Take and save a screenshot in the path given
            saveScreenshot("screenshot.png");

            // Uploading a result file (artifact) to the Maestro.
            File artifact = new File("screenshot.png");
            maestro.postArtifact(botExecution.getTaskId(), "My Artifact.png", artifact);

            // 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)

    const desktopBot = new DesktopBot()

    // Take and save a screenshot in the path given
    const filepath = await desktopBot.screenshot('/home/user/', 'screenshot.png')

    // Uploading a result file (artifact) to the Maestro.
    const artifact = await maestro.createArtifact(executionTask.id, "My Artifact.png", filepath)

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)

    const desktopBot = new DesktopBot()

    // Take and save a screenshot in the path given
    const filepath = await desktopBot.screenshot('/home/user/', 'screenshot.png')

    // Uploading a result file (artifact) to the Maestro.
    const artifact: Artifact = await maestro.createArtifact(executionTask.id, "My Artifact.png", filepath)

main()

Tip

Observa las otras operaciones que podemos realizar con archivos de resultado utilizando el SDK de BotCity Maestro y la API de BotCity Maestro.