API Vovó 1
Wygenerowane z własnego kodu Vovó, więc zawsze pasuje do tej wersji. Tekst od widzów zawsze przychodzi jako zwykły tekst, nigdy jako HTML.
Proste zdarzenia
Takie same na każdej platformie; {platform} mówi, na której. Do tego, co ma tylko jedna platforma, użyj jej własnego zdarzenia poniżej.
follow
Ktoś zaczął obserwować kanał. Pochodzi z twitch.follow.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.platform(platforma): Gdzie to się stało.
sub
Ktoś zasubskrybował, odnowił lub dostał subskrypcję w prezencie. Pochodzi z twitch.sub.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.tier(liczba): 1, 2 lub 3.months(liczba): Łączna liczba miesięcy subskrypcji.gift(tak lub nie): Czy był to prezent.platform(platforma): Gdzie to się stało.
raid
Inny kanał zrobił rajd na ten. Pochodzi z twitch.raid.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.viewers(liczba): Ile osób przyszło.platform(platforma): Gdzie to się stało.
chat
Wiadomość na czacie. Pochodzi z twitch.chat.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.text(tekst): Wiadomość jako zwykły tekst.parts(tekst i emotki): Wiadomość w częściach, po kolei:textkażdej z nich, a dla emotki także jej obraz, jakoimage, serwowany przez Vovó.vovo.chat.parts(e)zamienia je w węzły do pokazania.platform(platforma): Gdzie to się stało.
tip
Ktoś wysłał pieniądze lub bitsy. Pochodzi z twitch.cheer.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.amount(liczba): Ile, wcurrency.currency(tekst):bitsalbo kod waluty, np.BRL.text(tekst): Wiadomość jako zwykły tekst.platform(platforma): Gdzie to się stało.
Twitch
twitch.follow
Obserwacja na Twitchu.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.
twitch.sub
Subskrypcja, odnowienie lub subskrypcja w prezencie na Twitchu.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.tier(liczba): 1, 2 lub 3.months(liczba): Łączna liczba miesięcy subskrypcji.gift(tak lub nie): Czy był to prezent.gifter(tekst): Kto ją podarował, jeśli był to prezent.text(tekst): Wiadomość jako zwykły tekst.
twitch.raid
Rajd na Twitchu.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.viewers(liczba): Ile osób przyszło.
twitch.chat
Wiadomość na czacie Twitcha.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.text(tekst): Wiadomość jako zwykły tekst.parts(tekst i emotki): Wiadomość w częściach, po kolei:textkażdej z nich, a dla emotki także jej obraz, jakoimage, serwowany przez Vovó.vovo.chat.parts(e)zamienia je w węzły do pokazania.color(tekst): Kolor nazwy,#RRGGBB.badges(tekst): Odznaki, oddzielone przecinkami:moderator,subscriber.persona(tak lub nie): True, gdy linia jest samej persony, napisana na czacie z jej konta.
twitch.viewers
Ile osób ogląda transmisję. Twitch jest odpytywany mniej więcej raz na minutę w trakcie transmisji; to przychodzi, gdy liczba się zmienia, i z live równym false, gdy transmisja się kończy.
viewers(liczba): Ile osób ogląda teraz.live(tak lub nie): True, gdy transmisja trwa.
twitch.cheer
Bitsy wysłane na Twitchu.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.bits(liczba): Ile bitsów.text(tekst): Wiadomość jako zwykły tekst.
twitch.redemption
Odebrano nagrodę za punkty kanału.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.reward(tekst): Tytuł nagrody.reward_id(tekst): Id nagrody w Twitchu, który nie zmienia się po zmianie nazwy.input(tekst): To, co wpisano, w nagrodach, które o to proszą.redemption(tekst): Id tego odbioru w Twitchu: ten sam w jegotwitch.redemption.resolved.
twitch.redemption.resolved
Odbiór czekający w kolejce nagrody został zatwierdzony lub odrzucony (odrzucenie zwraca punkty).
user(tekst): Kto to zrobił, tak jak wyświetla platforma.reward(tekst): Tytuł nagrody.reward_id(tekst): Id nagrody w Twitchu, który nie zmienia się po zmianie nazwy.input(tekst): To, co wpisano, w nagrodach, które o to proszą.status(tekst):approved(zatwierdzony) lubrejected(odrzucony).redemption(tekst): Id tego odbioru w Twitchu, jak w jegotwitch.redemption.
twitch.hypetrain
Hype Train ruszył, posunął się lub się skończył.
level(liczba): Bieżący poziom.progress(liczba): Punkty w tym poziomie.goal(liczba): Punkty potrzebne na ten poziom.ended(tak lub nie): Czy właśnie się skończył.
Z Vovó i OBS
button
Naciśnięto jej przycisk na padzie.
label(tekst): Etykieta przycisku.
hotkey
Naciśnięto skrót globalny, z grą na pierwszym planie lub nie. Wyzwalacz podaje kombinację w warunku, keys to Ctrl+Alt+1, a aplikacja nasłuchuje jej, gdy profil jest aktywny.
keys(tekst): Kombinacja, na przykładCtrl+Alt+1.
timer
Timer się uruchomił. Wyzwalacz ustala w warunku, jak często, every to liczba sekund (5 lub więcej); bez tego uruchamia się co minutę. Liczy od pojawienia się wyzwalacza i zatrzymuje się podczas paniki.
every(liczba): Jego interwał, w sekundach.
control
Jedną z kontrolek akcji zmieniono na padzie. Jej nowa wartość jest też w vovo.state pod kluczem kontrolki, więc strona otwarta później ją pokaże. Akcja, która oferuje kontrolki, dostaje to bez dodawania jako wyzwalacza.
key(tekst): Klucz kontrolki, tak jak deklaruje go akcja.value(wartość kontrolki): Nowa wartość: true lub false, opcja, liczba całkowita albo linia tekstu.
settings
Zmieniło się to, co wybrano w ustawieniach akcji, w Dostosuj: vovo.settings, jej zmienne --vovo-<key> i atrybuty data-vovo-<key> mają już nowe wartości. Akcja, która deklaruje ustawienia, dostaje to bez dodawania jako wyzwalacza.
key(tekst): Klucz ustawienia albo pusto, gdy wszystkie wróciły do stanu z akcji.
panel
Coś zrobiono w panelu akcji (panel w jej manifeście, widoczny w Panelach na pasku bocznym): naciśnięto przycisk, wysłano formularz albo przycisk w wierszu listy. Tak jak control, akcja z panelem dostaje to bez dodawania jako wyzwalacza; uruchamia to tylko osoba prowadząca transmisję.
name(tekst): Nazwa przycisku, formularza lub przycisku wiersza, tak jak deklaruje ją panel.values(wartość kontrolki): Pola formularza według kluczy, każde jako linia tekstu; puste dla przycisku.item(wartość kontrolki): Dla wiersza listy element, który pokazuje, tak jak przechowuje go stan.index(liczba): Dla wiersza listy jego miejsce na liście, od 0; w innym przypadku -1.
webhook
Wywołano webhook przychodzący.
hook(tekst): Nazwa webhooka.data(dane): To, co wysłano, niezaufane: pokazuj tylko jako tekst.
obs.scene
OBS przełączył scenę.
scene(tekst): Scena, która jest teraz na antenie.previous(tekst): Poprzednia scena.
media.track
Zmieniło się to, co gra na tym komputerze: inny utwór albo odtwarzanie i pauza. Pochodzi z dowolnej aplikacji, która mówi Windows, co odtwarza (Spotify, przeglądarka, odtwarzacz).
title(tekst): Tytuł utworu.artist(tekst): Kto go wykonuje.album(tekst): Album, jeśli wiadomo.playing(tak lub nie): True podczas odtwarzania; false po pauzie lub zatrzymaniu.art(tekst): Adres okładki, dla<img src>; pusto, gdy jej nie ma.source(tekst): Aplikacja, w której gra.
audio.level
Jak głośny jest mikrofon, około 20 razy na sekundę, gdy się zmienia: dla poruszających się ust, wskaźnika, poświaty. Vovó słucha tylko wtedy, gdy otwarta nakładka pokazuje akcję, która na to czeka; sam dźwięk nigdy nie opuszcza komputera, tylko jego głośność.
level(liczba): Głośność od 0 (cisza) do 1 (najgłośniej), w skali zgodnej ze słuchem.peak(liczba): Najgłośniejszy moment od poprzedniego, od 0 do 1.speaking(tak lub nie): True, dopóki słychać głos, utrzymywane chwilę w krótkich przerwach.
screen.color
Kolor głównego ekranu, kilka razy na sekundę, gdy się zmienia: dla poświaty lub ramki, która podąża za grą. Odczytywany tylko wtedy, gdy otwarta nakładka pokazuje akcję, która na to czeka; nakładka ekranowa Vovó nigdy się w nim nie znajduje.
color(tekst): Średni kolor,#RRGGBB.vivid(tekst): Najbardziej wyrazisty kolor na ekranie,#RRGGBB: średnia ciąży ku szarości, ten nie.brightness(liczba): Jasność ekranu, od 0 (czarny) do 1 (biały).
input.move
Jak streamer porusza się w grze, do 60 razy na sekundę, gdy się zmienia: o ile obróciła się kamera, dokąd idzie i czy skacze. Dla sceny, która kołysze się z kamerą, przechyla przy ruchu w bok i opada przy skoku. Pochodzi z myszy, klawiszy ruchu (W, A, S i D według ich miejsca na klawiaturze, niezależnie od układu, albo strzałek, i spacji) oraz pierwszego podłączonego kontrolera (jego gałek i przycisku A), zawsze jako kierunek, nigdy jako który klawisz. Odczytywane tylko wtedy, gdy otwarta nakładka pokazuje akcję, która na to czeka, nic z reszty klawiatury, a klawisze nie, gdy okno Vovó jest na pierwszym planie (mysz i kontroler tak, chyba że komputer też je wstrzymuje). Gra uruchomiona jako administrator może ukryć swoje wejście przed Vovó, która działa bez tych uprawnień.
dx(liczba): O ile kamera obróciła się w bok od ostatniego razu, w prawo dodatnio: własny ruch myszy, w jej jednostkach (nie pozycja wskaźnika, którą gra trzyma w miejscu), z prawą gałką kontrolera jako dodatkiem.dy(liczba): O ile obróciła się w górę lub w dół, w dół dodatnio.walk(liczba): Od -1 (do tyłu) do 1 (do przodu): W lub S albo strzałki dają 1 lub -1, lewa gałka kontrolera tyle, ile jest wychylona; 0 w miejscu.strafe(liczba): Od -1 (w lewo, A) do 1 (w prawo, D), w ten sam sposób.jump(tak lub nie): True, gdy przytrzymana jest spacja albo A kontrolera.
speech.text
To, co streamer powiedział do mikrofonu, zapisane zdanie po zdaniu, na napisy: przez Whisper na tym komputerze albo przez OpenAI, jeśli streamer to wybrał (Ustawienia > Głos, Mowa na tekst). Mikrofon jest odczytywany tylko wtedy, gdy otwarta nakładka pokazuje akcję, która tego słucha; każde zdanie przychodzi, gdy kończy się jego pauza, sekundę lub dwie po wypowiedzeniu, i nic nie jest zachowywane.
text(tekst): Zdanie jako tekst.
screen.shared
Udostępniony ekran wszedł na antenę lub z niej zszedł: ekran, okno albo karta przeglądarki, własny ekran streamera (przechwycony przez samą Vovó albo z jej strony udostępniania w przeglądarce) albo ekran gościa, którego streamer wprowadził na antenę. Akcja, która go umieszcza (vovo.screen.place), go pokazuje. Przychodzi ponownie, nadal z on równym prawdzie, gdy coś innego zajmuje miejsce tego, co było udostępniane.
on(tak lub nie): True, gdy coś jest udostępniane.kind(tekst): Co jest udostępniane:screen,windowlubtab(karta tylko ze strony udostępniania); pusto, gdy nic.audio(tak lub nie): True, gdy przychodzi też dźwięk.guest(tekst): Gość, do którego należy ekran, pod nazwą nadaną przez streamera; pusto dla ekranu streamera.
camera
Kamera, którą akcja umieściła (vovo.camera.place), zaczęła się pokazywać na jej stronie albo przestała: streamer włączył lub wyłączył kamerę, panika ją wyłączyła, została odłączona albo używa jej inny program. Tak jak settings, akcja, która umieszcza kamerę, dostaje to bez dodawania jako wyzwalacza.
camera(tekst): Klucz ustawienia kamery, którą pokazuje, tak jak deklaruje go akcja.on(tak lub nie): true, dopóki jej obraz jest widoczny.
persona.answer
Persona komuś odpowiedziała, zatwierdzona, gdy zatwierdzanie jest włączone. Aplikacja sama wysyła to na czat i wypowiada, jeśli tak ustawiono; akcja to pokazuje.
persona(tekst): Imię persony.user(tekst): Kto to zrobił, tak jak wyświetla platforma.question(tekst): O co zapytano.answer(tekst): Jej odpowiedź.mood(tekst): To, co odpowiedź każe personie zrobić, ze słowa w nawiasach kwadratowych na początku lub końcu ([dancing] wygraliśmy!), małymi literami; pusto, jeśli go nie ma. Słowo jest usuwane z odpowiedzi, która trafia na czat i do mowy bez niego, więc osobowość może kazać personie działać podczas mówienia.
tts.spoken
Aplikacja przeczytała coś na głos na antenie: wiadomość z czatu, którą osoba prowadząca transmisję wybrała do przeczytania, albo tekst nagrody po zatwierdzeniu. Mówi to sama, głosem do czytania (Ustawienia > Głos); akcja to pokazuje albo daje coś do roboty ustom postaci. Linia, którą sama persona napisała na czacie, przychodzi z persona równym true, a aplikacja wypowiada ją głosem persony tylko wtedy, gdy persona ma mówić, więc akcja, która użycza personie głosu, mówi ją zamiast niej.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.text(tekst): Co przeczytano.source(tekst): Skąd przyszło:chatlubreward.persona(tak lub nie): True, gdy linia jest samej persony, napisana na czacie z jej konta.
music.request
Widz poprosił o utwór z odtwarzacza Vovó, przez nagrodę albo komendę na czacie (Ustawienia > Muzyka), i oto co się z nią stało: czeka na zatwierdzenie, trafiła do kolejki, zaczęła grać, została odrzucona przez prowadzącego albo nie została przyjęta i dlaczego. Vovó sama nic nie pisze na czacie; akcja tam odpowiada albo pokazuje, kto poprosił o to, co gra.
user(tekst): Kto to zrobił, tak jak wyświetla platforma.text(tekst): Co napisał, by o nią poprosić.song(tekst): Znaleziony utwór, jako tytuł i wykonawca; puste, gdy nie znalazła żadnego.state(tekst): Co się z nią stało:waiting,queued,playing,discardedalborefused.why(tekst): Dlaczego nie została przyjęta:none(żaden utwór nie pasuje),many(pasuje kilka tak samo),busy(jedna już czeka albo jest w kolejce),full(za dużo czeka),queued(utwór już jest w kolejce) alboagain(grał niedawno); w innych przypadkach puste.source(tekst): Jak poproszono:rewardalbochat.
sound.played
Przycisk dźwięku na padzie odtworzył swój dźwięk albo wylosowany spośród swoich dźwięków.
label(tekst): Nazwa przycisku.button(liczba): Id przycisku.file(tekst): Nazwa odtworzonego pliku, który z kilku, gdy przycisk losuje.seconds(liczba): Jak długo trwa plik, w sekundach z dokładnością do dziesiątej; 0, gdy Vovó nie mogła tego ustalić.
video.played
Przycisk filmu na padzie odtworzył swój film nad sceną albo wylosowany spośród swoich filmów.
label(tekst): Nazwa przycisku.button(liczba): Id przycisku.file(tekst): Nazwa odtworzonego pliku, który z kilku, gdy przycisk losuje.seconds(liczba): Jak długo trwa plik, w sekundach z dokładnością do dziesiątej; 0, gdy Vovó nie mogła tego ustalić.
remote.talk
Ktoś mówi na antenie z telefonu, trzymając przycisk mówienia jak w krótkofalówce: jego głos gra teraz we wszystkich nakładkach transmisji, ze strony sceny. Akcja pokazuje, kto mówi, dopóki mówi.
name(tekst): Telefon, pod nazwą nadaną przez streamera przy parowaniu.seconds(liczba): Jak długo trwa głos, w sekundach, z dokładnością do dziesiątej.
call.started
Rozmowa głosowa, o którą poprosiła akcja (vovo.call.start), jest otwarta: model jest na linii, słyszy ciszę, a to, co mówi, jeszcze nie gra, aż do vovo.call.answer. Każda strona pokazująca akcję to słyszy, więc każda może zadzwonić swoim telefonem i odebrać w tym samym tempie.
seconds(liczba): Limit rozmowy w sekundach, liczony od chwili, gdy o nią poproszono.
call.answered
Rozmowę odebrano (vovo.call.answer, z dowolnej strony): mikrofon dociera do modelu, a jego głos gra w transmisji.
call.text
To, co właśnie powiedziano w rozmowie, zapisane po kilka słów na bieżąco: obie strony mogą na siebie nachodzić. Na napisy lub transkrypcję; sam głos odtwarza strona sceny.
who(tekst):caller, osoba prowadząca transmisję przy mikrofonie, albomodel.text(tekst): Słowa do dołączenia do poprzednich w kolejności, w jakiej przyszły.start(liczba): Kiedy zaczęły się w rozmowie, w milisekundach.end(liczba): Kiedy się skończyły, w milisekundach.
call.ended
Rozmowa się skończyła albo nigdy się nie otworzyła: głos ucichł na każdej stronie.
reason(tekst):hangup(akcja lub aplikacja),panic,limit(limit rozmowy),content(moderacja modelu) albo cokolwiek innego dla rozmowy, która się zerwała lub nigdy nie otworzyła.seconds(liczba): Jak długo trwała, od chwili prośby.
overlay.connected
Połączyła się strona nakładki aktywnego profilu: OBS wczytał lub przeładował scenę. Akcje tej strony też to słyszą, gdy się wczytają.
scene(tekst): Nazwa sceny.pages(liczba): Ile stron pokazuje teraz tę scenę.
JavaScript
vovo.on: Wywołujelistenerza każdym razem, gdy zdarzenie zachodzi. Akcja musi mieć to zdarzenie wśród wyzwalaczy.vovo.show: Pokazuje szablon oznaczonydata-name="name", z{fields}wypełnionymi zejako zwykły tekst.vovo.emit: Mówi aplikacji, że coś się stało, np. skończyła się animacja: akcje, które mająnamewśród wyzwalaczy, to dostają. Dwie strony pokazujące akcję emitują to raz, obsługując jedno zdarzenie; wywołanie zrobione później (gdy animacja się kończy) wskazuje przezeventzdarzenie, na które odpowiada, jak wvovo.chat.send, a bez zdarzenia w tle ta sama nazwa i te same dane w ciągu 5 sekund to jedno zdarzenie.vovo.say: Wypowiadatextna głos w transmisji, głosem profilu albo tym podanym wvoice(część jego nazwy, język jakpt-BRalbo głos z folderu Piper, np.piper:pt_BR-faber-medium). Głos, którego ten komputer nie potrafi wygenerować (brak Piper lub jego głosu, brak klucza OpenAI), mówi zamiast tego głosem profilu, a konsola aplikacji to zgłasza.pitch(0,5 do 2) robi go wyższym lub niższym przy tej samej długości,ring(0 do 1) dodaje metaliczny pogłos, asmallzabiera mu klatkę piersiową: głos postaci z dowolnego głosu. Aplikacja generuje mowę raz dla stron, które proszą o nią podczas obsługi jednego zdarzenia, i każda odtwarza ten sam plik;eventjak wvovo.chat.send, a bez zdarzenia w tle ten sam tekst tym samym głosem w ciągu 5 sekund jest generowany raz. Spełnia się, gdy mowa się kończy.vovo.draw: Losuje jedną zentries, każdą z tym samym prawdopodobieństwem. Losuje aplikacja, więc losowanie jest uczciwe, a dziennik zapisuje zwycięzcę. Dwie strony pokazujące akcję (OBS i okno podglądu), które losują przy tym samym zdarzeniu, dostają tę samą odpowiedź: jeden zwycięzca, jedno losowanie w dzienniku.eventjak wvovo.chat.send.vovo.chat.send: Piszetextna czacie transmisji przez aplikację: jedna linia, do 500 znaków, jako streamer albo zas: "persona"przez własne konto persony na Twitchu (Integracje, pod Twitchem). Dopóki to konto nie jest połączone, taka linia jest odrzucana i w jej miejsce nic nie jest pisane jako streamer. Wymaga uprawnieniachat.send, a aplikacja pilnuje tempa (20 linii w 30 sekund, jedna na sekundę na akcję, niezależnie od tego, które konto je pisze); linia ponad to albo w czasie paniki jest pomijana, a promise zostaje odrzucona. Dwie strony pokazujące akcję piszą raz to, o co proszą przy obsłudze jednego zdarzenia; wywołanie po powrocie listenera (poawait, w timerze) wskazuje weventzdarzenie, na które odpowiada, ten sam obiekt, który dostał listener, inaczej aplikacja nie odróżni go od drugiego. W podglądzie edytora nic nie jest pisane: edytor pokazuje linię.vovo.pad.play: Naciska jeden z przycisków dźwięku lub filmu na padzie, po etykiecie (bez rozróżniania wielkości liter), tak jak zrobiłoby to naciśnięcie: nagroda lub komenda czatu może odtworzyć dźwięk, który streamer umieścił na padzie, a akcje słuchającesound.playedto słyszą. Tylko przyciski dźwięku i filmu. Wymaga uprawnieniapad.play; panika odmawia, dziennik zapisuje, że nacisnęła akcja, a dwie strony obsługujące jedno zdarzenie naciskają raz. Promise zostaje odrzucona, gdy takiego przycisku nie ma.eventjak wvovo.chat.send. W podglądzie edytora nic nie gra: edytor mówi, co by zagrało.vovo.pad.busy: Pokazuje jeden z przycisków tej akcji (przycisk akcji lub kontrolki, po etykiecie, bez rozróżniania wielkości liter) jako będący w toku na padzie przezseconds: jego dół opróżnia się z upływem czasu, na komputerze i na telefonach, żeby osoba prowadząca transmisję wiedziała, że to nadal trwa, tak jak przycisk dźwięku podczas odtwarzania. Zlock: truenaciśnięcie nic nie robi do tego czasu, a konsola mówi dlaczego.0kończy od razu. Widać to tylko, gdy jakaś strona pokazuje akcję, kończy się wraz z paniką i trwa najwyżej 15 minut; nie wymaga uprawnień, bo nie sięga żadnego przycisku poza przyciskami akcji. W podglądzie edytora pad się nie zmienia: edytor mówi, co by się zmieniło.vovo.pad.lock: Blokuje jeden z przycisków tej akcji (po etykiecie, tak jakvovo.pad.busy): wyblakły na padzie i telefonach, a jego naciśnięcie nic nie robi poza komunikatem w konsoli, dopóki akcja nie zwolni go przezfalse. Dla stanu akcji, a nie czegoś w toku (przycisk, który nic nie znaczy, gdy jego część sceny jest ukryta), więc nic się nie opróżnia: dla tego, co trwa chwilę,vovo.pad.busy. Blokuje tylko, gdy jakaś strona pokazuje akcję, a panika zwalnia; akcja, która zaczyna od nowa, mówi to ponownie. W podglądzie edytora pad się nie zmienia: edytor mówi, co by się zmieniło.vovo.obs.source: Pokazuje (true) lub ukrywa (false) źródło w scenie OBS, po nazwach, jakie nadaje im OBS, bez rozróżniania wielkości liter i akcentów; bezonprzełącza stan. Wymaga uprawnieniaobs.toggle; panika odmawia, dziennik to zapisuje, a dwie strony obsługujące jedno zdarzenie proszą raz. Promise spełnia się, gdy tylko OBS zostanie poproszony; nazwa, której OBS nie ma, jest zgłaszana w konsoli, z tą, o którą chodziło.eventjak wvovo.chat.send, w miejsceon, gdy go brak. W podglądzie edytora nic się nie zmienia: edytor mówi, co by się zmieniło.vovo.obs.filter: Włącza (true) lub wyłącza (false) filtr źródła OBS, po ich nazwach w OBS; bezonprzełącza stan. To samo uprawnienie i te same zasady covovo.obs.source.vovo.chat.parts: Wiadomość zdarzenia czatu jako węzły do wstawienia na stronę: jej słowa jako tekst, nigdy znaczniki, a emotki jako<img class="vovo-emote">z nazwą emotki walt. Wiadomość bez części to jej tekst.vovo.webhook.send: Prosi aplikację o wysłaniedatajako JSON (najwyżej 16 KB) do webhooka profilu o nazwiename, ustawionego w Ustawienia > Webhooki. Akcja nigdy nie widzi adresu i nigdy nie sięga sieci. Wymaga uprawnieniawebhook; aplikacja pilnuje tempa (30 na minutę, jeden na sekundę na akcję), wysyła raz to, o co dwie strony proszą razem, i nic nie wywołuje podczas paniki. Promise spełnia się, gdy webhook odpowie 2xx, a w przeciwnym razie jest odrzucana.eventjak wvovo.chat.send. W podglądzie edytora nic nie jest wysyłane: edytor pokazuje, co by poszło.vovo.screen.place: Pokazuje udostępniony ekran tam, gdzie jestelement, pod rysunkiem samej akcji (więc element i to, co za nim, muszą być tam przezroczyste), i podąża za nim, gdy się porusza;nullgo usuwa.fittocontain(w całości, domyślnie) lubcover(wypełniając miejsce);radiuszaokrągla rogi, w pikselach;backgroundto kolor (#000000) dla miejsca, którecontainzostawia wokół obrazu o innym kształcie, a które bez niego pozostaje przezroczyste i pokazuje to, co jest za sceną. Wymaga uprawnieniascreen.show.vovo.camera.place: Pokazuje kamerę, którą streamer wybrał w jednym z ustawień kamery akcji (camera, jego klucz; pierwsze, gdy nie podano) tam, gdzie jestelement, pod rysunkiem samej akcji (więc ta część musi być przezroczysta), i podąża za nim, gdy się porusza;nullją usuwa.fittocover(wypełniając miejsce, domyślnie) lubcontain(w całości);radiusibackgroundjak wvovo.screen.place;mirrorpokazuje ją jak lustro. Kamera jest otwierana tylko wtedy, gdy jakaś strona ją pokazuje, kamera streamera jest włączona, a panika wyłączona; zdarzeniecameramówi, kiedy jest widoczna. Akcja nigdy nie widzi jej obrazów ani nie wie, która to kamera. Wymaga uprawnieniacamera.show.vovo.media.play: Odtwarza klip z Twitcha, film z Twitcha lub film z YouTube, z jego linku, w oficjalnym odtwarzaczu, tam, gdzie umieścił govovo.media.place(w przeciwnym razie na całej scenie), z dźwiękiem; nowszy zajmuje jego miejsce. Akcja uruchamiana tylko przez osobę prowadzącą transmisję odtwarza go od razu; każda inna czeka, aż ktoś go zatwierdzi, tutaj lub z uprawnionego telefonu, bo mógł o to poprosić widz. Promise spełnia się, gdy wchodzi na antenę, i jest odrzucana, gdy zostanie odrzucony, pominięty lub poproszony w czasie paniki.secondsusuwa go po tym czasie: odtwarzacz nie wie, kiedy kończy się klip;eventjak wvovo.chat.send. W podglądzie edytora gra tam, bez dźwięku. Wymaga uprawnieniamedia.play.vovo.media.place: Gdzie gra klip lub film: tam, gdzie jestelement, pod rysunkiem samej akcji (więc element i to, co za nim, muszą być tam przezroczyste), podążając za nim, gdy się porusza;nullto znów cała scena. Odtwarzacz zachowuje kształt filmu w tym miejscu;radiuszaokrągla rogi, w pikselach.vovo.media.stop: Usuwa ze sceny klip lub film akcji, na każdej stronie, która ją pokazuje.vovo.call.start: Rozpoczyna rozmowę głosową z modelem AI na antenie: osoba prowadząca transmisję mówi do mikrofonu, model odpowiada na głos, a transmisja słyszy oboje. Aplikacja otwiera ją kluczem OpenAI streamera i utrzymuje; strony tylko odtwarzają głos.instructionsto kim jest model i jak mówi;voicejeden z głosów modelu;secondslimit rozmowy (najwyżej 300, to też wartość domyślna);backofficeto, czym odpowiada się na pytanie, które model przekazuje „do systemu”;phoneodtwarza głos jak przez linię telefoniczną. Promise spełnia się, gdy rozmowa jest otwarta, model słyszy ciszę i jeszcze nie jest odtwarzany (call.started); odbierz przezvovo.call.answer. Jest odrzucana przy odmowie. Wymaga uprawnieniacalli zaczyna się tylko od czegoś, co osoba prowadząca transmisję zrobiła ręcznie (przycisk pada, skrót, kontrolka, panel akcji), albo w akcji tylko dla niej: rozmowa jest płatna za sekundę, przekazuje mikrofon modelowi i wpuszcza na antenę to, co mówi model, bez czytania. Jedna rozmowa naraz; panika rozłącza i odmawia; podgląd edytora żadnej nie prowadzi.eventjak wvovo.chat.send.vovo.call.answer: Odbiera rozmowę: od teraz mikrofon dociera do modelu, a jego głos gra w transmisji. Model czeka, aż dzwoniący się odezwie; żeby odezwał się pierwszy,instructionmówi mu, jak odebrać,opening, od czego zacząć, acontext, co ma wiedzieć, nie mówiąc tego, wysyłane w tej kolejności. Odebrana z jednej strony jest odebrana: drugie odebranie nic nie robi.vovo.call.tell: Mówi coś modelowi w trakcie rozmowy, w jednej linii:context(domyślnie) to coś do wiedzenia bez mówienia,instructioncoś do wykonania,aloudcoś do powiedzenia. Dwie strony obsługujące jedno zdarzenie mówią to raz;eventjak wvovo.chat.send.vovo.call.end: Rozłącza rozmowę: głos od razu milknie na każdej stronie, a potem przychodzicall.ended.vovo.state: Obiekt, który przetrwa przeładowania nakładki i ponowne uruchomienia aplikacji. Jego klucze najwyższego poziomu są zapisywane, gdy tylko je ustawisz.vovo.settings: To, co wybrano z ustawień deklarowanych przez akcję (settingswaction.json), według klucza, albo każde tak, jak w akcji: kolor jako#RRGGBB, liczba, true lub false, opcja, linia, adres pliku (null, gdy brak), rodzina czcionki, a dla kamery true lub false, czy jakąś wybrano, nigdy którą. Wybierane w Dostosuj, przy komputerze, nigdy przez akcję; zdarzeniesettingsmówi, kiedy się zmieniają.
Szablony
{field} w szablonie jest wypełniane tym polem zdarzenia, jako zwykły tekst.
data-on: Na<template>: zdarzenie, które go pokazuje, wypełniony polami tego zdarzenia.data-name: Na<template>: nazwa, którejvovo.showużywa, by pokazać go z JavaScriptu.data-seconds: Na<template>: jak długo zostaje, zanim zostanie usunięty. Bez tego zostaje.data-vovo-<key>: Na korzeniu dokumentu, dla każdego ustawienia włącz/wyłącz, wyboru lub kamery:onluboff(kamera wybrana lub nie) albo wybrana opcja, do selektorów takich jakhtml[data-vovo-side="Prawa"] .chat.
CSS
--vovo-accent: Kolor akcentu wybrany w Vovó.--vovo-<key>: Każde ustawienie akcji jako CSS: kolor, liczba z jednostką (34px), 1 lub 0 dla włączone lub wyłączone albo kamery wybranej lub nie, opcja, linia lub rodzina czcionki w cudzysłowie, plik jakourl(...)lubnone.font-family: var(--vovo-font), sans-serif;
Uprawnienia
Akcja prosi o nie w swoim manifeście, a osoba, która ją instaluje, je zatwierdza.
chat.send: Pisanie na czacie kanału, przez aplikację: jako streamer albo przez własne konto persony.media.play: Klipy i filmy w transmisji, w ich oficjalnych odtwarzaczach; to, o co nie poprosiła osoba prowadząca, czeka na zatwierdzenie.call: Rozmowy głosowe z modelem AI na antenie: rozpoczynane tylko przez osobę prowadzącą transmisję, płatne za sekundę kluczem OpenAI streamera; mikrofon trafia do modelu, a to, co mówi, słychać bez czytania.screen.show: Pokazywać w transmisji to, co streamer udostępnia ze strony udostępniania Vovó.camera.show: Pokazywać w transmisji kamerę tego komputera, którą streamer wybrał dla akcji w Dostosuj, nigdy nie dając akcji jej obrazów.pad.play: Odtwarzać przyciski dźwięku i filmu na padzie, po etykiecie.obs.toggle: Pokazywać lub ukrywać źródła oraz włączać lub wyłączać filtry w OBS.webhook: Prosić aplikację o wywołanie jednego z webhooków wychodzących profilu.