Vovó Ayuda

action.json y pad.json

Cada clave de los dos archivos que Vovó lee de una carpeta o un zip, generada desde el propio código de Vovó, así que siempre coincide con esta versión. Vovó revisa cada archivo al llegar y lo rechaza con una frase que dice qué está mal; una clave que no conoce se pasa por alto sin decir nada, y un editor que lee el schema la subraya.

Una clave lleva letras minúsculas, dígitos y _, y un nombre puede llevar también -, cada uno de 32 caracteres como máximo.

Para que un editor complete las claves y subraye los errores, nombra el schema al principio del archivo, como hacen los ejemplos. vovo dev escribe action.schema.json junto a las partes de una acción; el código fuente de Vovó tiene ambos en su carpeta api.

action.json

El manifiesto de una acción: cómo se llama, qué escucha, qué pide y qué ofrece a quien lleva el directo. Va junto a index.html, style.css, script.js y files/, en un paquete o una carpeta.

{
    "$schema": "./action.schema.json",
    "name": "Raffle",
    "id": "example.raffle",
    "version": "1.2.0",
    "api": 1,
    "author": "A maker",
    "site": "https://example.com/raffle",
    "description": "!join in chat joins the wheel; the panel draws the winner.",
    "license": "MIT",
    "triggers": ["chat", "timer"],
    "bindings": [
        { "event": "chat", "filter": [{ "field": "text", "op": "starts", "value": "!join" }] },
        { "event": "timer", "filter": [{ "field": "every", "op": "is", "value": 300 }] }
    ],
    "permissions": ["chat.send"],
    "controls": [
        { "key": "open", "label": "Entries open", "kind": "toggle" },
        { "key": "prize", "label": "Prize", "kind": "text" }
    ],
    "settings": [
        { "key": "color", "label": "Wheel colour", "kind": "color", "default": "#840926" },
        { "key": "size", "label": "Size", "kind": "number", "min": 200, "max": 800, "step": 10, "unit": "px", "default": 420 },
        { "key": "side", "label": "Side", "kind": "choice", "options": ["Left", "Right"], "default": "Right" }
    ],
    "panel": [
        { "kind": "control", "key": "open" },
        { "kind": "control", "key": "prize" },
        { "kind": "form", "name": "add", "label": "Put someone in", "button": "Put", "fields": [{ "key": "who", "label": "Name" }] },
        { "kind": "button", "name": "draw", "label": "Draw", "confirm": true },
        { "kind": "list", "key": "names", "label": "In the wheel", "empty": "Nobody yet", "buttons": [{ "name": "out", "label": "Take out", "confirm": true }] }
    ]
}

Condiciones

Cada disparador otra vez, con las condiciones que deben cumplirse todas para que active la acción, como las guarda el editor. Uno por cada nombre de triggers, en cualquier orden: si no coinciden uno a uno, todas las condiciones se descartan sin decir nada y cada disparador se activa con todo.

Una condición

Uno de los campos del evento comparado con un valor. Los textos se comparan sin distinguir mayúsculas; un número escrito como texto se lee como número.

Controles

Lo que el pad cambia mientras la acción funciona: cada uno guardado en vovo.state bajo su clave y comunicado a la acción como el evento control, que escucha sin tenerlo en la lista.

Ajustes

Lo que quien usa la acción puede cambiar sin su código, en Personalizar: se lee como vovo.settings.<key>, como --vovo-<key> en su CSS y, para activado o desactivado y una elección, como data-vovo-<key> en su documento. Lo elegido se queda con la acción, y un paquete lleva solo los valores por defecto. Como máximo ocho son textos.

Ajustes: color

Un color; el vino de Vovó, #840926, si la acción no dice otro.

Ajustes: number

Un número de un mínimo a un máximo, por pasos; el mínimo si la acción no dice otro.

Ajustes: toggle

Activado o desactivado; desactivado si la acción no dice otra cosa.

Ajustes: choice

Una de sus opciones; la primera si la acción no dice otra.

Ajustes: text

Una línea de texto; vacía si la acción no dice otra.

Ajustes: file

Una imagen, un sonido o un vídeo que elige quien la usa, de 50 MB como máximo; como viene la acción, uno de sus propios archivos, por su ruta, o ninguno.

Ajustes: font

Una de las fuentes del ordenador, por su familia; Segoe UI si la acción no dice otra.

Ajustes: camera

Una de las cámaras del equipo, que quien usa la acción elige en Personalizar, mostrada donde la acción la coloca (vovo.camera.place, con el permiso camera.show); cuatro como máximo. Viene sin ninguna, así que no tiene valor predeterminado.

Panel

Lo que la acción muestra a quien lleva el directo en Paneles, en la barra lateral: piezas en orden, cada una indicada por su kind, dibujadas por Vovó. Lo que se hace allí llega a la acción como el evento panel, que escucha sin tenerlo en la lista. Una pieza panel empieza otro panel, con las piezas que siguen hasta la próxima, y las piezas antes de la primera aparecen en todos; una tab divide un panel en secciones de la misma forma. Los nombres de botones, formularios y botones de una lista son únicos en la acción. Una acción declara como máximo 24 paneles, cada uno con 40 piezas y 12 pestañas como máximo.

Panel: panel

Aquí empieza otro panel, con una entrada propia en Paneles.

Panel: tab

Una sección del panel: las piezas que siguen, hasta la próxima pestaña.

Panel: heading

Un título sobre las piezas que siguen, que comparten una tarjeta.

Panel: note

Una línea que dice algo.

Panel: control

Uno de los controles de la acción, que se mueve aquí como en el pad.

Panel: button

Un botón.

Panel: form

Unos campos y un botón: lo que se escribe va con la pulsación, en los values del evento. Un formulario de un campo se escribe en el propio panel.

Campos de un formulario

Cada uno, una línea escrita en el panel, enviada con el formulario por su clave.

Panel: list

Una lista leída del estado de la acción, una línea por elemento, que pueden ser miles; una con más de ocho líneas tiene búsqueda propia.

Botones de una lista

Botones en cada línea de la lista.

pad.json

Un paquete de botones para el pad: un zip o una carpeta de sonidos y vídeos, con pad.json en la raíz indicando los grupos y sus botones; sin él, cada carpeta es un grupo y cada sonido o vídeo un botón con el nombre de su archivo. Importado otra vez, actualiza lo que nombra y deja el resto como está.

{
    "$schema": "./pad.schema.json",
    "groups": [
        {
            "name": "Sounds",
            "color": "#2F6FDB",
            "buttons": [
                { "label": "Applause", "icon": "👏", "sound": "sounds/applause.mp3", "favorite": true, "hotkey": "F13" },
                { "label": "Drum roll", "sound": "sounds/drums.ogg", "volume": 130 },
                { "label": "Rain", "video": "videos/rain.mp4", "key": "luma", "loop": true }
            ]
        },
        {
            "name": "Live",
            "buttons": [
                { "label": "Raffle", "action": "Raffle" },
                { "label": "Entries", "action": "Raffle", "control": "open" },
                { "label": "Starting", "scene": "Starting soon" },
                { "label": "Camera", "scene": "Game", "source": "Camera" },
                { "label": "Blur", "source": "Camera", "filter": "Blur" },
                { "label": "One minute", "team": "One minute, then I'm back." }
            ]
        }
    ]
}

Grupos

Un grupo del pad y sus botones, en orden.

Botones

Un botón y lo que hace: Vovó lee el primero de estos que encuentre, en este orden: sound; video; action con control; action; source con filter, o scene con source; scene. Un paquete trae como máximo 2000 botones.