Parámetro use avanzado
El parámetro use ofrece opciones avanzadas que mejoran tu control sobre cómo se procesan las entradas.
Estas funciones son especialmente útiles en situaciones complejas, como cuando los Steps necesitan
combinar entradas o seguir secuencias de procesamiento específicas.
Agrupación de Steps
Algunos Robots pueden reunir los resultados de varios Steps en una sola invocación. Por
ejemplo, 🤖/file/compress normalmente crearía un archivo comprimido por
cada archivo que se le pase. Sin embargo, si estableces bundle_steps en true, creará un archivo comprimido
que contendrá todos los archivos resultantes de cada Step que le proporciones.
Para habilitar la agrupación, proporciona al parámetro use un objeto como el siguiente:
"use": {
"steps": [
":original",
"encoded",
"resized"
],
"bundle_steps": true
}
El parámetro bundle_steps es esencial para
🤖/video/adaptive. Sin él, generarás un archivo de lista de reproducción maestra
por cada calidad de visualización.
Agrupación por archivo original
El parámetro group_by_original organiza los archivos de salida según el archivo de entrada del que provienen, por lo que resulta
esencial en flujos de trabajo donde quieres asegurarte de que las salidas se agrupen con el archivo de entrada que
las produjo, por ejemplo, al usar 🤖/file/compress
Robot. En este caso, quizá quieras crear un archivo comprimido independiente por cada archivo subido o
importado, en lugar de crear uno que contenga todas las subidas originales (o uno por cada archivo resultante).
Ejemplo:
"compress": {
"use": {
"steps": ["thumbnails"],
"bundle_steps": true,
"group_by_original": true
},
"robot": "/file/compress"
}
Esta configuración indica que el Step compress debe considerar la salida del
Step thumbnails, agregar estas salidas por archivo original y, luego, comprimirlas
según corresponda.
Campos
Puedes filtrar y seleccionar archivos específicos según los nombres de sus campos mediante la opción fields.
Cuando se especifica este arreglo, el Step correspondiente solo se ejecutará para los archivos
enviados mediante uno de los nombres de campo indicados.
Los nombres de campo deben coincidir con los nombres asignados a los campos de entrada de archivos en tu formulario HTML, según se definen en el
atributo name de la etiqueta de entrada de archivos. Cuando usas un SDK de backend, corresponde a myFieldName1
en, por ejemplo: $transloadit->addFile('myFieldName1', './chameleon.jpg').
Ejemplo:
"use": {
"steps": [":original"],
"fields": ["myFieldName1"]
}
Este parámetro está establecido en true de forma predeterminada, lo que significa que se aceptan todos los campos.
Uso de as
A veces, los Robots reciben varias entradas. Por ejemplo, 🤖/video/merge puede crear una presentación a partir de audio e imágenes. Puedes asignar distintos Steps a las entradas correspondientes especificando el tipo de archivo con el que se debe tratar el Step.
"use": {
"steps": [
{ "name": "audio_encoded", "as": "audio" },
{ "name": "images_resized", "as": "image" }
]
}
Orden de los Steps
A veces, el orden es importante. Por ejemplo, con nuestra familia de Robots de
concatenación, quizá quieras especificar el orden exacto en el que se concatenarán tus archivos multimedia. En estos
casos, puedes agregar un índice al final del tipo de archivo, comenzando desde 1. También puedes, opcionalmente,
filtrar por el nombre del campo multipart. Como en este ejemplo, donde todos los archivos provienen de la misma
fuente (subidas de usuarios finales), pero tienen nombres de <input> diferentes:
"use": {
"steps": [
{ "name": ":original", "fields": "myFirstVideo", "as": "video_1" },
{ "name": ":original", "fields": "mySecondVideo", "as": "video_2" },
{ "name": ":original", "fields": "myThirdVideo", "as": "video_3" }
]
}
Cuando no sea evidente dónde colocar el archivo, puedes usar Assembly Variables para
especificarlo. Por ejemplo, quizá quieras pasar un archivo de texto a
🤖/image/resize para incrustar el texto en una imagen. Pero, si
estás incrustando varias marcas de agua en la imagen, ¿cómo señalas el archivo de texto que quieres
usar? Puedes especificarlo mediante ${use.text_1} para indicar el primer archivo de texto que se pasó.
Ejemplo:
"watermarked": {
"robot": "/image/resize",
"use": {
"steps": [
{ "name": "resized", "as": "base" },
{ "name": "transcribed", "as": "text" }
]
},
"text": [
{
"text": "Hi there",
"valign": "top",
"align": "left"
},
{
"text": "From the 'transcribed' Step: ${use.text_1}",
"valign": "bottom",
"align": "right",
"x_offset": 16,
"y_offset": -10
}
]
}
Proporcionar la marca de agua mediante un Assembly Step
También puedes pasar tanto el archivo de imagen base como la imagen de la marca de agua a un Assembly Step
mediante el parámetro use, lo que permite que ambos formen parte de la subida o usar los resultados de
otros Assembly Steps como entrada para tu
🤖/image/resize Step.
Para que esto funcione, solo necesitas usar la sintaxis as:
"my_image_step": {
"robot": "/image/resize",
"use": {
"steps": [
{ "name": ":original", "as": "base" },
{ "name": "watermark_step", "as": "watermark" }
]
}
}
Aquí, la salida de un Step watermark_step se usa como marca de agua, mientras que la imagen base se obtiene
de los archivos subidos.
Si usas varios campos de entrada de archivos, puedes indicar a Transloadit qué campo proporciona la imagen base
y cuál proporciona la marca de agua. Supongamos que tienes dos campos de entrada de archivos llamados the_image y
the_watermark. Estas Assembly Instructions harán que funcione mediante la condición fields:
"my_image_step": {
"robot": "/image/resize",
"use": {
"steps": [
{ "name": ":original", "fields": "the_image", "as": "base" },
{ "name": ":original", "fields": "the_watermark", "as": "watermark" }
]
}
}
Ten en cuenta que el parámetro watermark_url del Robot seguirá funcionando.