[{"data":1,"prerenderedAt":1824},["ShallowReactive",2],{"guide:project-zomboid-talky":3},{"id":4,"slug":5,"status":6,"visibility":7,"required_feature":8,"category":9,"tags":15,"level":21,"icon":22,"cover_url":23,"default_locale":24,"locales":25,"title":27,"summary":30,"reading_minutes":33,"sort_order":34,"published_at":35,"updated_at":36,"blocks":37,"linked_guides":1815},4,"project-zomboid-talky","published","public",null,{"id":4,"slug":10,"name":11,"icon":14},"game-integrations",{"en":12,"fr":13},"Game integrations","Intégrations de jeux","ph:game-controller",[16,17,18,19,20],"project-zomboid","twitch","youtube","webhook","mod","intermediate","ph:skull","https://d1lvjaji8qt9t1.cloudfront.net/media/81ad99d9-ef7b-4b86-96b3-ac66cea543f1.png","fr",[24,26],"en",{"en":28,"fr":29},"Project Zomboid × LibertyTalk: Talky","Project Zomboid × LibertyTalk : Talky",{"en":31,"fr":32},"A Twitch follow spawns a zombie named after the follower, 300 bits send three of them, a channel points reward calls in the helicopter. Part 1: install the Talky mod and its bridge. Part 2: understand the workflows that connect your streams to the game.","Un follow Twitch fait apparaître un zombie à son nom, 300 bits en envoient trois, une récompense de points de chaîne appelle l'hélicoptère. Partie 1 : installer le mod Talky et son pont. Partie 2 : comprendre les workflows qui relient vos lives à la partie.",45,0,"2026-10-26T13:23:20Z","2026-10-30T11:55:53Z",[38,44,89,94,99,109,118,125,145,150,158,163,168,190,199,204,222,227,232,237,244,253,261,266,271,282,287,318,323,332,337,342,347,354,359,368,377,382,387,393,401,410,415,420,425,433,464,473,512,521,530,538,543,548,558,567,576,581,739,747,752,757,798,803,808,813,923,928,936,941,946,951,956,961,966,974,982,987,992,1085,1090,1095,1100,1113,1118,1123,1128,1136,1148,1153,1162,1170,1175,1180,1195,1200,1206,1212,1217,1255,1263,1268,1273,1278,1283,1291,1296,1301,1306,1351,1358,1364,1369,1374,1382,1387,1392,1397,1405,1464,1469,1490,1498,1503,1512,1517,1534,1565,1574,1583,1588,1605,1636,1645,1650,1658,1663,1694,1699,1704,1716,1724,1729,1750,1753,1805,1808],{"id":39,"text":40,"type":43},"intro-what",{"en":41,"fr":42},"Talky connects your Twitch and YouTube events to your Project Zomboid game. When Bob follows your channel, a banner announces him and, two seconds later, a zombie appears about ten tiles from your character, with \"Bob\" written in purple above its head. Talky has two pieces: a mod for the game and a small program, the bridge, that runs on your PC.","Talky relie vos événements Twitch et YouTube à votre partie de Project Zomboid. Quand Bob suit votre chaîne, un bandeau annonce son arrivée et, deux secondes plus tard, un zombie apparaît à une dizaine de cases de votre personnage, avec « Bob » écrit en violet au-dessus de sa tête. Talky se compose de deux pièces : un mod pour le jeu et un petit programme, le pont (« Bridge » dans le menu du jeu), qui tourne sur votre PC.","paragraph",{"id":45,"type":46,"steps":47,"caption":86},"intro-flow","flow",[48,56,64,72,79],{"kind":49,"label":50,"detail":53},"trigger",{"en":51,"fr":52},"Twitch follow","Follow sur Twitch",{"en":54,"fr":55},"Bob follows your channel.","Bob suit votre chaîne.",{"kind":57,"label":58,"detail":61},"action",{"en":59,"fr":60},"LibertyTalk widget","Widget LibertyTalk",{"en":62,"fr":63},"Sends `{\"user_name\":\"Bob\"}` to your bridge's address.","Envoie `{\"user_name\":\"Bob\"}` à l'adresse de votre pont.",{"kind":65,"label":66,"detail":69},"external",{"en":67,"fr":68},"cloudflared tunnel","Tunnel cloudflared",{"en":70,"fr":71},"Makes the bridge reachable from the Internet.","Rend le pont joignable depuis Internet.",{"kind":65,"label":73,"detail":76},{"en":74,"fr":75},"Talky bridge","Pont Talky",{"en":77,"fr":78},"Runs the `new_follower` workflow and drops the actions for the game.","Lance le workflow `new_follower` et dépose les actions pour le jeu.",{"kind":65,"label":80,"detail":83},{"en":81,"fr":82},"Talky mod","Mod Talky",{"en":84,"fr":85},"Shows the banner, then spawns the named zombie.","Affiche le bandeau puis fait apparaître le zombie nommé.",{"en":87,"fr":88},"The path of a follow, from Twitch to your game.","Le trajet d'un follow, du chat Twitch à votre partie.",{"id":90,"text":91,"type":43},"intro-why",{"en":92,"fr":93},"Why a bridge? Project Zomboid's Lua can't receive network calls: it can only read and write files in `%USERPROFILE%\\Zomboid\\Lua`. The bridge receives LibertyTalk's calls on `http://127.0.0.1:7420` and writes the actions into that folder, which the mod reads every second.","Pourquoi un pont ? Le Lua de Project Zomboid ne peut pas recevoir d'appel réseau : il sait seulement lire et écrire des fichiers dans `%USERPROFILE%\\Zomboid\\Lua`. Le pont reçoit les appels de LibertyTalk sur `http://127.0.0.1:7420` et écrit les actions dans ce dossier, que le mod lit chaque seconde.",{"id":95,"text":96,"type":43},"intro-plan",{"en":97,"fr":98},"Part 1 installs Talky and connects it to LibertyTalk with the official widget. Part 2 explains the workflows on both sides, so you can change what happens in the game when a viewer cheers 500 bits.","La partie 1 installe Talky et le relie à LibertyTalk avec le widget officiel. La partie 2 explique les workflows des deux côtés, pour que vous puissiez changer ce qui se passe dans la partie quand un viewer offre 500 bits.",{"id":100,"kind":101,"text":102,"type":105,"title":106},"intro-test-version","info",{"en":103,"fr":104},"Talky 0.5.0 works in single player and on a server (part 3). It has been tested in a real game on Build 42.21, in single player and on a dedicated server: follows, chat commands, bits, names above zombies, helicopter and weather.","Talky 0.5.0 fonctionne en solo et sur un serveur (partie 3). Il a été testé en vraie partie sur la Build 42.21, en solo et sur un serveur dédié : follows, commandes de chat, bits, noms au-dessus des zombies, hélicoptère et météo.","callout",{"en":107,"fr":108},"Tested version","Version testée",{"id":110,"type":111,"title":112,"summary":115},"part-1-enable-talky","part",{"en":113,"fr":114},"Turn on Talky in Project Zomboid","Activer Talky dans Project Zomboid",{"en":116,"fr":117},"Install the mod and the bridge, test without LibertyTalk, open the tunnel, then plug in the official widget.","Installer le mod et le pont, tester sans LibertyTalk, ouvrir le tunnel, puis brancher le widget officiel.",{"id":119,"text":120,"type":123,"level":124},"p1-prerequisites",{"en":121,"fr":122},"What you need","Ce qu'il vous faut","heading",2,{"id":126,"type":127,"items":128,"ordered":144},"p1-prerequisites-list","list",[129,132,135,138,141],{"en":130,"fr":131},"Windows 10 or 11.","Windows 10 ou 11.",{"en":133,"fr":134},"Project Zomboid **Build 42**, version 42.20.1 or later. This part covers single player; for a server, see part 3.","Project Zomboid **Build 42**, version 42.20.1 ou plus récente. Cette partie décrit le solo ; pour un serveur, voir la partie 3.",{"en":136,"fr":137},"[Node.js](https://nodejs.org/) version 18 or later, to run the bridge.","[Node.js](https://nodejs.org/) version 18 ou plus récente, pour faire tourner le pont.",{"en":139,"fr":140},"cloudflared, Cloudflare's tool that gives the bridge a public address.","cloudflared, l'outil de Cloudflare qui donne une adresse publique au pont.",{"en":142,"fr":143},"A LibertyTalk account with your Twitch or YouTube channel connected to your community.","Un compte LibertyTalk avec votre chaîne Twitch ou YouTube connectée à votre communauté.",false,{"id":146,"text":147,"type":43},"p1-prerequisites-winget",{"en":148,"fr":149},"Node.js and cloudflared install with two commands in a PowerShell terminal:","Node.js et cloudflared s'installent avec deux commandes dans un terminal PowerShell :",{"id":151,"code":152,"type":153,"caption":154,"language":157},"p1-prerequisites-code","winget install OpenJS.NodeJS.LTS\nwinget install --id Cloudflare.cloudflared","code",{"en":155,"fr":156},"Close and reopen the terminal after installing so the `node` and `cloudflared` commands are recognised.","Fermez puis rouvrez le terminal après l'installation pour que les commandes `node` et `cloudflared` soient reconnues.","powershell",{"id":159,"text":160,"type":123,"level":124},"p1-get-talky",{"en":161,"fr":162},"Get Talky","Récupérer Talky",{"id":164,"text":165,"type":43},"p1-get-talky-where",{"en":166,"fr":167},"You can download Talky from two places. The Steam Workshop ships the mod only: it refuses `.bat`, `.exe` and `.zip` files, and rewrites its folder on every update, which would wipe the bridge's configuration. The GitHub releases contain the bridge, `start-bridge.cmd` that starts it, and a copy of the mod to play without the Workshop.","Talky se télécharge à deux endroits. Le Steam Workshop distribue le mod seul : il refuse les fichiers `.bat`, `.exe` et `.zip`, et réécrit son dossier à chaque mise à jour, ce qui effacerait la configuration du pont. Les releases GitHub contiennent le pont, `start-bridge.cmd` qui le lance, et une copie du mod pour jouer sans le Workshop.",{"id":169,"type":170,"items":171},"p1-get-talky-links","links",[172,181],{"url":173,"kind":174,"label":175,"description":178},"https://steamcommunity.com/sharedfiles/filedetails/?id=3830066321","steam",{"en":176,"fr":177},"Talky on the Steam Workshop","Talky sur le Steam Workshop",{"en":179,"fr":180},"The mod, kept up to date by Steam. Subscribe to the Talky item.","Le mod, tenu à jour par Steam. Abonnez-vous à l'élément Talky.",{"url":182,"kind":183,"label":184,"description":187},"https://github.com/Tech-Liberty/talky-project-zomboid/releases","github",{"en":185,"fr":186},"Talky releases on GitHub","Releases GitHub de Talky",{"en":188,"fr":189},"The Windows zip: the bridge, `start-bridge.cmd` and a copy of the mod.","Le zip Windows : le pont, `start-bridge.cmd` et une copie du mod.",{"id":191,"kind":192,"text":193,"type":105,"title":196},"p1-get-talky-one-copy","warning",{"en":194,"fr":195},"The Workshop mod and the zip's mod share the same id, `Talky`. If you subscribed on the Workshop, don't copy the zip's `Talky` folder to `%USERPROFILE%\\Zomboid\\mods`, and delete `%USERPROFILE%\\Zomboid\\mods\\Talky` if it already exists, for example after an older manual install. Otherwise the game sees two mods with the same id. The bridge warns you at every start when it finds both copies: its window shows a line starting with `warning: Talky is installed twice`.","Le mod du Workshop et celui du zip portent le même identifiant, `Talky`. Si vous êtes abonné sur le Workshop, ne copiez pas le dossier `Talky` du zip dans `%USERPROFILE%\\Zomboid\\mods`, et supprimez `%USERPROFILE%\\Zomboid\\mods\\Talky` s'il existe déjà, par exemple après une ancienne installation manuelle. Sinon, le jeu voit deux mods avec le même identifiant. Le pont vous prévient à chaque démarrage quand il trouve les deux copies : sa fenêtre affiche une ligne qui commence par `warning: Talky is installed twice`.",{"en":197,"fr":198},"Only one copy of the mod","Une seule copie du mod",{"id":200,"text":201,"type":123,"level":124},"p1-install",{"en":202,"fr":203},"Install","Installer",{"id":205,"type":206,"items":207},"p1-install-steps","steps",[208,215],{"text":209,"title":212},{"en":210,"fr":211},"For example `Documents\\Talky`. Don't extract it into `%USERPROFILE%\\Zomboid\\mods` or into the Workshop folder. Steam rewrites the Workshop folder on every update, and in `Zomboid\\mods`, removing or replacing a mod can take the bridge and its `bridge\\config.json` file with it. At every start, the bridge reports a folder placed in `Zomboid\\mods`.","Par exemple `Documents\\Talky`. Ne le décompressez ni dans `%USERPROFILE%\\Zomboid\\mods` ni dans le dossier du Workshop. Steam réécrit le dossier du Workshop à chaque mise à jour, et dans `Zomboid\\mods`, supprimer ou remplacer un mod peut emporter le pont avec son fichier `bridge\\config.json`. Le pont signale à chaque démarrage un dossier rangé dans `Zomboid\\mods`.",{"en":213,"fr":214},"Extract the zip to a folder you keep","Extrayez le zip dans un dossier que vous gardez",{"text":216,"title":219},{"en":217,"fr":218},"Copy the zip's `Talky` folder into `%USERPROFILE%\\Zomboid\\mods`, to get `%USERPROFILE%\\Zomboid\\mods\\Talky\\42\\mod.info`. Copy only this folder: the bridge stays in `Documents\\Talky`. If you subscribed on the Workshop, skip this step: Steam already installs the mod.","Copiez le dossier `Talky` du zip dans `%USERPROFILE%\\Zomboid\\mods`, pour obtenir `%USERPROFILE%\\Zomboid\\mods\\Talky\\42\\mod.info`. Ne copiez que ce dossier : le pont reste dans `Documents\\Talky`. Si vous êtes abonné sur le Workshop, sautez cette étape : Steam installe déjà le mod.",{"en":220,"fr":221},"Without the Workshop only: copy the mod","Sans le Workshop seulement : copiez le mod",{"id":223,"text":224,"type":43},"p1-install-nothing-to-run",{"en":225,"fr":226},"There's nothing else to install: the bridge creates its configuration itself, on its first launch.","Il n'y a rien d'autre à installer : le pont crée sa configuration lui-même, à son premier lancement.",{"id":228,"text":229,"type":123,"level":124},"p1-start-bridge",{"en":230,"fr":231},"Start the bridge","Lancer le pont",{"id":233,"text":234,"type":43},"p1-start-bridge-run",{"en":235,"fr":236},"Double-click `start-bridge.cmd`. A black window titled \"Talky bridge\" opens. It checks that Node.js 18 or later is installed, then starts the bridge. On the first launch, the bridge creates `bridge\\config.json` from `bridge\\config.example.json`: it draws a random 48-character token, sets the language of the examples to the one of Windows (`fr` when the regional format is French, `en` otherwise) and copies the token to the clipboard without showing it. You'll paste it into the widget at the end of this part. The window then shows these lines, each prefixed with the time:","Double-cliquez sur `start-bridge.cmd`. Une fenêtre noire intitulée « Talky bridge » s'ouvre. Elle vérifie que Node.js 18 ou plus est installé, puis lance le pont. Au premier lancement, le pont crée `bridge\\config.json` à partir de `bridge\\config.example.json` : il tire au sort un jeton de 48 caractères, règle la langue des exemples sur celle de Windows (`fr` si le format régional est le français, `en` sinon) et copie le jeton dans le presse-papiers sans l'afficher. Vous le collerez dans le widget à la fin de cette partie. La fenêtre affiche ensuite ces lignes, chacune précédée de l'heure :",{"id":238,"code":239,"type":153,"caption":240,"language":243},"p1-start-bridge-output","created ~\\Documents\\Talky\\bridge\\config.json with a random token (language: en)\nthe token is in your clipboard and in config.json, never shown here: paste it into \"Bridge token\" in the LibertyTalk widget\ncreated ~\\Zomboid\\Lua\\talky_config.json from config.json\nconfig loaded: 10 webhook(s), 14 workflow(s)\nTalky bridge 0.4.0 listening on http://127.0.0.1:7420\ngame folder: ~\\Zomboid\\Lua\nhttp steps allowed to: *.liberty-talk.com\n  webhook  POST /hooks/follow\n  webhook  POST /hooks/sub\n  webhook  POST /hooks/gift\n  webhook  POST /hooks/bits\n  webhook  POST /hooks/raid\n  webhook  POST /hooks/donation\n  webhook  POST /hooks/superchat\n  webhook  POST /hooks/member\n  webhook  POST /hooks/command\n  webhook  POST /hooks/points",{"en":241,"fr":242},"First launch on an English Windows, with Talky extracted to `Documents\\Talky`. With a French regional format, the first line ends with `(language: fr)` and the third with `(fr: 19 text(s) translated)`. These three lines only show on the first launch: afterwards, the bridge keeps `config.json` as it is. The version number and the counts follow your installation.","Premier lancement sur un Windows en anglais, Talky décompressé dans `Documents\\Talky`. Avec un format régional français, la première ligne se termine par `(language: fr)` et la troisième par `(fr: 19 text(s) translated)`. Ces trois lignes n'apparaissent qu'au premier lancement : ensuite, le pont garde `config.json` tel quel. Le numéro de version et les nombres suivent votre installation.","text",{"id":245,"kind":246,"text":247,"type":105,"title":250},"p1-install-token-secret","tip",{"en":248,"fr":249},"The token in `bridge\\config.json` protects your bridge's address: anyone who knows it can spawn zombies in your game. The bridge never shows it and only copies it to the clipboard on the first launch. Don't open `config.json` on stream. If the copy failed, the second line starts with `the token is in config.json (\"token\")`. In that case, or if you copied something else since, open `config.json` off stream and copy the `token` value, without the quotes. If the token may have leaked, run `node bridge\\bridge.js new-token` in the Talky folder: the bridge writes a new token in `config.json` and copies it to the clipboard. Restart the bridge and paste it into \"Bridge token\" in the widget.","Le jeton de `bridge\\config.json` protège l'adresse de votre pont : quiconque le connaît peut faire apparaître des zombies dans votre partie. Le pont ne l'affiche jamais et ne le copie dans le presse-papiers qu'au premier lancement. N'ouvrez pas `config.json` pendant un live. Si la copie a échoué, la deuxième ligne commence par `the token is in config.json (\"token\")`. Dans ce cas, ou si vous avez copié autre chose depuis, ouvrez `config.json` hors live et copiez la valeur de `token`, sans les guillemets. Si le jeton a pu fuiter, lancez `node bridge\\bridge.js new-token` dans le dossier de Talky : le pont écrit un nouveau jeton dans `config.json` et le copie dans le presse-papiers. Relancez le pont et collez-le dans « Jeton du pont » du widget.",{"en":251,"fr":252},"The token is a password","Le jeton est un mot de passe",{"id":254,"kind":246,"text":255,"type":105,"title":258},"p1-install-language",{"en":256,"fr":257},"The example workflows (banner texts, reward words) are written once, on the bridge's first launch, in the language set in `settings.language` of `bridge\\config.json`, or the one picked in the F8 menu if you set it before that first launch. The bridge sets `fr` there when the regional format of Windows is French, `en` otherwise. Changing \"Language of the bridge texts\" in the F8 menu afterwards doesn't translate the examples already written: to get them in the other language, stop the bridge, set `settings.language` to `fr` or `en` in `bridge\\config.json`, delete `%USERPROFILE%\\Zomboid\\Lua\\talky_config.json`, then restart the bridge, losing the changes made in the F8 menu.","Les workflows d'exemple (textes des bandeaux, mots des récompenses) sont écrits une seule fois, au premier lancement du pont, dans la langue de `settings.language` de `bridge\\config.json`, ou dans celle choisie dans le menu F8 si vous l'avez réglée avant ce premier lancement. Le pont y met `fr` quand le format régional de Windows est le français, `en` sinon. Changer ensuite « Langue des textes du bridge » dans le menu F8 ne traduit pas les exemples déjà écrits : pour les obtenir dans l'autre langue, arrêtez le pont, mettez `settings.language` à `fr` ou `en` dans `bridge\\config.json`, supprimez `%USERPROFILE%\\Zomboid\\Lua\\talky_config.json`, puis relancez le pont, en perdant les modifications faites dans le menu F8.",{"en":259,"fr":260},"The language of the examples","La langue des exemples",{"id":262,"text":263,"type":43},"p1-start-bridge-warnings",{"en":264,"fr":265},"At every start, the bridge can also show lines that start with `warning:`. It starts anyway, but each one points at a setting to fix: cloudflared missing from the PATH, Talky installed twice (a copy in `Zomboid\\mods` on top of the Workshop), or the bridge folder placed in `Zomboid\\mods`. The troubleshooting at the end of this part gives the fix for each.","À chaque démarrage, le pont peut aussi afficher des lignes qui commencent par `warning:`. Il démarre quand même, mais chacune signale un réglage à corriger : cloudflared absent du PATH, Talky installé deux fois (une copie dans `Zomboid\\mods` en plus du Workshop), ou dossier du pont rangé dans `Zomboid\\mods`. Le dépannage à la fin de cette partie donne la solution de chacune.",{"id":267,"text":268,"type":43},"p1-start-bridge-keep-open",{"en":269,"fr":270},"Keep this window open for the whole session: if you close it, nothing reaches the game anymore. If the bridge stops on an error, the window shows the message, then `The bridge has stopped.`, and waits for you to press a key. In its messages, `config.json` errors included, the bridge writes `~` instead of your user folder, which keeps your Windows user name off screen if the window shows up on stream.","Laissez cette fenêtre ouverte pendant toute la session : si vous la fermez, plus rien n'arrive dans le jeu. Si le pont s'arrête sur une erreur, la fenêtre affiche le message, puis `The bridge has stopped.`, et attend que vous appuyiez sur une touche. Dans ses messages, erreurs sur `config.json` comprises, le pont écrit `~` à la place de votre dossier utilisateur, ce qui garde votre nom d'utilisateur Windows hors de l'écran si la fenêtre passe en live.",{"id":272,"alt":273,"url":276,"type":277,"width":278,"caption":279},"p1-start-bridge-shot",{"en":274,"fr":275},"The \"Talky bridge\" window: config loaded, bridge 0.5.0 listening on http://127.0.0.1:7420 and the list of the ten webhooks.","Fenêtre « Talky bridge » : configuration chargée, pont 0.5.0 à l'écoute sur http://127.0.0.1:7420 et liste des dix webhooks.","https://d1lvjaji8qt9t1.cloudfront.net/media/814ab288-309b-47fa-94f3-33a1b4332752.png","image","wide",{"en":280,"fr":281},"The running bridge: config loaded, ten webhooks listed. On the first launch, the lines that create `config.json` show before them.","Le pont démarré : configuration chargée, dix webhooks listés. Au premier lancement, les lignes de création de `config.json` s'affichent avant.",{"id":283,"text":284,"type":123,"level":124},"p1-enable-mod",{"en":285,"fr":286},"Enable the mod and open the menu","Activer le mod et ouvrir le menu",{"id":288,"type":206,"items":289},"p1-enable-mod-steps",[290,297,304,311],{"text":291,"title":294},{"en":292,"fr":293},"In Project Zomboid's main menu, open **Mods** and tick **Talky - LibertyTalk Live Events**.","Dans le menu principal de Project Zomboid, ouvrez **Mods** et cochez **Talky - LibertyTalk Live Events**.",{"en":295,"fr":296},"Enable the mod","Activez le mod",{"text":298,"title":301},{"en":299,"fr":300},"A new single-player game or a saved one.","Nouvelle partie solo ou sauvegarde.",{"en":302,"fr":303},"Start a game","Lancez une partie",{"text":305,"title":308},{"en":306,"fr":307},"You can change the key in **Options > Keybinds > Talky**, \"Open the Talky window\" line.","La touche se change dans **Options > Raccourcis > Talky**, ligne « Ouvrir la fenêtre Talky ».",{"en":309,"fr":310},"Open the Talky menu with F8","Ouvrez le menu Talky avec F8",{"text":312,"title":315},{"en":313,"fr":314},"At the bottom left, the pill must show \"Bridge connected\" in green, and the top of the page \"Bridge connected on port 7420 - 0 job(s) waiting\", followed by the bridge version, then the \"Single player: the jobs run in this game.\" line. A red \"Bridge offline\" pill comes with the message \"Bridge offline: run start-bridge.cmd (or node bridge/bridge.js) on this PC.\" In that case, see troubleshooting at the end of this part.","En bas à gauche, la pastille doit afficher « Bridge connecté » en vert, et le haut de la page « Bridge connecté sur le port 7420 - 0 job(s) en attente », suivi de la version du pont, puis la ligne « Solo : les jobs s'exécutent dans cette partie. ». Une pastille rouge « Bridge hors ligne » s'accompagne du message « Bridge hors ligne : lancez start-bridge.cmd (ou node bridge/bridge.js) sur ce PC. ». Dans ce cas, voyez le dépannage à la fin de cette partie.",{"en":316,"fr":317},"Check the Status page","Vérifiez la page Statut",{"id":319,"text":320,"type":43},"p1-enable-mod-pages",{"en":321,"fr":322},"The window has five pages, listed on the left under \"TALKY\". **Status** shows the connection, the public address and the latest events received. **Webhooks** lists the `/hooks/\u003Cid>` addresses LibertyTalk calls. **Workflows** holds what the game does for each event. **Game events** links the death of a named zombie or of the player to a workflow. **Settings** sets the caps, for example \"Max zombies per action\" at 60. The **Save** button, bottom right, turns into `Save *` while a change isn't saved.","La fenêtre compte cinq pages, listées à gauche sous « TALKY ». **Statut** montre la connexion, l'adresse publique et les derniers événements reçus. **Webhooks** liste les adresses `/hooks/\u003Cid>` que LibertyTalk appelle. **Workflows** contient ce que le jeu fait pour chaque événement. **Événements du jeu** relie la mort d'un zombie nommé ou celle du joueur à un workflow. **Réglages** fixe les plafonds, par exemple « Zombies max par action » à 60. Le bouton **Enregistrer**, en bas à droite, devient `Enregistrer *` tant qu'une modification n'est pas enregistrée.",{"id":324,"alt":325,"url":328,"type":277,"width":278,"caption":329},"p1-enable-mod-shot",{"en":326,"fr":327},"F8 menu, Status page: \"Bridge connected on port 7420 - 0 job(s) waiting (v0.5.0)\", tunnel address hidden, webhooks with the token hidden.","Menu F8, page Statut : « Bridge connecté sur le port 7420 - 0 job(s) en attente (v0.5.0) », adresse du tunnel masquée, webhooks avec le jeton masqué.","https://d1lvjaji8qt9t1.cloudfront.net/media/e2d27c64-fef1-42e9-b35a-587aa015bd7b.png",{"en":330,"fr":331},"The **Status** page of the F8 menu, with the bridge connected. This menu never shows the token.","La page **Statut** du menu F8, pont connecté. Ce menu n'affiche jamais le jeton.",{"id":333,"text":334,"type":123,"level":124},"p1-test-offline",{"en":335,"fr":336},"Test without LibertyTalk","Tester sans LibertyTalk",{"id":338,"text":339,"type":43},"p1-test-offline-menu",{"en":340,"fr":341},"Before plugging in Twitch, check that the bridge and the mod talk to each other. In the F8 menu, **Workflows** page, select `new_follower` in the list on the left, type `Bob` in the \"Test with the name\" field and click **Test now**. The game confirms the test was sent with a notice, and the bridge window writes a line such as `[test] new_follower -> 3 game step(s) (job #1) user=Bob`, whose job number goes up with each run.","Avant de brancher Twitch, vérifiez que le pont et le mod se parlent. Dans le menu F8, page **Workflows**, sélectionnez `new_follower` dans la liste de gauche, tapez `Bob` dans le champ « Tester avec le pseudo » puis cliquez sur **Tester maintenant**. Le jeu confirme l'envoi du test par une notification, et la fenêtre du pont écrit une ligne comme `[test] new_follower -> 3 game step(s) (job #1) user=Bob`, dont le numéro de job augmente à chaque envoi.",{"id":343,"text":344,"type":43},"p1-test-offline-cli",{"en":345,"fr":346},"You can also run the test from a second terminal opened in the Talky folder, while the bridge is running:","Vous pouvez aussi lancer le test depuis un second terminal ouvert dans le dossier de Talky, pendant que le pont tourne :",{"id":348,"code":349,"type":153,"caption":350,"language":353},"p1-test-offline-code","node bridge\\bridge.js fire new_follower user=Bob",{"en":351,"fr":352},"The terminal answers `200 {\"ok\":true,\"results\":[{\"workflow\":\"new_follower\",\"job\":2,\"steps\":3}]}` and the bridge window writes a `[fire] new_follower -> 3 game step(s)` line.","Le terminal répond `200 {\"ok\":true,\"results\":[{\"workflow\":\"new_follower\",\"job\":2,\"steps\":3}]}` et la fenêtre du pont écrit une ligne `[fire] new_follower -> 3 game step(s)`.","cmd",{"id":355,"text":356,"type":43},"p1-test-offline-result",{"en":357,"fr":358},"In the game, the \"Bob joins the horde!\" banner shows (\"Bob rejoint la horde !\" with the French examples), then a zombie named \"Bob\" appears between 8 and 14 tiles from your character. If nothing shows up, check that the game isn't paused: the mod runs nothing while paused, in the main menu or when your character is dead. **Test now** also sends `bits` at 500, `viewers` at 10 and `tier` at 1000: on the `bits` workflow, it spawns 5 zombies.","Dans le jeu, le bandeau « Bob rejoint la horde ! » s'affiche (« Bob joins the horde! » avec les exemples en anglais), puis un zombie nommé « Bob » apparaît entre 8 et 14 cases de votre personnage. Si rien ne s'affiche, vérifiez que la partie n'est pas en pause : le mod n'exécute rien en pause, au menu principal ou quand votre personnage est mort. **Tester maintenant** envoie aussi `bits` à 500, `viewers` à 10 et `tier` à 1000 : sur le workflow `bits`, il fait apparaître 5 zombies.",{"id":360,"alt":361,"url":364,"type":277,"width":278,"caption":365},"p1-test-offline-menu-shot",{"en":362,"fr":363},"F8 menu, Workflows page: new_follower selected, its three steps and the \"Test with the name\" field filled with Bob.","Menu F8, page Workflows : new_follower sélectionné, ses trois étapes et le champ « Tester avec le pseudo » rempli avec Bob.","https://d1lvjaji8qt9t1.cloudfront.net/media/5abed797-6df9-44d0-a136-15fd8e65d441.png",{"en":366,"fr":367},"The `new_follower` workflow: a banner, a two-second wait, then a named zombie.","Le workflow `new_follower` : un bandeau, deux secondes d'attente, puis un zombie nommé.",{"id":369,"alt":370,"url":373,"type":277,"width":278,"caption":374},"p1-test-offline-shot",{"en":371,"fr":372},"In game: the \"Bob 2 joins the horde!\" banner at the top of the screen and two zombies named Bob and Bob 2 in purple.","En jeu : le bandeau « Bob 2 rejoint la horde ! » en haut de l'écran et deux zombies nommés Bob et Bob 2 en violet.","https://d1lvjaji8qt9t1.cloudfront.net/media/92b4fd67-595d-4c11-8d6b-57cd28ee969d.jpg",{"en":375,"fr":376},"After the test: the banner, then the zombie carrying the name.","Après le test : le bandeau, puis le zombie qui porte le pseudo.",{"id":378,"text":379,"type":123,"level":124},"p1-tunnel",{"en":380,"fr":381},"Open the tunnel","Ouvrir le tunnel",{"id":383,"text":384,"type":43},"p1-tunnel-why",{"en":385,"fr":386},"LibertyTalk refuses to call a local address such as `127.0.0.1`, to block requests to private networks. The cloudflared tunnel gives the bridge a public https address. In a new terminal, run:","LibertyTalk refuse d'appeler une adresse locale comme `127.0.0.1`, pour empêcher les requêtes vers des réseaux privés. Le tunnel cloudflared donne au pont une adresse publique en https. Dans un nouveau terminal, lancez :",{"id":388,"code":389,"type":153,"caption":390,"language":157},"p1-tunnel-code","cloudflared tunnel --url http://127.0.0.1:7420",{"en":391,"fr":392},"The terminal shows a box with a `https://...trycloudflare.com` address. Copy it and keep the window open.","Le terminal affiche un cadre avec une adresse en `https://...trycloudflare.com`. Copiez-la et laissez la fenêtre ouverte.",{"id":394,"kind":192,"text":395,"type":105,"title":398},"p1-tunnel-new-address",{"en":396,"fr":397},"This quick tunnel, without a Cloudflare account, changes address every time you restart cloudflared. At each session, copy the new address into the widget (next step). To keep the same address from one stream to the next, you need a named tunnel on your own domain, with a Cloudflare account ([Cloudflare documentation](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/trycloudflare/)).","Ce tunnel rapide, sans compte Cloudflare, change d'adresse chaque fois que vous relancez cloudflared. À chaque session, recopiez la nouvelle adresse dans le widget (étape suivante). Pour garder la même adresse d'un live à l'autre, il faut un tunnel nommé sur votre propre domaine, avec un compte Cloudflare ([documentation Cloudflare](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/trycloudflare/)).",{"en":399,"fr":400},"A new address on every launch","Une nouvelle adresse à chaque lancement",{"id":402,"alt":403,"url":406,"type":277,"width":278,"caption":407},"p1-tunnel-shot",{"en":404,"fr":405},"PowerShell terminal: cloudflared shows the tunnel address as https://…trycloudflare.com, random part hidden.","Terminal PowerShell : cloudflared annonce l'adresse du tunnel en https://…trycloudflare.com, partie aléatoire masquée.","https://d1lvjaji8qt9t1.cloudfront.net/media/68600e6b-6df0-4592-9ab6-f9d432999dd2.png",{"en":408,"fr":409},"The tunnel address is in the box. It changes every time cloudflared starts.","L'adresse du tunnel est dans le cadre. Elle change à chaque lancement de cloudflared.",{"id":411,"text":412,"type":43},"p1-tunnel-public-url",{"en":413,"fr":414},"Optional: also paste this address in F8, **Status** page, \"Public URL (Cloudflare tunnel)\" field, then click **Save**. The webhook list then shows their public addresses, token masked. **Copy command** copies `node bridge\\bridge.js url \u003Cwebhook>` for the selected webhook: run in a terminal opened in the Talky folder, this command puts the full URL, token included, in the clipboard and prints it masked. The game never sees the token. The widget doesn't need it: this command is for when you build a LibertyTalk workflow yourself.","Facultatif : collez aussi cette adresse dans F8, page **Statut**, champ « URL publique (tunnel Cloudflare) », puis cliquez sur **Enregistrer**. La liste des webhooks affiche alors leurs adresses publiques, jeton masqué. **Copier la commande** copie `node bridge\\bridge.js url \u003Cwebhook>` pour le webhook sélectionné : lancée dans un terminal ouvert dans le dossier de Talky, cette commande met l'URL complète, jeton compris, dans le presse-papiers et l'affiche masquée. Le jeu ne voit jamais le jeton. Le widget n'en a pas besoin : cette commande sert quand vous construisez vous-même un workflow LibertyTalk.",{"id":416,"text":417,"type":123,"level":124},"p1-official-widget",{"en":418,"fr":419},"Install the official widget","Installer le widget officiel",{"id":421,"text":422,"type":43},"p1-official-widget-what",{"en":423,"fr":424},"The official \"Project Zomboid · Talky\" widget already holds the ten LibertyTalk chains that call the bridge: follow, subscription, gifted subs, bits, raid, channel points, chat command, Streamlabs donation, Super Chat and new YouTube member. You fill in the tunnel address and the token, then you activate it.","Le widget officiel « Project Zomboid · Talky » contient déjà les dix chaînes LibertyTalk qui appellent le pont : follow, abonnement, abonnements offerts, bits, raid, points de chaîne, commande de chat, don Streamlabs, Super Chat et nouveau membre YouTube. Vous remplissez l'adresse du tunnel et le jeton, puis vous l'activez.",{"id":426,"text":427,"type":430,"title":431,"listing_slug":5},"p1-official-widget-card",{"en":428,"fr":429},"Free widget published by LibertyTalk. Ten Twitch and YouTube triggers wired to the bridge, each with its own checkbox.","Widget gratuit publié par LibertyTalk. Dix déclencheurs Twitch et YouTube reliés au pont, chacun avec sa case à cocher.","widget",{"en":432,"fr":432},"Project Zomboid · Talky",{"id":434,"type":206,"items":435},"p1-official-widget-steps",[436,443,450,457],{"text":437,"title":440},{"en":438,"fr":439},"Select your community in the sidebar. On the widget's page in the [Marketplace](dashboard:/market), click **Install**. The same button is on its card in the **Official library** of [Widgets](dashboard:/widgets). LibertyTalk adds the widget to the selected community, switched off, then opens its page.","Sélectionnez votre communauté dans la barre latérale. Sur la fiche du widget dans la [Marketplace](dashboard:/market), cliquez sur **Installer**. Le même bouton se trouve sur sa carte dans la **Bibliothèque officielle** de [Widgets](dashboard:/widgets). LibertyTalk ajoute le widget à la communauté sélectionnée, désactivé, puis ouvre sa page.",{"en":441,"fr":442},"Install it in your community","Installez-le dans votre communauté",{"text":444,"title":447},{"en":445,"fr":446},"On the widget's page, keep the **Global** scope, selected by default: the widget will listen to every Twitch and YouTube account of the community. To come back to this page later, open [Widgets](dashboard:/widgets) and click the Project Zomboid · Talky card, under \"Workflow widgets\".","Sur la page du widget, gardez la portée **Global**, sélectionnée par défaut : le widget écoutera tous les comptes Twitch et YouTube de la communauté. Pour revenir plus tard sur cette page, ouvrez [Widgets](dashboard:/widgets) et cliquez sur la carte Project Zomboid · Talky, sous « Widgets de workflow ».",{"en":448,"fr":449},"Keep the Global scope","Gardez la portée Global",{"text":451,"title":454},{"en":452,"fr":453},"In the **Widget configuration** tab, open the \"Talky bridge connection\" section and fill in \"Talky bridge public URL\" and \"Bridge token\". The table below details each field. Click **Save**: the \"Widget configuration saved.\" message confirms it.","Dans l'onglet **Configuration du widget**, ouvrez la section « Connexion au pont Talky » et remplissez « Adresse publique du pont Talky » et « Jeton du pont ». Le tableau ci-dessous détaille chaque champ. Cliquez sur **Enregistrer** : le message « Configuration du widget enregistrée. » confirme.",{"en":455,"fr":456},"Fill in its configuration","Remplissez sa configuration",{"text":458,"title":461},{"en":459,"fr":460},"In the **Activation** block, click **Activate**: the \"Inactive on Global.\" line turns into \"Active on Global.\" and the **Listening to** block lists the accounts it listens to. The page won't activate while a configuration change isn't saved. If only your Twitch channel is connected, the YouTube triggers stay silent; they plug in when you connect YouTube to the community.","Dans le bloc **Activation**, cliquez sur **Activer** : la ligne « Inactif sur Global. » devient « Actif sur Global. » et le bloc **Écoute** liste les comptes écoutés. La page refuse d'activer tant qu'une modification de la configuration n'est pas enregistrée. Si seule votre chaîne Twitch est connectée, les déclencheurs YouTube restent muets ; ils se branchent quand vous connectez YouTube à la communauté.",{"en":462,"fr":463},"Activate it","Activez-le",{"id":465,"alt":466,"url":469,"type":277,"width":278,"caption":470},"p1-official-widget-listing-shot",{"en":467,"fr":468},"The \"Project Zomboid · Talky\" widget page in the dashboard Marketplace: Official and Free badges, Install button.","Fiche du widget « Project Zomboid · Talky » dans la Marketplace du dashboard : badges Officiel et Gratuit, bouton Installer.","https://d1lvjaji8qt9t1.cloudfront.net/media/ce518c7a-e03d-450a-8943-28a13c425ea1.png",{"en":471,"fr":472},"The widget page. **Install** adds it, turned off, to the selected community.","La fiche du widget. **Installer** l'ajoute, désactivé, à la communauté sélectionnée.",{"id":474,"head":475,"rows":482,"type":511},"p1-official-widget-fields",[476,479],{"en":477,"fr":478},"Field","Champ",{"en":480,"fr":481},"What to enter","Ce qu'il faut y mettre",[483,490,497,504],[484,487],{"en":485,"fr":486},"**Talky bridge public URL** (`talky_bridge_url`)","**Adresse publique du pont Talky** (`talky_bridge_url`)",{"en":488,"fr":489},"Required. The https address given by cloudflared, for example `https://your-tunnel.trycloudflare.com`, without a trailing `/`.","Obligatoire. L'adresse https donnée par cloudflared, par exemple `https://votre-tunnel.trycloudflare.com`, sans `/` final.",[491,494],{"en":492,"fr":493},"**Bridge token** (`talky_token`)","**Jeton du pont** (`talky_token`)",{"en":495,"fr":496},"Required. The `token` value from `bridge\\config.json`, without the quotes: the one the bridge copied to your clipboard on its first launch. LibertyTalk treats it as a secret: it isn't shown again after saving and it's masked in execution traces. To change it, type the new value.","Obligatoire. La valeur de `token` dans `bridge\\config.json`, sans les guillemets : celle que le pont a copiée dans votre presse-papiers à son premier lancement. LibertyTalk la traite comme un secret : elle n'est pas réaffichée après l'enregistrement et elle est masquée dans les traces d'exécution. Pour la changer, saisissez la nouvelle valeur.",[498,501],{"en":499,"fr":500},"**Chat command (without \"!\")** (`talky_command`)","**Commande de chat (sans « ! »)** (`talky_command`)",{"en":502,"fr":503},"The command, lowercase and without the `!`. Default `zombie`: a viewer types `!zombie` in Twitch chat. The field only shows when \"Send the chat command\" is ticked.","La commande, en minuscules et sans le `!`. Par défaut `zombie` : un viewer tape `!zombie` dans le chat Twitch. Le champ n'apparaît que si « Envoyer la commande de chat » est cochée.",[505,508],{"en":506,"fr":507},"**Send follows** to **Send new YouTube members** (`talky_on_follow` to `talky_on_member`)","**Envoyer les follows** à **Envoyer les nouveaux membres YouTube** (`talky_on_follow` à `talky_on_member`)",{"en":509,"fr":510},"\"Events sent to the game\" section: ten boxes, all ticked by default. Untick an event so it no longer reaches the game, for example \"Send raids\" if you don't want a horde during a raid.","Section « Événements envoyés au jeu » : dix cases, toutes cochées par défaut. Décochez un événement pour qu'il n'atteigne plus le jeu, par exemple « Envoyer les raids » si vous ne voulez pas de horde pendant un raid.","table",{"id":513,"alt":514,"url":517,"type":277,"width":278,"caption":518},"p1-official-widget-shot",{"en":515,"fr":516},"Widget configuration, \"Talky bridge connection\" section: tunnel address (random part blurred), saved token hidden, zombie command.","Configuration du widget, section « Connexion au pont Talky » : adresse du tunnel (partie aléatoire floutée), jeton enregistré masqué, commande zombie.","https://d1lvjaji8qt9t1.cloudfront.net/media/1cf1c22e-3337-41e9-8d19-3636866f8182.png",{"en":519,"fr":520},"The filled-in configuration. Once saved, the token is no longer shown.","La configuration remplie. Une fois enregistré, le jeton n'est plus affiché.",{"id":522,"alt":523,"url":526,"type":277,"width":278,"caption":527},"p1-official-widget-active-shot",{"en":524,"fr":525},"Widget page: Activation block with \"Active on Global.\" and the Deactivate button, Listening block with the Twitch and YouTube accounts.","Page du widget : bloc Activation avec « Actif sur Global. » et le bouton Désactiver, bloc Écoute avec les comptes Twitch et YouTube.","https://d1lvjaji8qt9t1.cloudfront.net/media/a67fadaf-eee5-4b63-9ed9-1a1a2d37aba4.png",{"en":528,"fr":529},"The widget turned on, listening to the community's Twitch and YouTube accounts.","Le widget activé, à l'écoute des comptes Twitch et YouTube de la communauté.",{"id":531,"kind":246,"text":532,"type":105,"title":535},"p1-official-widget-session",{"en":533,"fr":534},"Start `start-bridge.cmd` and cloudflared again, paste the new tunnel address into \"Talky bridge public URL\", **Widget configuration** tab, and click **Save**. The change applies right away, without deactivating the widget.","Relancez `start-bridge.cmd` et cloudflared, collez la nouvelle adresse du tunnel dans « Adresse publique du pont Talky », onglet **Configuration du widget**, et cliquez sur **Enregistrer**. Le changement s'applique tout de suite, sans désactiver le widget.",{"en":536,"fr":537},"Every session","À chaque session",{"id":539,"text":540,"type":123,"level":124},"p1-end-to-end",{"en":541,"fr":542},"Check end to end","Vérifier de bout en bout",{"id":544,"text":545,"type":43},"p1-end-to-end-follow",{"en":546,"fr":547},"Ask someone to follow your channel, or follow it from a second account. A few seconds later, the bridge window writes a `[hook:follow] new_follower -> 3 game step(s)` line, the zombie appears, and in F8, **Status** page, the \"Latest events received by the bridge\" list shows `hook:follow -> new_follower (Name)` after the time. On the LibertyTalk side, open the **Executions** tab of the widget's page and click \"Load last run\" to see the same run.","Demandez à quelqu'un de suivre votre chaîne, ou suivez-la avec un second compte. Quelques secondes plus tard, la fenêtre du pont écrit une ligne `[hook:follow] new_follower -> 3 game step(s)`, le zombie apparaît, et dans F8, page **Statut**, la liste « Derniers événements reçus par le bridge » affiche `hook:follow -> new_follower (Pseudo)` précédé de l'heure. Côté LibertyTalk, ouvrez l'onglet **Exécutions** de la page du widget et cliquez sur « Charger le dernier run » pour voir le même passage.",{"id":549,"alt":550,"url":553,"type":277,"width":554,"caption":555},"p1-end-to-end-banner-shot",{"en":551,"fr":552},"In game: the \"TechLiberty joins the horde!\" banner after a real Twitch follow.","En jeu : le bandeau « TechLiberty rejoint la horde ! » après un vrai follow Twitch.","https://d1lvjaji8qt9t1.cloudfront.net/media/3ac15077-804c-4b11-828c-5b9105c3b989.jpg","narrow",{"en":556,"fr":557},"A real follow: the banner carries the new follower's name.","Un vrai follow : le bandeau porte le pseudo du nouveau follower.",{"id":559,"alt":560,"url":563,"type":277,"width":278,"caption":564},"p1-end-to-end-status-shot",{"en":561,"fr":562},"F8 menu, Status page, \"Latest events received by the bridge\": the \"hook:follow -> new_follower (TechLiberty)\" line.","Menu F8, page Statut, « Derniers événements reçus par le bridge » : ligne « hook:follow -> new_follower (TechLiberty) ».","https://d1lvjaji8qt9t1.cloudfront.net/media/2449dfbd-fb04-42cf-9311-95aad5081e04.png",{"en":565,"fr":566},"The bridge received the LibertyTalk call (`hook:follow`) and ran `new_follower`.","Le pont a reçu l'appel de LibertyTalk (`hook:follow`) et lancé `new_follower`.",{"id":568,"alt":569,"url":572,"type":277,"width":278,"caption":573},"p1-end-to-end-console-shot",{"en":570,"fr":571},"Widget Executions tab: completed channelFollow run, background webhook call with the bridge's 200 response (job 1017).","Onglet Exécutions du widget : run channelFollow terminé, appel webhook en arrière-plan avec la réponse 200 du pont (job 1017).","https://d1lvjaji8qt9t1.cloudfront.net/media/f3ba388a-f618-4b00-ba96-3dde041adad3.png",{"en":574,"fr":575},"The same follow on the LibertyTalk side: `webhook_response_status` at 200 and `webhook_response_ok` at `true`. Tunnel address blurred, token hidden.","Le même follow côté LibertyTalk : `webhook_response_status` à 200 et `webhook_response_ok` à `true`. Adresse du tunnel floutée, jeton masqué.",{"id":577,"text":578,"type":123,"level":124},"p1-troubleshooting",{"en":579,"fr":580},"Troubleshooting","Dépannage",{"id":582,"type":583,"items":584},"p1-troubleshooting-faq","faq",[585,592,599,606,613,620,627,634,641,648,655,662,669,676,683,690,697,704,711,718,725,732],{"a":586,"q":589},{"en":587,"fr":588},"The bridge writes a heartbeat every 2 seconds; after 6 seconds without one, the menu considers it offline. Check that the \"Talky bridge\" window is open and shows no error. If you launch Project Zomboid with the `-cachedir` option, the game reads another folder: set that `Lua` folder in `zomboidLuaDir` in `bridge\\config.json`, then restart the bridge.","Le pont écrit un battement toutes les 2 secondes ; après 6 secondes sans battement, le menu le considère hors ligne. Vérifiez que la fenêtre « Talky bridge » est ouverte et sans erreur. Si vous lancez Project Zomboid avec l'option `-cachedir`, le jeu lit un autre dossier : indiquez ce dossier `Lua` dans `zomboidLuaDir` de `bridge\\config.json`, puis relancez le pont.",{"en":590,"fr":591},"F8 shows \"Bridge offline\".","F8 affiche « Bridge hors ligne ».",{"a":593,"q":596},{"en":594,"fr":595},"The bridge starts anyway; fix what the line points at. `warning: cloudflared is not in the PATH`: install cloudflared with `winget install --id Cloudflare.cloudflared`, then close the window and start `start-bridge.cmd` again; if you run cloudflared from its own folder, ignore this line. `warning: Talky is installed twice`: the mod is both in `%USERPROFILE%\\Zomboid\\mods\\Talky` and on the Workshop; delete the folder in `Zomboid\\mods`, the Workshop version is enough. `warning: The bridge folder ... is inside ...\\Zomboid\\mods`: move the whole Talky folder out of `Zomboid\\mods`, `bridge\\config.json` included, for example to `Documents\\Talky`, then start `start-bridge.cmd` again from there. The token doesn't change.","Le pont démarre quand même ; corrigez ce que la ligne signale. `warning: cloudflared is not in the PATH` : installez cloudflared avec `winget install --id Cloudflare.cloudflared`, puis fermez la fenêtre et relancez `start-bridge.cmd` ; si vous lancez cloudflared depuis son propre dossier, ignorez cette ligne. `warning: Talky is installed twice` : le mod est à la fois dans `%USERPROFILE%\\Zomboid\\mods\\Talky` et dans le Workshop ; supprimez le dossier de `Zomboid\\mods`, la version du Workshop suffit. `warning: The bridge folder ... is inside ...\\Zomboid\\mods` : sortez tout le dossier de Talky de `Zomboid\\mods`, `bridge\\config.json` compris, par exemple vers `Documents\\Talky`, puis relancez `start-bridge.cmd` depuis ce nouvel emplacement. Le jeton ne change pas.",{"en":597,"fr":598},"The bridge window shows a `warning:` line.","La fenêtre du pont affiche une ligne `warning:`.",{"a":600,"q":603},{"en":601,"fr":602},"On the first launch, the bridge couldn't write `config.json` into the Talky folder, for example because you extracted it under `C:\\Program Files`. Move the folder to `Documents\\Talky` and start `start-bridge.cmd` again.","Au premier lancement, le pont n'a pas pu écrire `config.json` dans le dossier de Talky, par exemple parce que vous l'avez décompressé sous `C:\\Program Files`. Déplacez le dossier dans `Documents\\Talky` et relancez `start-bridge.cmd`.",{"en":604,"fr":605},"The bridge window shows `Cannot create ...\\bridge\\config.json`.","La fenêtre du pont affiche `Cannot create ...\\bridge\\config.json`.",{"a":607,"q":610},{"en":608,"fr":609},"The token in `bridge\\config.json` is empty or still starts with `change-me`, which happens when `config.example.json` was copied by hand. Replace it with a long random string, or delete `config.json` and start `start-bridge.cmd` again: the bridge creates a new one, with a new token to paste into \"Bridge token\" in the widget.","Le jeton de `bridge\\config.json` est vide ou commence encore par `change-me`, ce qui arrive quand `config.example.json` a été copié à la main. Remplacez-le par une longue chaîne aléatoire, ou supprimez `config.json` et relancez `start-bridge.cmd` : le pont en crée un nouveau, avec un nouveau jeton à coller dans « Jeton du pont » du widget.",{"en":611,"fr":612},"The bridge window shows `Set a long random \"token\"`.","La fenêtre du pont affiche `Set a long random \"token\"`.",{"a":614,"q":617},{"en":615,"fr":616},"`bridge\\config.json` doesn't exist yet: the `fire` command doesn't create it. Start the bridge once with `start-bridge.cmd` first, then run the command again while it's running.","`bridge\\config.json` n'existe pas encore : la commande `fire` ne le crée pas. Lancez d'abord le pont une fois avec `start-bridge.cmd`, puis relancez la commande pendant qu'il tourne.",{"en":618,"fr":619},"`node bridge\\bridge.js fire` shows `No config at ...`.","`node bridge\\bridge.js fire` affiche `No config at ...`.",{"a":621,"q":624},{"en":622,"fr":623},"Node.js is missing, or its version is older than 18. Run `winget install OpenJS.NodeJS.LTS` (or `winget upgrade OpenJS.NodeJS.LTS` to update), close the window, then start `start-bridge.cmd` again. A window opened before the install doesn't see Node.js yet.","Node.js manque, ou sa version est antérieure à la 18. Lancez `winget install OpenJS.NodeJS.LTS` (ou `winget upgrade OpenJS.NodeJS.LTS` pour une mise à jour), fermez la fenêtre, puis relancez `start-bridge.cmd`. Une fenêtre ouverte avant l'installation ne voit pas encore Node.js.",{"en":625,"fr":626},"The window shows `Node.js was not found on this PC.` or `Node.js ... is too old`.","La fenêtre affiche `Node.js was not found on this PC.` ou `Node.js ... is too old`.",{"a":628,"q":631},{"en":629,"fr":630},"Another program already uses port 7420, often a second bridge window left open. Close it, or change `port` in `bridge\\config.json`, for example to 7421, and use the same port for the tunnel: `cloudflared tunnel --url http://127.0.0.1:7421`.","Un autre programme utilise déjà le port 7420, souvent une seconde fenêtre du pont restée ouverte. Fermez-la, ou changez `port` dans `bridge\\config.json`, par exemple 7421, et utilisez le même port pour le tunnel : `cloudflared tunnel --url http://127.0.0.1:7421`.",{"en":632,"fr":633},"The bridge shows `Port 7420 is already used`.","Le pont affiche `Port 7420 is already used`.",{"a":635,"q":638},{"en":636,"fr":637},"Open the **Executions** tab of the widget's page, click \"Load last run\" and read `webhook_response_status` in the output of the call step. 401: the token doesn't match. The bridge checks the token before anything else and answers 401 even for a webhook that doesn't exist: copy `token` from `config.json` into \"Bridge token\" again. The widget sends this global token: if that webhook is in `hookTokens` of `bridge\\config.json`, it refuses it, so remove it from `hookTokens` and restart the bridge (F8, **Webhooks** page, \"Dedicated token\": \"Yes\" or \"No\"). 404: the token is right, but the webhook was renamed or deleted in F8; the widget calls `follow`, `sub`, `gift`, `bits`, `raid`, `points`, `command`, `donation`, `superchat` and `member`. Code 0 or 5xx: the tunnel is closed or its address changed. A run that stops at the \"If (classic)\" node: the event's box is unticked. No run at all: the widget isn't activated, or the **Listening to** block doesn't list that account.","Ouvrez l'onglet **Exécutions** de la page du widget, cliquez sur « Charger le dernier run » et lisez `webhook_response_status` dans la sortie de l'étape d'appel. 401 : le jeton ne correspond pas. Le pont vérifie le jeton avant tout le reste et répond 401 même pour un webhook qui n'existe pas : recopiez `token` de `config.json` dans « Jeton du pont ». Le widget envoie ce jeton global : si ce webhook figure dans `hookTokens` de `bridge\\config.json`, il le refuse, retirez-le de `hookTokens` et relancez le pont (F8, page **Webhooks**, rubrique « Jeton dédié » : « Oui » ou « Non »). 404 : le jeton est bon, mais le webhook a été renommé ou supprimé dans F8 ; le widget appelle `follow`, `sub`, `gift`, `bits`, `raid`, `points`, `command`, `donation`, `superchat` et `member`. Code 0 ou 5xx : le tunnel est fermé ou son adresse a changé. Un run qui s'arrête au nœud « Si (classique) » : la case de l'événement est décochée. Aucun run : le widget n'est pas activé, ou le bloc **Écoute** ne liste pas ce compte.",{"en":639,"fr":640},"A follow happens on Twitch but nothing moves in F8.","Un follow arrive sur Twitch mais rien ne bouge dans F8.",{"a":642,"q":645},{"en":643,"fr":644},"Two causes: \"Talky bridge public URL\" is empty, and the error says `Webhook URL is empty`, or it holds a local address such as `http://127.0.0.1:7420`, which LibertyTalk refuses. Paste the tunnel's `https://...trycloudflare.com` address and click **Save**.","Deux causes : « Adresse publique du pont Talky » est vide, et l'erreur indique `Webhook URL is empty`, ou elle contient une adresse locale comme `http://127.0.0.1:7420`, que LibertyTalk refuse. Collez l'adresse `https://...trycloudflare.com` du tunnel et cliquez sur **Enregistrer**.",{"en":646,"fr":647},"The webhook call step shows \"Failed\".","L'étape d'appel webhook passe en « Échec ».",{"a":649,"q":652},{"en":650,"fr":651},"That's intended. When a viewer gifts 5 subs, Twitch sends one gift event, then one subscription per recipient. The widget only relays the gift, on the `gift` webhook with `total` at 5: the bridge runs `gift_subs` once instead of six workflows.","C'est voulu. Quand un viewer offre 5 abonnements, Twitch envoie un événement de cadeau, puis un abonnement par bénéficiaire. Le widget ne relaie que le cadeau, sur le webhook `gift` avec `total` à 5 : le pont lance `gift_subs` une seule fois au lieu de six workflows.",{"en":653,"fr":654},"A gifted sub doesn't run `new_sub`.","Un abonnement offert ne lance pas `new_sub`.",{"a":656,"q":659},{"en":657,"fr":658},"The mod doesn't run while the game is paused, while your character is dead or in the main menu. A job that waits more than 15 minutes (`jobTtlSeconds` in `config.json`) is dropped, so you don't receive all the events of a stream played with the game closed at once. Finally, at most 8 workflows run at the same time (**Settings** page, \"Max workflows running at the same time\") and at most 200 jobs wait for their turn: the next ones stay in the bridge, and the game picks them up a few seconds later.","Le mod n'avance pas quand la partie est en pause, quand votre personnage est mort ou au menu principal. Un job qui attend plus de 15 minutes (`jobTtlSeconds` dans `config.json`) est abandonné, pour que vous ne receviez pas d'un coup les événements d'un live joué jeu fermé. Enfin, 8 workflows au plus tournent en même temps (page **Réglages**, « Workflows simultanés max ») et 200 jobs au plus attendent leur tour : les suivants restent dans le pont, et le jeu les reprend quelques secondes plus tard.",{"en":660,"fr":661},"The bridge shows `job #N` but nothing happens in the game.","Le pont affiche `job #N` mais rien ne se passe dans le jeu.",{"a":663,"q":666},{"en":664,"fr":665},"The bridge workflow refused the event. \"cooldown\": the workflow's delay is still running, for example 600 seconds for `points_helicopter`. \"condition not met\": the condition set with \"Edit condition\" is false. \"chance roll lost\": the \"Chance (0 to 1)\" field said no. \"workflow disabled\": the \"Enabled\" box is unticked. \"no matching route\": no route of the `points` webhook recognises the reward title (see part 2).","Le workflow du pont a refusé l'événement. « cooldown » : le délai du workflow court encore, par exemple 600 secondes pour `points_helicopter`. « condition non remplie » : la condition réglée avec « Modifier la condition » est fausse. « tirage de chance perdu » : le champ « Chance (0 à 1) » a dit non. « workflow désactivé » : la case « Activé » est décochée. « aucune route ne correspond » : aucune route du webhook `points` ne reconnaît le titre de la récompense (voir la partie 2).",{"en":667,"fr":668},"F8 shows \"skipped: cooldown\" or another reason.","F8 affiche « ignoré : cooldown » ou une autre raison.",{"a":670,"q":673},{"en":671,"fr":672},"That's expected: the widget doesn't send the name of a chat command's author (see part 2). The zombie takes the name of anonymous events: \"Anonymous\" with an English bridge, \"Anonyme\" in French, or the text of the \"Name for anonymous events (empty = Anonymous)\" field on the **Settings** page.","C'est attendu : le widget n'envoie pas le pseudo de l'auteur d'une commande de chat (voir la partie 2). Le zombie prend le nom des événements anonymes : « Anonyme » avec un pont en français, « Anonymous » en anglais, ou le texte du champ « Pseudo des événements anonymes (vide = Anonyme) » de la page **Réglages**.",{"en":674,"fr":675},"The `!zombie` zombie is called \"Anonymous\".","Le zombie de `!zombie` s'appelle « Anonyme ».",{"a":677,"q":680},{"en":678,"fr":679},"The quick tunnel changed address. Copy the new one into \"Talky bridge public URL\" and click **Save**.","Le tunnel rapide a changé d'adresse. Copiez la nouvelle dans « Adresse publique du pont Talky » et cliquez sur **Enregistrer**.",{"en":681,"fr":682},"Nothing arrives after restarting the tunnel.","Plus rien n'arrive après avoir relancé le tunnel.",{"a":684,"q":687},{"en":685,"fr":686},"Check that you run Build 42 of the game. Without the Workshop, the game looks for `%USERPROFILE%\\Zomboid\\mods\\Talky\\42\\mod.info`: copy the zip's `Talky` folder, not the folder that holds it. Also check that there aren't two copies of the mod, the Workshop one and `%USERPROFILE%\\Zomboid\\mods\\Talky`, and keep only one.","Vérifiez que vous lancez la Build 42 du jeu. Sans le Workshop, le jeu cherche `%USERPROFILE%\\Zomboid\\mods\\Talky\\42\\mod.info` : copiez le dossier `Talky` du zip, pas le dossier qui le contient. Vérifiez aussi qu'il n'existe pas deux copies du mod, celle du Workshop et `%USERPROFILE%\\Zomboid\\mods\\Talky`, et gardez-en une seule.",{"en":688,"fr":689},"The mod isn't in the mod list.","Le mod n'apparaît pas dans la liste des mods.",{"a":691,"q":694},{"en":692,"fr":693},"The \"Bits received (cheer)\" trigger needs the `bits:read` permission from Twitch. If your Twitch channel was connected before that permission was added, reconnect Twitch to the community.","Le déclencheur « Bits reçus (cheer) » demande à Twitch l'autorisation `bits:read`. Si votre chaîne Twitch a été connectée avant l'ajout de cette autorisation, reconnectez Twitch à la communauté.",{"en":695,"fr":696},"Bits trigger nothing.","Les bits ne déclenchent rien.",{"a":698,"q":701},{"en":699,"fr":700},"LibertyTalk reads them from your YouTube live chat: they only arrive during a live stream, with the YouTube channel connected to the community.","LibertyTalk les lit dans le chat de vos lives YouTube : ils n'arrivent que pendant un live, avec la chaîne YouTube connectée à la communauté.",{"en":702,"fr":703},"YouTube Super Chats and new members don't arrive.","Les Super Chats et les nouveaux membres YouTube n'arrivent pas.",{"a":705,"q":708},{"en":706,"fr":707},"The \"Donation received (Streamlabs)\" trigger only receives donations when Streamlabs is connected to the LibertyTalk community.","Le déclencheur « Don reçu (Streamlabs) » ne reçoit des dons que si Streamlabs est connecté à la communauté LibertyTalk.",{"en":709,"fr":710},"Donations don't arrive.","Les dons n'arrivent pas.",{"a":712,"q":715},{"en":713,"fr":714},"The bridge window then shows `http step refused: host \"...\" is not in httpAllowedHosts (bridge/config.json)` and the **Status** page shows the same reason after \"error:\". The bridge only calls the hosts listed in `httpAllowedHosts` in `bridge\\config.json`, LibertyTalk's by default (`*.liberty-talk.com`), as the `http steps allowed to` line reminds you at startup. Add the host you need there, then restart the bridge. This list lives in `config.json` and not in `talky_config.json`, which other game mods could rewrite.","La fenêtre du pont affiche alors `http step refused: host \"...\" is not in httpAllowedHosts (bridge/config.json)` et la page **Statut** montre la même raison après « erreur : ». Le pont n'appelle que les hôtes listés dans `httpAllowedHosts` de `bridge\\config.json`, par défaut ceux de LibertyTalk (`*.liberty-talk.com`), comme le rappelle la ligne `http steps allowed to` au démarrage. Ajoutez-y l'hôte voulu puis relancez le pont. Cette liste se trouve dans `config.json` et non dans `talky_config.json`, que d'autres mods du jeu pourraient réécrire.",{"en":716,"fr":717},"The bridge refuses an `http` step of a workflow.","Le pont refuse une étape `http` d'un workflow.",{"a":719,"q":722},{"en":720,"fr":721},"The mod was updated, for example by the Workshop, but the bridge wasn't: game events and **Test now** no longer reach the bridge. Close the bridge window, download the zip of the same version from the GitHub releases and extract it into the same folder as the old one, for example `Documents\\Talky`, replacing the files. The zip doesn't contain `bridge\\config.json`: the bridge's token and configuration stay the same. Then start `start-bridge.cmd` again.","Le mod a été mis à jour, par exemple par le Workshop, mais pas le pont : les événements du jeu et **Tester maintenant** n'arrivent plus au pont. Fermez la fenêtre du pont, téléchargez le zip de la même version dans les releases GitHub et extrayez-le dans le même dossier que l'ancien, par exemple `Documents\\Talky`, en remplaçant les fichiers. Le zip ne contient pas `bridge\\config.json` : le jeton et la configuration du pont restent les mêmes. Relancez ensuite `start-bridge.cmd`.",{"en":723,"fr":724},"F8 shows \"Bridge older than 0.4.0\".","F8 affiche « Bridge antérieur à 0.4.0 ».",{"a":726,"q":729},{"en":727,"fr":728},"Talky's code that runs the jobs didn't answer for 2 minutes: it didn't load. Look in `%USERPROFILE%\\Zomboid\\console.txt` for a Lua error that mentions Talky. Once it's fixed, load the game again: Talky only runs this check again when a game loads.","Le code de Talky qui exécute les jobs n'a pas répondu pendant 2 minutes : il ne s'est pas chargé. Cherchez dans `%USERPROFILE%\\Zomboid\\console.txt` une erreur Lua qui mentionne Talky. Une fois le problème réglé, relancez la partie : Talky ne refait cette vérification qu'au chargement d'une partie.",{"en":730,"fr":731},"F8 shows \"Single player: the Talky game code did not start\".","F8 affiche « Solo : le code Talky de la partie n'a pas démarré ».",{"a":733,"q":736},{"en":734,"fr":735},"For the bridge, in its window. For the mod, in `%USERPROFILE%\\Zomboid\\console.txt`, lines prefixed with `[Talky]`. The address `http://127.0.0.1:7420/health?token=\u003Cyour token>`, opened in a browser on the same PC, returns the version, the number of pending jobs and the last 50 events. Don't show it on stream: it contains your token.","Côté pont, dans sa fenêtre. Côté mod, dans `%USERPROFILE%\\Zomboid\\console.txt`, lignes préfixées par `[Talky]`. L'adresse `http://127.0.0.1:7420/health?token=\u003Cvotre jeton>`, ouverte dans un navigateur du même PC, renvoie la version, le nombre de jobs en attente et les 50 derniers événements. Ne l'affichez pas en live : elle contient votre jeton.",{"en":737,"fr":738},"Where are the logs?","Où trouver les journaux ?",{"id":740,"type":111,"title":741,"summary":744},"part-2-workflows",{"en":742,"fr":743},"Understand workflows with Talky","Comprendre les workflows avec Talky",{"en":745,"fr":746},"What the widget does, where to put the logic, three worked examples, then the way back from the game to LibertyTalk.","Ce que fait le widget, où placer la logique, trois exemples commentés, puis le retour du jeu vers LibertyTalk.",{"id":748,"text":749,"type":123,"level":124},"p2-two-engines",{"en":750,"fr":751},"Two engines, one model","Deux moteurs, un même modèle",{"id":753,"text":754,"type":43},"p2-two-engines-model",{"en":755,"fr":756},"A LibertyTalk workflow starts from a trigger, an event such as \"New follower\", then runs its nodes in order and passes them the event's data. The Talky bridge has its own, smaller engine: each `/hooks/\u003Cid>` webhook runs a bridge workflow, a list of steps the mod carries out in the game.","Un workflow LibertyTalk part d'un déclencheur, un événement comme « Nouveau follower », puis exécute ses nœuds dans l'ordre en leur passant les données de l'événement. Le pont Talky a son propre moteur, plus petit : chaque webhook `/hooks/\u003Cid>` lance un workflow du pont, une liste d'étapes que le mod exécute dans la partie.",{"id":758,"type":46,"steps":759,"caption":795},"p2-two-engines-flow",[760,767,775,782,789],{"kind":49,"label":761,"detail":764},{"en":762,"fr":763},"New follower","Nouveau follower",{"en":765,"fr":766},"Twitch trigger, it provides `{user_name}`.","Déclencheur Twitch, il fournit `{user_name}`.",{"kind":768,"label":769,"detail":772},"condition",{"en":770,"fr":771},"If (classic)","Si (classique)",{"en":773,"fr":774},"Is the \"Send follows\" box (`talky_on_follow`) ticked?","La case « Envoyer les follows » (`talky_on_follow`) est-elle cochée ?",{"kind":57,"label":776,"detail":779},{"en":777,"fr":778},"Webhook / API call (background)","Appel webhook / API (arrière-plan)",{"en":780,"fr":781},"POST to `{talky_bridge_url}/hooks/follow`.","POST vers `{talky_bridge_url}/hooks/follow`.",{"kind":65,"label":783,"detail":786},{"en":784,"fr":785},"Bridge: follow webhook","Pont : webhook follow",{"en":787,"fr":788},"Runs the bridge's `new_follower` workflow.","Lance le workflow `new_follower` du pont.",{"kind":65,"label":790,"detail":793},{"en":791,"fr":792},"Mod: three steps","Mod : trois étapes",{"en":794,"fr":794},"`notify`, `wait`, `spawn_zombie`.",{"en":796,"fr":797},"The first three boxes live in LibertyTalk, the last two on your PC.","Les trois premières cases vivent dans LibertyTalk, les deux dernières sur votre PC.",{"id":799,"text":800,"type":43},"p2-two-engines-boundary",{"en":801,"fr":802},"Keep this boundary in mind: LibertyTalk decides which events go to the game and with which data, the bridge decides what happens in the game.","Retenez cette frontière : LibertyTalk décide quels événements partent vers le jeu et avec quelles données, le pont décide de ce qui se passe dans la partie.",{"id":804,"text":805,"type":123,"level":124},"p2-widget-inside",{"en":806,"fr":807},"What the official widget does","Ce que fait le widget officiel",{"id":809,"text":810,"type":43},"p2-widget-inside-pattern",{"en":811,"fr":812},"The widget holds ten chains built on the same pattern: a trigger, an \"If (classic)\" node that tests the event's box, then a \"Webhook / API call (background)\". Each call sends a POST to `{talky_bridge_url}/hooks/\u003Cid>` with the `{\"X-Bridge-Token\":\"{talky_token}\"}` header. The call runs in the background so a slow tunnel doesn't delay your community's other events. The subscription chain also tests `is_gift`: it only relays subscriptions that aren't gifts, the gift chain handles the rest.","Le widget contient dix chaînes construites sur le même patron : un déclencheur, un nœud « Si (classique) » qui teste la case de l'événement, puis un « Appel webhook / API (arrière-plan) ». Chaque appel envoie un POST à `{talky_bridge_url}/hooks/\u003Cid>` avec l'en-tête `{\"X-Bridge-Token\":\"{talky_token}\"}`. L'appel part en arrière-plan pour qu'un tunnel lent ne retarde pas les autres événements de votre communauté. La chaîne des abonnements teste aussi `is_gift` : elle ne relaie que les abonnements qui ne sont pas offerts, la chaîne des cadeaux s'occupe des autres.",{"id":814,"head":815,"rows":828,"type":511},"p2-widget-inside-table",[816,819,822,825],{"en":817,"fr":818},"Trigger","Déclencheur",{"en":820,"fr":821},"Bridge webhook","Webhook du pont",{"en":823,"fr":824},"Data sent","Données envoyées",{"en":826,"fr":827},"Bridge workflow","Workflow du pont",[829,839,849,859,868,877,888,897,906,914],[830,833,835,837],{"en":831,"fr":832},"New follower (Twitch)","Nouveau follower (Twitch)",{"en":834,"fr":834},"`follow`",{"en":836,"fr":836},"`user_name`",{"en":838,"fr":838},"`new_follower`",[840,843,845,847],{"en":841,"fr":842},"New subscriber (Twitch), gifted subs excluded","Nouveau subscriber (Twitch), hors abonnements offerts",{"en":844,"fr":844},"`sub`",{"en":846,"fr":846},"`user_name`, `tier`, `is_gift`",{"en":848,"fr":848},"`new_sub`",[850,853,855,857],{"en":851,"fr":852},"New subscriber gift (Twitch)","Nouveau cadeau subscriber (Twitch)",{"en":854,"fr":854},"`gift`",{"en":856,"fr":856},"`user_name`, `total`, `tier`",{"en":858,"fr":858},"`gift_subs`",[860,863,865,867],{"en":861,"fr":862},"Bits received (cheer)","Bits reçus (cheer)",{"en":864,"fr":864},"`bits`",{"en":866,"fr":866},"`user_name`, `bits`",{"en":864,"fr":864},[869,872,874,876],{"en":870,"fr":871},"Raid received","Raid reçu",{"en":873,"fr":873},"`raid`",{"en":875,"fr":875},"`user_name`, `viewers`",{"en":873,"fr":873},[878,881,883,885],{"en":879,"fr":880},"Channel points reward","Récompense (points de chaîne)",{"en":882,"fr":882},"`points`",{"en":884,"fr":884},"`user_name`, `reward_title`",{"en":886,"fr":887},"routes by `reward_title`","routes selon `reward_title`",[889,892,894,895],{"en":890,"fr":891},"Command received, filtered on `{talky_command}`","Commande reçue, filtrée sur `{talky_command}`",{"en":893,"fr":893},"`command`",{"en":893,"fr":893},{"en":896,"fr":896},"`chat_zombie`",[898,901,903,905],{"en":899,"fr":900},"Donation received (Streamlabs)","Don reçu (Streamlabs)",{"en":902,"fr":902},"`donation`",{"en":904,"fr":904},"`donor`, `amount`, `formatted_amount`",{"en":902,"fr":902},[907,909,911,913],{"en":908,"fr":908},"Super Chat (YouTube)",{"en":910,"fr":910},"`superchat`",{"en":912,"fr":912},"`author_display_name`, `formatted_amount`",{"en":902,"fr":902},[915,918,920,922],{"en":916,"fr":917},"New member (YouTube)","Nouveau membre (YouTube)",{"en":919,"fr":919},"`member`",{"en":921,"fr":921},"`author_display_name`",{"en":848,"fr":848},{"id":924,"text":925,"type":43},"p2-widget-inside-bridge-side",{"en":926,"fr":927},"The bridge workflows in the last column are the ones shipped with Talky. You edit them in F8, **Workflows** page, without touching the widget. For example, Super Chats and donations share `donation`, which draws either a shotgun with shells, a heal with canned food, or a pickup truck.","Les workflows du pont de la dernière colonne sont ceux livrés avec Talky. Vous les modifiez dans F8, page **Workflows**, sans toucher au widget. Par exemple, Super Chats et dons partagent `donation`, qui tire au sort un fusil à pompe avec ses cartouches, un soin avec des conserves, ou un pick-up.",{"id":929,"kind":101,"text":930,"type":105,"title":933},"p2-widget-inside-no-name",{"en":931,"fr":932},"Twitch's developer agreement forbids redistributing chat messages outside Twitch. LibertyTalk applies this rule to marketplace widgets: a widget can send neither the name of a chat message's author nor the text of that message to an outside service ([platform rules](dashboard:/platform-rules?network=twitch)). A `!zombie` command is a chat message, so the `command` webhook only receives `{\"command\":\"zombie\"}`. As a result, `!zombie` and `!zombie Bob` do the same thing, and the zombie carries the bridge's name for anonymous events, \"Anonymous\" in English, or the value of \"Name for anonymous events\" in F8, **Settings** page. The widget doesn't send the text a viewer types with a channel points reward either: the bridge routes work on the reward title.","Le contrat développeur de Twitch interdit de redistribuer les messages du chat hors de Twitch. LibertyTalk applique cette règle aux widgets de la marketplace : un widget ne peut envoyer à un service externe ni le pseudo de l'auteur d'un message de chat, ni le texte de ce message ([règles des plateformes](dashboard:/platform-rules?network=twitch)). Une commande `!zombie` est un message de chat : le webhook `command` reçoit donc seulement `{\"command\":\"zombie\"}`. Conséquence : `!zombie` et `!zombie Bob` font la même chose, et le zombie porte le nom des événements anonymes du pont, « Anonyme » en français, ou la valeur de « Pseudo des événements anonymes » dans F8, page **Réglages**. Le widget n'envoie pas non plus le texte qu'un viewer saisit avec une récompense de points : les routes du pont travaillent sur le titre de la récompense.",{"en":934,"fr":935},"Why the command arrives without a name or text","Pourquoi la commande arrive sans pseudo ni texte",{"id":937,"text":938,"type":43},"p2-widget-inside-named-alternative",{"en":939,"fr":940},"For a viewer to get a zombie named after them, use an event that provides a name outside the chat: a follow, bits, or a channel points reward whose title contains \"zombie\". That last one runs `points_zombie`, which names the zombie after the viewer who redeemed the reward.","Pour qu'un viewer obtienne un zombie à son nom, passez par un événement qui fournit un pseudo hors du chat : un follow, des bits, ou une récompense de points de chaîne dont le titre contient « zombie ». Cette dernière lance `points_zombie`, qui nomme le zombie d'après le viewer qui a échangé la récompense.",{"id":942,"text":943,"type":123,"level":124},"p2-variables",{"en":944,"fr":945},"Variables","Les variables",{"id":947,"text":948,"type":43},"p2-variables-triggers",{"en":949,"fr":950},"In LibertyTalk, a variable is written between single braces. Each trigger declares its own: \"Bits received (cheer)\" provides `{bits}`, `{user_name}` and `{is_anonymous}`, and \"Channel points reward\" provides `{reward_title}` and `{reward_cost}`. The editor's variable picker offers them in the nodes that follow.","Dans LibertyTalk, une variable s'écrit entre accolades simples. Chaque déclencheur annonce les siennes : « Bits reçus (cheer) » fournit `{bits}`, `{user_name}` et `{is_anonymous}`, et « Récompense (points de chaîne) » fournit `{reward_title}` et `{reward_cost}`. Le sélecteur de variables de l'éditeur les propose dans les nœuds qui suivent.",{"id":952,"text":953,"type":43},"p2-variables-widget",{"en":954,"fr":955},"The widget variables, `{talky_bridge_url}`, `{talky_token}` and `{talky_command}`, are filled in at install time and read again on every run. They carry the `talky_` prefix because the event's data takes priority: a widget variable named `user_name` would be hidden by the trigger's. `{talky_token}` is declared secret: its value is masked in execution traces.","Les variables du widget, `{talky_bridge_url}`, `{talky_token}` et `{talky_command}`, sont remplies à l'installation et relues à chaque exécution. Elles portent le préfixe `talky_` parce que les données de l'événement passent en priorité : une variable de widget nommée `user_name` serait masquée par celle du déclencheur. `{talky_token}` est déclarée secrète : sa valeur est masquée dans les traces d'exécution.",{"id":957,"text":958,"type":43},"p2-variables-missing",{"en":959,"fr":960},"A misspelled variable stays as it is: with `{user_nmae}`, the bridge receives that text and your zombie is called \"{user_nmae}\". A variable the trigger declares but the event lacks becomes empty, like `{user_name}` for an anonymous cheer; the bridge then uses its default name.","Une variable mal orthographiée reste telle quelle : avec `{user_nmae}`, le pont reçoit ce texte et votre zombie s'appelle « {user_nmae} ». Une variable prévue par le déclencheur mais absente de l'événement devient vide, comme `{user_name}` pour un cheer anonyme ; le pont utilise alors son nom par défaut.",{"id":962,"text":963,"type":43},"p2-variables-bridge",{"en":964,"fr":965},"The bridge has its own templates, between double braces, with filters: `{{bits | div:100 | floor}}` gives 4 for 450 bits. `{{user}}` takes the first filled field among `user_name`, `author_display_name`, `donor` and a few others, which lets the same `new_sub` workflow serve Twitch subscribers and YouTube members. When none of these fields is filled, `{{user}}` is the name of anonymous events.","Le pont a ses propres modèles, entre accolades doubles, avec des filtres : `{{bits | div:100 | floor}}` donne 4 pour 450 bits. `{{user}}` prend le premier champ rempli parmi `user_name`, `author_display_name`, `donor` et quelques autres, ce qui permet au même workflow `new_sub` de servir aux abonnés Twitch et aux membres YouTube. Quand aucun de ces champs n'est rempli, `{{user}}` vaut le nom des événements anonymes.",{"id":967,"kind":246,"text":968,"type":105,"title":971},"p2-variables-json-body",{"en":969,"fr":970},"Put each variable between quotes inside valid JSON, such as `{\"bits\":\"{bits}\"}`. LibertyTalk then escapes the values: a quote in a reward title, such as `Call \"now\"`, no longer breaks the body. Values travel as text; the bridge converts `bits`, `viewers`, `total`, `amount` and `tier` to numbers before testing its conditions.","Placez chaque variable entre guillemets dans un JSON valide, comme `{\"bits\":\"{bits}\"}`. LibertyTalk échappe alors les valeurs : un guillemet dans le titre d'une récompense, comme `Appel \"urgent\"`, ne casse plus le corps. Les valeurs partent en texte ; le pont convertit `bits`, `viewers`, `total`, `amount` et `tier` en nombres avant de tester ses conditions.",{"en":972,"fr":973},"Writing a JSON body","Écrire un corps JSON",{"id":975,"kind":192,"text":976,"type":105,"title":979},"p2-variables-double-braces",{"en":977,"fr":978},"Don't write `{{user_name}}` in a LibertyTalk field: LibertyTalk replaces the `{user_name}` part and the bridge receives `{Bob}`. Double-brace templates belong in F8, **Workflows** page.","N'écrivez pas `{{user_name}}` dans un champ LibertyTalk : LibertyTalk remplace la partie `{user_name}` et le pont reçoit `{Bob}`. Les modèles à accolades doubles se règlent dans F8, page **Workflows**.",{"en":980,"fr":981},"Keep bridge templates in the bridge","Gardez les modèles du pont dans le pont",{"id":983,"text":984,"type":123,"level":124},"p2-where-logic",{"en":985,"fr":986},"Decide in LibertyTalk or in the bridge","Décider dans LibertyTalk ou dans le pont",{"id":988,"text":989,"type":43},"p2-where-logic-intro",{"en":990,"fr":991},"The two engines don't do the same things. LibertyTalk has no loop or math node: a node can't repeat itself \"once per 100 bits\". The bridge, for its part, only sees what LibertyTalk sends it. This table shows where each need belongs.","Les deux moteurs ne savent pas faire les mêmes choses. LibertyTalk n'a pas de nœud de boucle ni de calcul : un nœud ne peut pas se répéter « une fois par tranche de 100 bits ». Le pont, lui, ne voit que ce que LibertyTalk lui envoie. Ce tableau indique où placer chaque besoin.",{"id":993,"head":994,"rows":1004,"type":511},"p2-where-logic-table",[995,998,1001],{"en":996,"fr":997},"Need","Besoin",{"en":999,"fr":1000},"In LibertyTalk","Dans LibertyTalk",{"en":1002,"fr":1003},"In the Talky bridge","Dans le pont Talky",[1005,1015,1025,1035,1045,1055,1065,1075],[1006,1009,1012],{"en":1007,"fr":1008},"Choose which events reach the game","Choisir les événements qui partent vers le jeu",{"en":1010,"fr":1011},"Widget boxes (\"If (classic)\") and trigger filters such as `filter_command`","Cases du widget (« Si (classique) ») et filtres du déclencheur, comme `filter_command`",{"en":1013,"fr":1014},"A workflow's \"Enabled\" box","Case « Activé » d'un workflow",[1016,1019,1022],{"en":1017,"fr":1018},"Route on a text, such as a reward title","Aiguiller selon un texte, comme le titre d'une récompense",{"en":1020,"fr":1021},"\"Switch\" with \"~ matches regex\"","« Aiguillage (switch) » avec « ~ correspond au regex »",{"en":1023,"fr":1024},"`routes` with `contains` or `matches`","`routes` avec `contains` ou `matches`",[1026,1029,1032],{"en":1027,"fr":1028},"Compute a number, such as bits ÷ 100","Calculer un nombre, comme bits ÷ 100",{"en":1030,"fr":1031},"Not possible: no math node","Impossible : aucun nœud de calcul",{"en":1033,"fr":1034},"`div`, `floor`, `clamp` filters","Filtres `div`, `floor`, `clamp`",[1036,1039,1042],{"en":1037,"fr":1038},"Repeat an action N times","Répéter une action N fois",{"en":1040,"fr":1041},"Not possible: a workflow doesn't loop","Impossible : un workflow ne boucle pas",{"en":1043,"fr":1044},"`repeat` step with a `max` cap","Étape `repeat` avec un plafond `max`",[1046,1049,1052],{"en":1047,"fr":1048},"Pick at random","Tirer au sort",{"en":1050,"fr":1051},"Only by misusing `{@uuid}`, not recommended","Seulement en détournant `{@uuid}`, déconseillé",{"en":1053,"fr":1054},"`random` with `weights`, or `chance`","`random` avec `weights`, ou `chance`",[1056,1059,1062],{"en":1057,"fr":1058},"Limit the frequency (cooldown)","Limiter la fréquence (cooldown)",{"en":1060,"fr":1061},"\"Detect spam (repeat / flood)\" repurposed, one-hour window at most","« Détecter du spam (répétition / flood) » détourné, fenêtre d'une heure au plus",{"en":1063,"fr":1064},"`cooldownSeconds` and `userCooldownSeconds`","`cooldownSeconds` et `userCooldownSeconds`",[1066,1069,1072],{"en":1067,"fr":1068},"Format a text","Mettre un texte en forme",{"en":1070,"fr":1071},"No, the value is sent as is","Non, la valeur part telle quelle",{"en":1073,"fr":1074},"`upper`, `lower`, `truncate`, `default` filters","Filtres `upper`, `lower`, `truncate`, `default`",[1076,1079,1082],{"en":1077,"fr":1078},"React in chat to a game event","Réagir dans le chat à un événement du jeu",{"en":1080,"fr":1081},"\"Incoming webhook\", then \"Send a message\"","« Webhook entrant » puis « Envoyer un message »",{"en":1083,"fr":1084},"`http` step to that incoming webhook","Étape `http` vers ce webhook entrant",{"id":1086,"text":1087,"type":43},"p2-where-logic-rule",{"en":1088,"fr":1089},"In practice, let LibertyTalk route and filter, and hand the bridge the raw numbers. The widget follows this rule: it sends `{bits}` as is and the bridge works out the size of the horde.","En pratique, laissez LibertyTalk router et filtrer, et donnez au pont les nombres bruts. Le widget suit cette règle : il envoie `{bits}` tel quel et le pont calcule la taille de la horde.",{"id":1091,"text":1092,"type":123,"level":124},"p2-example-follow",{"en":1093,"fr":1094},"Example 1 · A follow, a named zombie","Exemple 1 · Un follow, un zombie nommé",{"id":1096,"text":1097,"type":43},"p2-example-follow-chain",{"en":1098,"fr":1099},"When Bob follows the channel, the widget sends `{\"user_name\":\"Bob\"}` to `/hooks/follow`. The bridge runs `new_follower`, which holds three steps:","Quand Bob suit la chaîne, le widget envoie `{\"user_name\":\"Bob\"}` à `/hooks/follow`. Le pont lance `new_follower`, qui contient trois étapes :",{"id":1101,"type":127,"items":1102,"ordered":1112},"p2-example-follow-steps",[1103,1106,1109],{"en":1104,"fr":1105},"`notify`: a banner with the name, in purple `#b388ff`.","`notify` : un bandeau avec le pseudo, en violet `#b388ff`.",{"en":1107,"fr":1108},"`wait`: a 2-second pause in the game.","`wait` : 2 secondes de pause dans le jeu.",{"en":1110,"fr":1111},"`spawn_zombie`: a zombie named `{{user}}`, between 8 and 14 tiles from the character, with its name shown in the same colour.","`spawn_zombie` : un zombie nommé `{{user}}`, entre 8 et 14 cases du personnage, avec son nom affiché de la même couleur.",true,{"id":1114,"text":1115,"type":43},"p2-example-follow-custom",{"en":1116,"fr":1117},"To change this zombie, open F8, **Workflows** page, `new_follower`, and double-click the zombie step in the step list. Tick \"Crawler\" to make it crawl, or set \"Count\" to 3: three zombies appear, named \"Bob #1\" to \"Bob #3\", or all \"Bob\" with \"Same name for all\". Click **OK**, then **Save**: the bridge reloads the configuration without restarting.","Pour changer ce zombie, ouvrez F8, page **Workflows**, `new_follower`, et double-cliquez sur l'étape du zombie dans la liste des étapes. Cochez « Rampant » pour qu'il rampe, ou passez « Nombre » à 3 : trois zombies apparaissent, nommés « Bob #1 » à « Bob #3 », ou tous « Bob » avec « Même nom pour tous ». Cliquez sur **Valider**, puis sur **Enregistrer** : le pont recharge la configuration sans redémarrer.",{"id":1119,"text":1120,"type":123,"level":124},"p2-example-bits",{"en":1121,"fr":1122},"Example 2 · Bits, a horde to match","Exemple 2 · Des bits, une horde à leur mesure",{"id":1124,"text":1125,"type":43},"p2-example-bits-why-bridge",{"en":1126,"fr":1127},"The widget passes `{bits}` on unchanged, because LibertyTalk can neither divide a number nor repeat a node. The bridge's `bits` workflow does the math:","Le widget transmet `{bits}` sans le transformer, car LibertyTalk ne sait ni diviser un nombre ni répéter un nœud. C'est le workflow `bits` du pont qui fait le calcul :",{"id":1129,"code":1130,"type":153,"caption":1131,"filename":1134,"language":1135},"p2-example-bits-code","\"bits\": {\n  \"steps\": [\n    { \"if\": { \"bits\": { \"gte\": 1000 } },\n      \"then\": [ { \"action\": \"helicopter\" } ],\n      \"else\": [\n        { \"if\": { \"bits\": { \"gte\": 100 } },\n          \"then\": [\n            { \"repeat\": \"{{bits | div:100 | floor}}\", \"max\": 20, \"steps\": [\n              { \"action\": \"spawn_zombie\", \"name\": \"{{user}}\", \"sameName\": true, \"distance\": 18 },\n              { \"action\": \"wait\", \"seconds\": 1 }\n            ] }\n          ],\n          \"else\": [ { \"action\": \"noise\", \"radius\": 25 } ] }\n      ] }\n  ]\n}",{"en":1132,"fr":1133},"Excerpt of the `bits` workflow shipped with Talky, without the `notify` steps that show the banners.","Extrait du workflow `bits` livré avec Talky, sans les étapes `notify` qui affichent les bandeaux.","talky_config.json","json",{"id":1137,"type":127,"items":1138,"ordered":144},"p2-example-bits-cases",[1139,1142,1145],{"en":1140,"fr":1141},"450 bits: `450 / 100` rounded down gives 4 zombies named after the viewer, one per second, at most 18 tiles away.","450 bits : `450 / 100` arrondi à l'entier inférieur donne 4 zombies au nom du viewer, un par seconde, à 18 cases au plus.",{"en":1143,"fr":1144},"1,000 bits or more: the helicopter comes over, with no named zombie.","1 000 bits ou plus : l'hélicoptère passe, sans zombie nommé.",{"en":1146,"fr":1147},"Under 100 bits: a noise draws the zombies within 25 tiles.","Moins de 100 bits : un bruit attire les zombies dans un rayon de 25 cases.",{"id":1149,"text":1150,"type":43},"p2-example-bits-cap",{"en":1151,"fr":1152},"The `max: 20` cap protects the game if you remove the helicopter branch: 5,000 bits would otherwise give 50 zombies. To test without spending bits, **Test now** on `bits` sends 500 bits, which makes 5 zombies.","Le plafond `max: 20` protège la partie si vous retirez la branche de l'hélicoptère : 5 000 bits donneraient sinon 50 zombies. Pour tester sans dépenser de bits, **Tester maintenant** sur `bits` envoie 500 bits, soit 5 zombies.",{"id":1154,"alt":1155,"url":1158,"type":277,"width":278,"caption":1159},"p2-example-bits-shot",{"en":1156,"fr":1157},"In game: the \"Bob sends 5 zombie(s)!\" banner and a first zombie coming in.","En jeu : le bandeau « Bob envoie 5 zombie(s) ! » et un premier zombie qui arrive.","https://d1lvjaji8qt9t1.cloudfront.net/media/354c3947-56e6-4296-8f30-f34f0d21ab1a.jpg",{"en":1160,"fr":1161},"Test of the `bits` workflow: the zombies come in one per second.","Test du workflow `bits` : les zombies arrivent un par seconde.",{"id":1163,"kind":101,"text":1164,"type":105,"title":1167},"p2-example-bits-switch",{"en":1165,"fr":1166},"In LibertyTalk, a \"Switch\" on `bits` can send fixed tiers to different webhooks, for example 100, 500 and 1,000 bits. It can't produce one zombie per 100 bits: that math stays in the bridge.","Dans LibertyTalk, un « Aiguillage (switch) » sur `bits` peut envoyer des paliers fixes vers des webhooks différents, par exemple 100, 500 et 1 000 bits. Il ne peut pas produire un zombie par tranche de 100 bits : ce calcul reste dans le pont.",{"en":1168,"fr":1169},"What about a Switch?","Et avec un Aiguillage ?",{"id":1171,"text":1172,"type":123,"level":124},"p2-example-points",{"en":1173,"fr":1174},"Example 3 · A points reward, an event of your choice","Exemple 3 · Une récompense de points, un événement au choix",{"id":1176,"text":1177,"type":43},"p2-example-points-routes",{"en":1178,"fr":1179},"The widget sends every channel points reward to the same webhook, `points`, with `user_name` and `reward_title`. The bridge picks the workflow with routes: the first one whose condition is true wins. The routes shipped with Talky look for a word in the title, in English unless the bridge was first started with `settings.language` set to `fr`:","Le widget envoie toutes les récompenses de points de chaîne au même webhook, `points`, avec `user_name` et `reward_title`. Le pont choisit le workflow avec des routes : la première dont la condition est vraie gagne. Les routes livrées avec Talky cherchent un mot dans le titre, en français si le pont a été lancé la première fois avec `settings.language` à `fr` :",{"id":1181,"type":127,"items":1182,"ordered":144},"p2-example-points-defaults",[1183,1186,1189,1192],{"en":1184,"fr":1185},"\"helicopter\" runs `points_helicopter`: the helicopter comes over, at most once every 10 minutes.","« hélico » lance `points_helicopter` : l'hélicoptère passe, une fois toutes les 10 minutes au plus.",{"en":1187,"fr":1188},"\"heal\" runs `points_heal`: full heal and floating text with the viewer's name.","« soin » lance `points_heal` : soin complet et texte flottant au nom du viewer.",{"en":1190,"fr":1191},"\"storm\" runs `points_storm`: 3 in-game hours of storm.","« tempête » lance `points_storm` : 3 heures de tempête dans le jeu.",{"en":1193,"fr":1194},"\"zombie\" runs `points_zombie`: a zombie whose name, in light blue, is the name of the viewer who redeemed the reward.","« zombie » lance `points_zombie` : un zombie dont le nom, en bleu clair, est le pseudo du viewer qui a échangé la récompense.",{"id":1196,"text":1197,"type":43},"p2-example-points-matching",{"en":1198,"fr":1199},"The bridge's `contains` comparison ignores case: \"Call the Helicopter\" matches, but \"Call the chopper\" doesn't, and a bridge first started in French looks for `hélico`, `soin` and `tempête`. Routes using `matches` accept several spellings and both languages. A reward that matches no route runs nothing: the **Status** page shows it with \"skipped: no matching route\".","La comparaison `contains` du pont ignore les majuscules : « Appeler l'Hélico » correspond, mais « Appeler l'helico » sans accent ne correspond pas, et un pont resté en anglais cherche `helicopter`, `heal` et `storm`. Des routes en `matches` acceptent plusieurs graphies et les deux langues. Une récompense qui ne correspond à aucune route ne lance rien : la page **Statut** l'affiche avec « ignoré : aucune route ne correspond ».",{"id":1201,"code":1202,"type":153,"caption":1203,"language":1135},"p2-example-points-code","[\n  { \"when\": { \"reward_title\": { \"matches\": \"h[ée]lico\" } },        \"workflow\": \"points_helicopter\" },\n  { \"when\": { \"reward_title\": { \"matches\": \"soin|heal\" } },        \"workflow\": \"points_heal\" },\n  { \"when\": { \"reward_title\": { \"matches\": \"temp[êe]te|storm\" } }, \"workflow\": \"points_storm\" },\n  { \"when\": { \"reward_title\": { \"contains\": \"zombie\" } },          \"workflow\": \"points_zombie\" }\n]",{"en":1204,"fr":1205},"Routes that recognise both English and French titles, to paste in F8, **Webhooks** page, `points`, \"Edit routes (JSON)\" button. `h[ée]lico` matches \"hélico\", \"helico\" and \"helicopter\".","Des routes qui reconnaissent les titres en français et en anglais, à coller dans F8, page **Webhooks**, `points`, bouton « Modifier les routes (JSON) ». `h[ée]lico` reconnaît « hélico », « helico » et « helicopter ».",{"id":1207,"text":1208,"type":123,"level":1211},"p2-example-points-in-lt",{"en":1209,"fr":1210},"The same logic in LibertyTalk","La même logique dans LibertyTalk",3,{"id":1213,"text":1214,"type":43},"p2-example-points-in-lt-intro",{"en":1215,"fr":1216},"Would you rather see the routing in the workflow editor? Untick \"Send channel point rewards\" in the widget to avoid duplicates, then build your own workflow:","Vous préférez voir l'aiguillage dans l'éditeur de workflows ? Décochez « Envoyer les récompenses de points de chaîne » dans le widget pour éviter les doublons, puis construisez votre propre workflow :",{"id":1218,"type":206,"items":1219},"p2-example-points-in-lt-steps",[1220,1227,1234,1241,1248],{"text":1221,"title":1224},{"en":1222,"fr":1223},"\"Channel points reward\" on your Twitch account.","« Récompense (points de chaîne) » sur votre compte Twitch.",{"en":1225,"fr":1226},"The trigger","Le déclencheur",{"text":1228,"title":1231},{"en":1229,"fr":1230},"\"Switch\" in \"Exclusive (first match)\" mode, one case per reward, for example `reward_title` \"~ matches regex\" `/h[ée]lico/iu`.","« Aiguillage (switch) » en mode « Exclusif (1er cas vrai) », un cas par récompense, par exemple `reward_title` « ~ correspond au regex » `/h[ée]lico/iu`.",{"en":1232,"fr":1233},"An exclusive Switch","Un Aiguillage exclusif",{"text":1235,"title":1238},{"en":1236,"fr":1237},"In each branch, \"Set a variable\" named `talky_hook`, with the value `helicopter`, `heal` or `storm`.","Dans chaque branche, « Définir une variable » nommée `talky_hook`, avec la valeur `helico`, `soin` ou `tempete`.",{"en":1239,"fr":1240},"One variable per case","Une variable par cas",{"text":1242,"title":1245},{"en":1243,"fr":1244},"Connect every branch to the same \"Webhook / API call (background)\": URL `https://your-tunnel.trycloudflare.com/hooks/{talky_hook}`, method POST, headers `{\"X-Bridge-Token\":\"your token\"}`, body `{\"user_name\":\"{user_name}\",\"reward_title\":\"{reward_title}\"}`. Since this workflow isn't the widget, its address must be updated with every new tunnel.","Reliez toutes les branches au même « Appel webhook / API (arrière-plan) » : URL `https://votre-tunnel.trycloudflare.com/hooks/{talky_hook}`, méthode POST, en-têtes `{\"X-Bridge-Token\":\"votre jeton\"}`, corps `{\"user_name\":\"{user_name}\",\"reward_title\":\"{reward_title}\"}`. Comme ce workflow n'est pas le widget, son adresse est à mettre à jour à chaque nouveau tunnel.",{"en":1246,"fr":1247},"A single call","Un seul appel",{"text":1249,"title":1252},{"en":1250,"fr":1251},"In F8, **Webhooks** page, create `helicopter`, `heal` and `storm` with **+ New**, then **Rename**, and link them to `points_helicopter`, `points_heal` and `points_storm`.","Dans F8, page **Webhooks**, créez `helico`, `soin` et `tempete` avec **+ Nouveau** puis **Renommer**, et associez-les à `points_helicopter`, `points_heal` et `points_storm`.",{"en":1253,"fr":1254},"The bridge-side webhooks","Les webhooks côté pont",{"id":1256,"kind":192,"text":1257,"type":105,"title":1260},"p2-example-points-lt-pitfalls",{"en":1258,"fr":1259},"In LibertyTalk, `contains` is case-sensitive: \"Hélico\" doesn't contain \"hélico\". And a regular expression is written between delimiters with its flags, `/h[ée]lico/iu`: without the `/`, a pattern starting with `[` or `^` is misread and the condition stays false.","Dans LibertyTalk, `contains` respecte les majuscules : « Hélico » ne contient pas « hélico ». Et une expression régulière s'écrit entre délimiteurs avec ses options, `/h[ée]lico/iu` : sans les `/`, un motif qui commence par `[` ou `^` est mal lu et la condition reste fausse.",{"en":1261,"fr":1262},"Two differences from the bridge","Deux différences avec le pont",{"id":1264,"text":1265,"type":43},"p2-example-points-one-call",{"en":1266,"fr":1267},"A single final call rather than one call per branch: beyond 5 HTTP calls reachable from one trigger, the editor shows a warning when you save.","Un seul appel final plutôt qu'un appel par branche : au-delà de 5 appels HTTP atteignables depuis un même déclencheur, l'éditeur affiche un avertissement à l'enregistrement.",{"id":1269,"text":1270,"type":123,"level":124},"p2-cooldowns",{"en":1271,"fr":1272},"Limit the frequency","Limiter la fréquence",{"id":1274,"text":1275,"type":43},"p2-cooldowns-bridge",{"en":1276,"fr":1277},"Each bridge workflow has two delays, set in F8, **Workflows** page: \"Global cooldown (s)\" blocks the workflow for everyone, \"Cooldown per viewer (s)\" for the same name. By default, `points_helicopter` waits 600 seconds between two helicopters, and `chat_zombie` 20 seconds between two zombies.","Chaque workflow du pont a deux délais, réglables dans F8, page **Workflows** : « Cooldown global (s) » bloque le workflow pour tout le monde, « Cooldown par viewer (s) » pour un même pseudo. Par défaut, `points_helicopter` attend 600 secondes entre deux hélicoptères, et `chat_zombie` 20 secondes entre deux zombies.",{"id":1279,"text":1280,"type":43},"p2-cooldowns-shared-name",{"en":1281,"fr":1282},"`chat_zombie` has no \"Cooldown per viewer (s)\": the chat command arrives without a name, so every viewer carries the same default name, and a per-viewer delay would act as a global one. To space out `!zombie`, raise its \"Global cooldown (s)\".","`chat_zombie` n'a pas de « Cooldown par viewer (s) » : la commande de chat arrive sans pseudo, tous les viewers portent donc le même nom par défaut, et un délai par viewer y agirait comme un délai global. Pour espacer les `!zombie`, augmentez son « Cooldown global (s) ».",{"id":1284,"kind":101,"text":1285,"type":105,"title":1288},"p2-cooldowns-memory",{"en":1286,"fr":1287},"The bridge keeps its delays in memory: restarting `start-bridge.cmd` resets them.","Le pont garde ses délais en mémoire : relancer `start-bridge.cmd` les remet à zéro.",{"en":1289,"fr":1290},"Delays kept in memory","Délais en mémoire",{"id":1292,"text":1293,"type":43},"p2-cooldowns-lt",{"en":1294,"fr":1295},"On the LibertyTalk side, no node is meant for this, but the \"Detect spam (repeat / flood)\" moderation node can act as a delay: scope `network_id`, a constant value to compare (`helico`), a 600-second window, \"Flood: max messages in the window\" set to 2, then \"If (classic)\" on `is_flood` false. The first pass goes through, the next ones are blocked until the window ends, and a window can't exceed one hour.","Côté LibertyTalk, aucun nœud n'est prévu pour ça, mais le nœud de modération « Détecter du spam (répétition / flood) » peut servir de délai : portée `network_id`, valeur à comparer constante (`helico`), fenêtre de 600 secondes, « Flood : messages max dans la fenêtre » à 2, puis « Si (classique) » sur `is_flood` faux. Le premier passage est accepté, les suivants sont bloqués jusqu'à la fin de la fenêtre, qui ne dépasse pas une heure.",{"id":1297,"text":1298,"type":123,"level":124},"p2-game-to-lt",{"en":1299,"fr":1300},"From the game back to LibertyTalk","Le retour du jeu vers LibertyTalk",{"id":1302,"text":1303,"type":43},"p2-game-to-lt-events",{"en":1304,"fr":1305},"The mod sends three events back to the bridge: `zombie_killed` with `name` and `byPlayer` when a named zombie dies, `player_died` with `hoursSurvived` and `zombieKills`, and `game_started`. F8, **Game events** page, links each one to a bridge workflow. Example: post \"Bob's zombie is down.\" in your Twitch chat, with the disabled `report_to_libertytalk` workflow Talky ships for this.","Le mod renvoie trois événements au pont : `zombie_killed` avec `name` et `byPlayer` quand un zombie nommé meurt, `player_died` avec `hoursSurvived` et `zombieKills`, et `game_started`. F8, page **Événements du jeu**, relie chacun à un workflow du pont. Exemple : poster « Le zombie de Bob est tombé. » dans votre chat Twitch, avec le workflow désactivé `report_to_libertytalk` que Talky livre pour ça.",{"id":1307,"type":206,"items":1308},"p2-game-to-lt-steps",[1309,1316,1323,1330,1337,1344],{"text":1310,"title":1313},{"en":1311,"fr":1312},"In LibertyTalk, create a workflow with the \"Incoming webhook\" trigger and save it: the \"Webhook URL & secret\" field shows the address, ending in `/webhooks/workflow/\u003Ctoken>`, and the secret.","Dans LibertyTalk, créez un workflow avec le déclencheur « Webhook entrant » et enregistrez-le : le champ « URL & secret du webhook » affiche l'adresse, qui se termine par `/webhooks/workflow/\u003Cjeton>`, et le secret.",{"en":1314,"fr":1315},"Create the incoming webhook","Créez le webhook entrant",{"text":1317,"title":1320},{"en":1318,"fr":1319},"In \"Variables from the payload\", add the target variable `name` with the key `name`.","Dans « Variables depuis le payload », ajoutez la variable cible `name` avec la clé `name`.",{"en":1321,"fr":1322},"Read the zombie's name","Récupérez le nom du zombie",{"text":1324,"title":1327},{"en":1325,"fr":1326},"Add the Twitch \"Send a message\" action with the content `{name}'s zombie is down.`, then activate the workflow.","Ajoutez l'action Twitch « Envoyer un message » avec le contenu `Le zombie de {name} est tombé.`, puis activez le workflow.",{"en":1328,"fr":1329},"Post in chat","Postez dans le chat",{"text":1331,"title":1334},{"en":1332,"fr":1333},"Off stream, open `bridge\\config.json` in a text editor. In `httpTargets` > `lt_report`, replace `PASTE_THE_TOKEN_OF_YOUR_INCOMING_WEBHOOK` with the token at the end of the incoming webhook's address and `PASTE_THE_SECRET_OF_YOUR_INCOMING_WEBHOOK` with its secret, save, then restart the bridge. This file stays out of reach of the game and its mods; while a `PASTE_` value remains, the bridge refuses the step.","Hors live, ouvrez `bridge\\config.json` dans un éditeur de texte. Dans `httpTargets` > `lt_report`, remplacez `PASTE_THE_TOKEN_OF_YOUR_INCOMING_WEBHOOK` par le jeton qui termine l'adresse du webhook entrant et `PASTE_THE_SECRET_OF_YOUR_INCOMING_WEBHOOK` par son secret, enregistrez, puis relancez le pont. Ce fichier reste hors de portée du jeu et de ses mods ; tant qu'une valeur `PASTE_` reste, le pont refuse l'étape.",{"en":1335,"fr":1336},"Fill in the bridge target","Remplissez la cible du pont",{"text":1338,"title":1341},{"en":1339,"fr":1340},"In F8, **Workflows** page, select `report_to_libertytalk`, tick \"Enabled\", then click **Save**. Its `http` step only says `\"target\": \"lt_report\"`: the address and the secret don't go through `talky_config.json`. If your `talky_config.json` comes from Talky 0.3.0, this step still carries `url` and `headers`: replace them with `\"target\": \"lt_report\"` (\"Workflow as JSON\" button), otherwise the bridge sends the call with a warning.","Dans F8, page **Workflows**, sélectionnez `report_to_libertytalk`, cochez « Activé », puis cliquez sur **Enregistrer**. Son étape `http` indique seulement `\"target\": \"lt_report\"` : l'adresse et le secret ne passent pas par `talky_config.json`. Si votre `talky_config.json` vient de Talky 0.3.0, cette étape porte encore `url` et `headers` : remplacez-les par `\"target\": \"lt_report\"` (bouton « Workflow en JSON »), sinon le pont envoie l'appel avec un avertissement.",{"en":1342,"fr":1343},"Turn on the bridge workflow","Activez le workflow du pont",{"text":1345,"title":1348},{"en":1346,"fr":1347},"On the **Game events** page, pick `report_to_libertytalk` for \"A named zombie dies\", then click **Save**.","Page **Événements du jeu**, choisissez `report_to_libertytalk` pour « Un zombie nommé meurt », puis cliquez sur **Enregistrer**.",{"en":1349,"fr":1350},"Link the game event","Reliez l'événement du jeu",{"id":1352,"code":1353,"type":153,"caption":1354,"filename":1357,"language":1135},"p2-game-to-lt-target","\"httpTargets\": {\n  \"lt_report\": {\n    \"url\": \"https://api.liberty-talk.com/webhooks/workflow/PASTE_THE_TOKEN_OF_YOUR_INCOMING_WEBHOOK\",\n    \"headers\": { \"X-Webhook-Secret\": \"PASTE_THE_SECRET_OF_YOUR_INCOMING_WEBHOOK\" }\n  }\n}",{"en":1355,"fr":1356},"The `lt_report` target as shipped with Talky, before you fill it in. The bridge reads this file when it starts.","La cible `lt_report` telle que livrée avec Talky, avant de la remplir. Le pont lit ce fichier à son démarrage.","bridge\\config.json",{"id":1359,"code":1360,"type":153,"caption":1361,"filename":1134,"language":1135},"p2-game-to-lt-code","\"report_to_libertytalk\": {\n  \"enabled\": false,\n  \"steps\": [\n    { \"action\": \"http\", \"target\": \"lt_report\",\n      \"body\": { \"event\": \"{{event}}\", \"name\": \"{{name}}\", \"hoursSurvived\": \"{{hoursSurvived}}\", \"zombieKills\": \"{{zombieKills}}\" } }\n  ]\n}",{"en":1362,"fr":1363},"The `report_to_libertytalk` workflow as shipped with Talky: its step names the target, the address and the secret stay in `bridge\\config.json`. The incoming webhook answers 202 when it accepts the call.","Le workflow `report_to_libertytalk` tel que livré avec Talky : son étape nomme la cible, l'adresse et le secret restent dans `bridge\\config.json`. Le webhook entrant répond 202 quand il accepte l'appel.",{"id":1365,"text":1366,"type":43},"p2-game-to-lt-hosts",{"en":1367,"fr":1368},"The `api.liberty-talk.com` host is in `httpAllowedHosts` by default, so the step goes through without any setting. It runs in the background: it delays neither the game nor the other events. Linking \"A named zombie dies\" to `report_to_libertytalk` replaces `on_zombie_killed`, which spawns two \"cousins\" of the dead zombie 30% of the time. To keep both, copy the `http` step into the steps of `on_zombie_killed` instead.","L'hôte `api.liberty-talk.com` fait partie de `httpAllowedHosts` par défaut, l'étape passe donc sans réglage. Elle s'exécute en arrière-plan : elle ne retarde ni le jeu ni les autres événements. Relier « Un zombie nommé meurt » à `report_to_libertytalk` remplace `on_zombie_killed`, qui fait apparaître dans 30 % des cas deux « cousins » du zombie tué. Pour garder les deux, copiez plutôt l'étape `http` dans les étapes de `on_zombie_killed`.",{"id":1370,"text":1371,"type":43},"p2-game-to-lt-death",{"en":1372,"fr":1373},"The body also sends `event`, `hoursSurvived` and `zombieKills`. Link \"The player dies\" to the same workflow, also declare the `event` and `hoursSurvived` variables in \"Variables from the payload\", and a \"Switch\" with a case where `event` equals `player_died` can post another message when you die, for example `Died after {hoursSurvived} h of survival.`","Le corps envoie aussi `event`, `hoursSurvived` et `zombieKills`. Reliez « Le joueur meurt » au même workflow, déclarez aussi les variables `event` et `hoursSurvived` dans « Variables depuis le payload », et un « Aiguillage (switch) » avec un cas `event` égal à `player_died` peut poster un autre message à votre mort, par exemple `Mort après {hoursSurvived} h de survie.`",{"id":1375,"kind":192,"text":1376,"type":105,"title":1379},"p2-game-to-lt-loop",{"en":1377,"fr":1378},"A bridge workflow started by a webhook must not call back the incoming webhook that triggered it: LibertyTalk and the bridge would bounce the event back and forth. LibertyTalk shuts off an incoming webhook that receives too many calls.","Un workflow du pont lancé par un webhook ne doit pas rappeler le webhook entrant qui l'a déclenché : LibertyTalk et le pont se renverraient l'événement en boucle. LibertyTalk coupe un webhook entrant qui reçoit trop d'appels.",{"en":1380,"fr":1381},"No endless round trip","Pas d'aller-retour sans fin",{"id":1383,"text":1384,"type":123,"level":124},"p2-test-debug",{"en":1385,"fr":1386},"Test and debug","Tester et déboguer",{"id":1388,"text":1389,"type":43},"p2-test-debug-manual",{"en":1390,"fr":1391},"Test the bridge alone first, with **Test now** or `node bridge\\bridge.js fire`. To test the path from LibertyTalk to the bridge without waiting for a real follow, create a workflow with the \"Manual trigger\" and, in \"Simulated variables\", `user_name` set to `Bob`. Add a \"Webhook / API call\" to `https://your-tunnel.trycloudflare.com/hooks/follow`, with the `{\"X-Bridge-Token\":\"your token\"}` header and the `{\"user_name\":\"{user_name}\"}` body. The manual trigger button works even when the workflow isn't activated.","Testez d'abord le pont seul, avec **Tester maintenant** ou `node bridge\\bridge.js fire`. Pour tester le trajet de LibertyTalk vers le pont sans attendre un vrai follow, créez un workflow avec le déclencheur « Déclenchement manuel » et, dans « Variables simulées », `user_name` égal à `Bob`. Ajoutez un « Appel webhook / API » vers `https://votre-tunnel.trycloudflare.com/hooks/follow`, avec l'en-tête `{\"X-Bridge-Token\":\"votre jeton\"}` et le corps `{\"user_name\":\"{user_name}\"}`. Le bouton de déclenchement manuel fonctionne même si le workflow n'est pas activé.",{"id":1393,"text":1394,"type":43},"p2-test-debug-console",{"en":1395,"fr":1396},"The execution console shows what each node received and produced. For the widget, open its **Executions** tab, then click \"Load last run\". Each step shows its input and output, and the \"Variables\" button shows every variable available at that point, with secrets masked, `{talky_token}` included.","La console d'exécution montre ce que chaque nœud a reçu et produit. Pour le widget, ouvrez son onglet **Exécutions** puis cliquez sur « Charger le dernier run ». Chaque étape affiche son entrée et sa sortie, et le bouton « Variables » montre toutes les variables disponibles à ce moment, secrets masqués, `{talky_token}` compris.",{"id":1398,"kind":192,"text":1399,"type":105,"title":1402},"p2-test-debug-green-step",{"en":1400,"fr":1401},"If the bridge refuses the call or doesn't answer, the webhook call step still shows \"Completed\": LibertyTalk did send the request. Read its output: `webhook_response_ok` is `false` and `webhook_response_status` gives the code received. The step only turns \"Failed\" when the address is empty (`Webhook URL is empty`) or refused by LibertyTalk, such as a local address.","Si le pont refuse l'appel ou ne répond pas, l'étape d'appel webhook s'affiche quand même « Terminé » : LibertyTalk a bien envoyé la requête. Lisez sa sortie : `webhook_response_ok` vaut `false` et `webhook_response_status` donne le code reçu. L'étape passe en « Échec » seulement quand l'adresse est vide (`Webhook URL is empty`) ou refusée par LibertyTalk, comme une adresse locale.",{"en":1403,"fr":1404},"A completed step isn't a successful call","Une étape terminée n'est pas un appel réussi",{"id":1406,"head":1407,"rows":1417,"type":511},"p2-test-debug-codes",[1408,1411,1414],{"en":1409,"fr":1410},"Code received","Code reçu",{"en":1412,"fr":1413},"What it means","Ce que ça veut dire",{"en":1415,"fr":1416},"What to do","Que faire",[1418,1427,1436,1445,1454],[1419,1421,1424],{"en":1420,"fr":1420},"200",{"en":1422,"fr":1423},"The bridge accepted the call.","Le pont a accepté l'appel.",{"en":1425,"fr":1426},"Look at F8, **Status** page: the line shows the workflow that ran or the reason it was refused, for example \"skipped: cooldown\".","Regardez F8, page **Statut** : la ligne indique le workflow lancé ou la raison du refus, par exemple « ignoré : cooldown ».",[1428,1430,1433],{"en":1429,"fr":1429},"401",{"en":1431,"fr":1432},"Token refused. The bridge checks the token before the webhook: without the right token, every id answers 401.","Jeton refusé. Le pont vérifie le jeton avant le webhook : sans le bon jeton, tout identifiant répond 401.",{"en":1434,"fr":1435},"Copy `token` from `bridge\\config.json` into \"Bridge token\". A webhook listed in `hookTokens` of `bridge\\config.json` refuses this token: remove it from `hookTokens` and restart the bridge, or call it with the URL that `node bridge\\bridge.js url \u003Cwebhook>` gives.","Recopiez `token` de `bridge\\config.json` dans « Jeton du pont ». Un webhook listé dans `hookTokens` de `bridge\\config.json` refuse ce jeton : retirez-le de `hookTokens` et relancez le pont, ou appelez-le avec l'URL que donne `node bridge\\bridge.js url \u003Cwebhook>`.",[1437,1439,1442],{"en":1438,"fr":1438},"404",{"en":1440,"fr":1441},"The token is right, but the webhook doesn't exist in the bridge.","Le jeton est bon, mais le webhook n'existe pas dans le pont.",{"en":1443,"fr":1444},"Recreate the called id in F8, **Webhooks** page, for example `follow`.","Recréez dans F8, page **Webhooks**, l'identifiant appelé, par exemple `follow`.",[1446,1448,1451],{"en":1447,"fr":1447},"413",{"en":1449,"fr":1450},"Body larger than 64 KB.","Corps de plus de 64 Ko.",{"en":1452,"fr":1453},"Remove the long text fields from the body.","Retirez les longs champs de texte du corps.",[1455,1458,1461],{"en":1456,"fr":1457},"0 or 5xx","0 ou 5xx",{"en":1459,"fr":1460},"The tunnel or the bridge doesn't answer.","Le tunnel ou le pont ne répond pas.",{"en":1462,"fr":1463},"Check that the bridge and cloudflared windows are open, and that \"Talky bridge public URL\" holds today's address.","Vérifiez que les fenêtres du pont et de cloudflared sont ouvertes, et que « Adresse publique du pont Talky » contient l'adresse du jour.",{"id":1465,"text":1466,"type":123,"level":124},"p2-limits",{"en":1467,"fr":1468},"Known limits","Limites à connaître",{"id":1470,"type":127,"items":1471,"ordered":144},"p2-limits-list",[1472,1475,1478,1481,1484,1487],{"en":1473,"fr":1474},"The quick tunnel's address changes every time cloudflared starts: copy it into the widget at each session, or switch to a named tunnel.","L'adresse du tunnel rapide change à chaque lancement de cloudflared : recopiez-la dans le widget à chaque session, ou passez à un tunnel nommé.",{"en":1476,"fr":1477},"The chat command arrives without a name or text, because of Twitch's rule on redistributing chat messages: the `!zombie` zombie carries the name of anonymous events.","La commande de chat arrive sans pseudo ni texte, à cause de la règle de Twitch sur la redistribution des messages du chat : le zombie de `!zombie` porte le nom des événements anonymes.",{"en":1479,"fr":1480},"An event waits 15 minutes at most: if the game stays closed or paused longer, it's dropped.","Un événement attend 15 minutes au plus : si le jeu reste fermé ou en pause plus longtemps, il est abandonné.",{"en":1482,"fr":1483},"The bridge caps every workflow: a `wait` step lasts 600 seconds at most, `notify`, `say` and `halo` texts are cut at 200 characters, a banner stays 60 seconds at most, and a `repeat` never goes beyond 100 rounds, whatever its `max`.","Le pont plafonne chaque workflow : une étape `wait` dure 600 secondes au plus, les textes de `notify`, `say` et `halo` sont coupés à 200 caractères, un bandeau reste 60 secondes au plus, et un `repeat` ne dépasse jamais 100 tours, quel que soit son `max`.",{"en":1485,"fr":1486},"YouTube Super Chats and members only arrive during a live stream, and donations only if Streamlabs is connected.","Les Super Chats et les membres YouTube n'arrivent que pendant un live, et les dons que si Streamlabs est relié.",{"en":1488,"fr":1489},"Talky 0.5.0 was tested on Build 42.21. A game update can change the functions it uses: update the mod and the bridge together.","Talky 0.5.0 a été testé sur la Build 42.21. Une mise à jour du jeu peut changer les fonctions qu'il utilise : mettez à jour le mod et le pont ensemble.",{"id":1491,"type":111,"title":1492,"summary":1495},"part-3-server",{"en":1493,"fr":1494},"Playing Talky on a server","Jouer à Talky sur un serveur",{"en":1496,"fr":1497},"The admin runs the bridge next to the server and adds the streamers from the game; each streamer pastes an address and a token into their widget.","L'admin lance le pont à côté du serveur et ajoute les streamers depuis le jeu ; chaque streamer colle une adresse et un jeton dans son widget.",{"id":1499,"text":1500,"type":43},"p3-intro",{"en":1501,"fr":1502},"On a server, dedicated or hosted from the main menu of the game, the bridge does not run on the streamers' PCs: the admin runs it on the machine of the server and adds the streamers from the game. Each streamer gets an address and a token, to paste into their LibertyTalk widget. The events of their live happen around their character, and every player sees them.","Sur un serveur, dédié ou hébergé depuis le menu principal du jeu, le pont ne tourne pas sur le PC des streamers : l'admin le lance sur la machine du serveur et ajoute les streamers depuis le jeu. Chaque streamer reçoit une adresse et un jeton, qu'il colle dans son widget LibertyTalk. Les effets de son live se produisent autour de son personnage, et tous les joueurs les voient.",{"id":1504,"type":127,"items":1505,"ordered":144},"p3-who-does-what",[1506,1509],{"en":1507,"fr":1508},"**The admin of the server** installs the mod on the server, runs the bridge next to it, opens a port and adds the streamers.","**L'admin du serveur** installe le mod sur le serveur, lance le pont à côté, ouvre un port et ajoute les streamers.",{"en":1510,"fr":1511},"**Each streamer** joins the server, installs the LibertyTalk widget and pastes the address and the token they got. Nothing to install on their PC but the mod, which the server asks for anyway.","**Chaque streamer** rejoint le serveur, installe le widget LibertyTalk et y colle l'adresse et le jeton reçus. Rien d'autre à installer sur son PC que le mod, que le serveur demande de toute façon.",{"id":1513,"text":1514,"type":123,"level":124},"p3-admin",{"en":1515,"fr":1516},"For the admin: setting up the server","Pour l'admin : préparer le serveur",{"id":1518,"type":206,"items":1519},"p3-admin-mod",[1520,1527],{"text":1521,"title":1524},{"en":1522,"fr":1523},"Dedicated server: in `Zomboid/Server/\u003Cserver name>.ini`, set `Mods=Talky` and `WorkshopItems=3830066321`, the id of [Talky on the Steam Workshop](https://steamcommunity.com/sharedfiles/filedetails/?id=3830066321). The server downloads the mod when it starts, and each player gets it when joining. Hosted game: **Host** > **Manage settings...**, **Mods** page, then **Steam Workshop** page.","Serveur dédié : dans `Zomboid/Server/\u003Cnom du serveur>.ini`, mettez `Mods=Talky` et `WorkshopItems=3830066321`, l'id de [Talky sur le Steam Workshop](https://steamcommunity.com/sharedfiles/filedetails/?id=3830066321). Le serveur télécharge le mod au démarrage, et chaque joueur le reçoit en se connectant. Partie hébergée : **Héberger** > **Modifier les réglages...**, page **Mods**, puis page **Workshop Steam**.",{"en":1525,"fr":1526},"Add Talky to the mods of the server","Ajoutez Talky aux mods du serveur",{"text":1528,"title":1531},{"en":1529,"fr":1530},"The options of Talky are on the **Talky** page of the sandbox options: limits for zombies, items and weather, one switch per category, cooldowns, distance from the other players. Fire and the helicopter are off by default on a server.","Les options de Talky sont sur la page **Talky** des options bac à sable : limites de zombies, d'objets et de météo, un interrupteur par catégorie, délais, distance des autres joueurs. Le feu et l'hélicoptère sont désactivés par défaut sur un serveur.",{"en":1532,"fr":1533},"Set the limits","Réglez les limites",{"id":1535,"type":206,"items":1536},"p3-admin-bridge",[1537,1544,1551,1558],{"text":1538,"title":1541},{"en":1539,"fr":1540},"On Windows: `winget install OpenJS.NodeJS.LTS`. On Linux: the `nodejs` package of the distribution if it is version 18 or later, otherwise the one from nodejs.org.","Sous Windows : `winget install OpenJS.NodeJS.LTS`. Sous Linux : le paquet `nodejs` de la distribution s'il est en version 18 ou plus, sinon celui de nodejs.org.",{"en":1542,"fr":1543},"Install Node.js 18 or later on the machine of the server","Installez Node.js 18 ou plus sur la machine du serveur",{"text":1545,"title":1548},{"en":1546,"fr":1547},"Download `Talky-0.5.0.zip` from the [GitHub releases](https://github.com/Tech-Liberty/talky-project-zomboid/releases) and extract it to a folder of the account that runs the server.","Téléchargez `Talky-0.5.0.zip` dans les [releases GitHub](https://github.com/Tech-Liberty/talky-project-zomboid/releases) et décompressez-le dans un dossier du compte qui lance le serveur.",{"en":1549,"fr":1550},"Extract the Talky zip","Décompressez le zip de Talky",{"text":1552,"title":1555},{"en":1553,"fr":1554},"With the account that runs the server: `sh start-bridge.sh` on Linux, `start-bridge.cmd server` in a terminal opened in the Talky folder on Windows. Hosted game: `start-bridge.cmd server` on the host's PC. The bridge window shows `listening on http://0.0.0.0:7420 (server mode)`.","Avec le compte qui lance le serveur : `sh start-bridge.sh` sous Linux, `start-bridge.cmd server` dans un terminal ouvert dans le dossier de Talky sous Windows. Partie hébergée : `start-bridge.cmd server` sur le PC de l'hôte. La fenêtre du pont affiche `listening on http://0.0.0.0:7420 (server mode)`.",{"en":1556,"fr":1557},"Start the bridge in server mode","Lancez le pont en mode serveur",{"text":1559,"title":1562},{"en":1560,"fr":1561},"Its console shows `[Talky] server ready (Talky 0.5.0)`, then `[Talky] inbox ready` on the first read of the jobs.","Sa console affiche `[Talky] server ready (Talky 0.5.0)`, puis `[Talky] inbox ready` à la première lecture des jobs.",{"en":1563,"fr":1564},"Start the server","Démarrez le serveur",{"id":1566,"alt":1567,"url":1570,"type":277,"width":278,"caption":1571},"p3-admin-bridge-shot",{"en":1568,"fr":1569},"The bridge window in server mode: talky_config.json created in the Lua folder of the server, listening on http://0.0.0.0:7421 (server mode), no streamer, public address not set yet.","Fenêtre du pont en mode serveur : talky_config.json créé dans le dossier Lua du serveur, écoute sur http://0.0.0.0:7421 (server mode), aucun streamer, adresse publique pas encore réglée.","https://d1lvjaji8qt9t1.cloudfront.net/media/30a67447-c5e5-406f-86d8-2e936c4c49d1.png",{"en":1572,"fr":1573},"The bridge started with `start-bridge.cmd server`. Here on port 7421, because a single player bridge already held 7420 on the same machine.","Le pont lancé avec `start-bridge.cmd server`. Ici sur le port 7421, parce qu'un pont solo occupait déjà 7420 sur la même machine.",{"id":1575,"alt":1576,"url":1579,"type":277,"width":278,"caption":1580},"p3-admin-server-shot",{"en":1577,"fr":1578},"Dedicated server console: *** SERVER STARTED ***, then [Talky] server ready (Talky 0.5.0).","Console du serveur dédié : *** SERVER STARTED ***, puis [Talky] server ready (Talky 0.5.0).","https://d1lvjaji8qt9t1.cloudfront.net/media/db71aa53-d4d8-4bbb-b34f-175defa10774.png",{"en":1581,"fr":1582},"The server console: Talky is loaded on the server side.","La console du serveur : Talky est chargé côté serveur.",{"id":1584,"kind":101,"text":1585,"type":105},"p3-admin-bridge-note",{"en":1586,"fr":1587},"The bridge must use the `Zomboid/Lua` folder of the server: start it with the account that runs the server. For a server started with `-cachedir=\u003Cfolder>`, set `zomboidLuaDir` to `\u003Cfolder>/Lua` in `bridge/config.json`. On Linux, the zip holds `talky-bridge.service`, an example systemd unit to start the bridge with the machine.","Le pont doit utiliser le dossier `Zomboid/Lua` du serveur : lancez-le avec le compte qui lance le serveur. Pour un serveur lancé avec `-cachedir=\u003Cdossier>`, mettez `\u003Cdossier>/Lua` dans `zomboidLuaDir` de `bridge/config.json`. Sous Linux, le zip contient `talky-bridge.service`, un exemple d'unité systemd pour démarrer le pont avec la machine.",{"id":1589,"type":206,"items":1590},"p3-admin-port",[1591,1598],{"text":1592,"title":1595},{"en":1593,"fr":1594},"In the firewall of the machine (on Linux, for example `sudo ufw allow 7420/tcp`; on Windows, an inbound TCP 7420 rule) and in the one of the hosting provider, if any. Hosted game: also forward the TCP port 7420 of the router to the host's PC.","Dans le pare-feu de la machine (sous Linux, par exemple `sudo ufw allow 7420/tcp` ; sous Windows, une règle entrante TCP 7420) et dans celui de l'hébergeur s'il y en a un. Partie hébergée : redirigez aussi le port TCP 7420 de la box vers le PC de l'hôte.",{"en":1596,"fr":1597},"Open the TCP port 7420","Ouvrez le port TCP 7420",{"text":1599,"title":1602},{"en":1600,"fr":1601},"`http://\u003Cpublic IP of the server>:7420`. A private address (`192.168.…`, `10.…`) does not work: LibertyTalk must reach the bridge from the internet.","`http://\u003CIP publique du serveur>:7420`. Une adresse privée (`192.168.…`, `10.…`) ne marche pas : LibertyTalk doit joindre le pont depuis internet.",{"en":1603,"fr":1604},"Note the public address of the bridge","Notez l'adresse publique du pont",{"id":1606,"type":206,"items":1607},"p3-admin-streamers",[1608,1615,1622,1629],{"text":1609,"title":1612},{"en":1610,"fr":1611},"The **Webhooks** page of F8 is reserved to admins and moderators. Dedicated server: type `setaccesslevel \"\u003Cusername>\" admin` in the console of the server, or log in with the `admin` account created on the first start. Hosted game: see the box below.","La page **Webhooks** de F8 est réservée aux admins et aux modérateurs. Serveur dédié : tapez `setaccesslevel \"\u003Cnom d'utilisateur>\" admin` dans la console du serveur, ou connectez-vous avec le compte `admin` créé au premier démarrage. Partie hébergée : voir l'encadré plus bas.",{"en":1613,"fr":1614},"Become admin","Passez admin",{"text":1616,"title":1619},{"en":1617,"fr":1618},"In game: **F8** > **Webhooks** > **Streamers** tab. Type the address noted above in **Public address of the bridge**, then **Save**. The IP alone is enough: Talky adds `http://` and the port of the bridge.","En jeu : **F8** > **Webhooks** > onglet **Streamers**. Tapez l'adresse notée plus haut dans **Adresse publique du bridge**, puis **Enregistrer**. L'IP seule suffit : Talky ajoute `http://` et le port du pont.",{"en":1620,"fr":1621},"Save the public address","Enregistrez l'adresse publique",{"text":1623,"title":1626},{"en":1624,"fr":1625},"Type their username at the bottom left, then **+ Add streamer**. A second later, the bridge has drawn a token for them and they show in the list.","Tapez son nom d'utilisateur en bas à gauche, puis **+ Ajouter un streamer**. Une seconde plus tard, le pont lui a tiré un jeton et il apparaît dans la liste.",{"en":1627,"fr":1628},"Add each streamer","Ajoutez chaque streamer",{"text":1630,"title":1633},{"en":1631,"fr":1632},"Select them, then **Copy URL and token**: the clipboard holds the two values of their widget, one per line. Send them in a private message.","Choisissez-le, puis **Copier l'URL et le jeton** : le presse-papiers contient les deux valeurs de son widget, une par ligne. Envoyez-les en message privé.",{"en":1634,"fr":1635},"Send them their address and token","Envoyez-lui son adresse et son jeton",{"id":1637,"alt":1638,"url":1641,"type":277,"width":278,"caption":1642},"p3-admin-streamers-shot",{"en":1639,"fr":1640},"F8 menu, Webhooks page, Streamers tab: public address of the bridge (random part blurred), streamer layenz online with their address and hidden token, Copy URL and token, New token and Remove buttons.","Menu F8, page Webhooks, onglet Streamers : adresse publique du pont (partie aléatoire floutée), streamer layenz en ligne avec son adresse et son jeton masqué, boutons Copier l'URL et le jeton, Nouveau jeton et Retirer.","https://d1lvjaji8qt9t1.cloudfront.net/media/895cb310-a020-4e12-93f7-232c8773ae4d.png",{"en":1643,"fr":1644},"Here the address is a cloudflared tunnel; on a server, it will be `http://\u003Cpublic IP>:7420`. The token stays hidden.","Ici l'adresse est celle d'un tunnel cloudflared ; sur un serveur, ce sera `http://\u003CIP publique>:7420`. Le jeton reste masqué.",{"id":1646,"kind":192,"text":1647,"type":105},"p3-admin-streamers-note",{"en":1648,"fr":1649},"The token shows masked in F8; **Show token** reveals it: do not do it during a live. **New token** replaces the token of a streamer: the old one stops at once, and the streamer pastes the new one into their widget. **Remove** stops their token and drops their waiting jobs.","Le jeton s'affiche masqué dans F8 ; **Afficher le jeton** le montre : ne le faites pas pendant un live. **Nouveau jeton** remplace le jeton d'un streamer : l'ancien s'arrête tout de suite, et le streamer colle le nouveau dans son widget. **Retirer** arrête son jeton et abandonne ses jobs en attente.",{"id":1651,"kind":101,"text":1652,"type":105,"title":1655},"p3-admin-host",{"en":1653,"fr":1654},"In a hosted game, the host's account is not admin at first. On the **Status** or **Webhooks** page of F8, click **Allow me (host)**: a few seconds later, the admin pages open.","Dans une partie hébergée, le compte de l'hôte n'est pas admin au départ. Sur la page **Statut** ou **Webhooks** de F8, cliquez sur **M'autoriser (hôte)** : quelques secondes plus tard, les pages des admins s'ouvrent.",{"en":1656,"fr":1657},"Hosted game","Partie hébergée",{"id":1659,"text":1660,"type":123,"level":124},"p3-streamer",{"en":1661,"fr":1662},"For the streamer: connecting your live","Pour le streamer : brancher son live",{"id":1664,"type":206,"items":1665},"p3-streamer-steps",[1666,1673,1680,1687],{"text":1667,"title":1670},{"en":1668,"fr":1669},"The Talky mod comes with the mod list of the server: the game downloads it when you join.","Le mod Talky vient avec la liste des mods du serveur : le jeu le télécharge à la connexion.",{"en":1671,"fr":1672},"Join the server","Rejoignez le serveur",{"text":1674,"title":1677},{"en":1675,"fr":1676},"In the LibertyTalk dashboard: Marketplace > **Project Zomboid · Talky** > **Install**, then open its page in **Widgets**, as in part 1.","Dans le dashboard LibertyTalk : Marketplace > **Project Zomboid · Talky** > **Installer**, puis ouvrez sa page dans **Widgets**, comme dans la partie 1.",{"en":1678,"fr":1679},"Install the widget","Installez le widget",{"text":1681,"title":1684},{"en":1682,"fr":1683},"**Widget configuration** tab: **Talky bridge public URL** = the address from the admin, **Bridge token** = your token. **Save**, then **Activate**.","Onglet **Configuration du widget** : **Adresse publique du pont Talky** = l'adresse reçue de l'admin, **Jeton du pont** = votre jeton. **Enregistrer**, puis **Activer**.",{"en":1685,"fr":1686},"Paste the address and the token","Collez l'adresse et le jeton",{"text":1688,"title":1691},{"en":1689,"fr":1690},"F8 > **Status** shows \"You are a streamer of this server: the events of your live happen around your character.\"","F8 > **Statut** affiche « Vous êtes streamer ici : les événements de votre live se produisent autour de votre personnage. »",{"en":1692,"fr":1693},"Check in game","Vérifiez en jeu",{"id":1695,"kind":246,"text":1696,"type":105},"p3-streamer-note",{"en":1697,"fr":1698},"Nothing to run on your PC: no bridge, no tunnel. If the admin gives you a new token, replace **Bridge token** in the widget and save. The workflows (what happens for a follow, a raid...) and the display (names above zombies, banners) are the server's: the admin sets them, in F8.","Rien à lancer sur votre PC : ni pont, ni tunnel. Si l'admin vous donne un nouveau jeton, remplacez **Jeton du pont** dans le widget et enregistrez. Les workflows (ce qui se passe pour un follow, un raid...) et l'affichage (noms au-dessus des zombies, bandeaux) sont ceux du serveur : c'est l'admin qui les règle, dans F8.",{"id":1700,"text":1701,"type":123,"level":124},"p3-ports",{"en":1702,"fr":1703},"Ports and security","Ports et sécurité",{"id":1705,"type":127,"items":1706,"ordered":144},"p3-ports-list",[1707,1710,1713],{"en":1708,"fr":1709},"One port to open: TCP 7420 (`port` of `bridge/config.json`), to the machine that runs the bridge. The game server keeps its own ports.","Un seul port à ouvrir : TCP 7420 (`port` de `bridge/config.json`), vers la machine qui fait tourner le pont. Le serveur du jeu garde ses propres ports.",{"en":1711,"fr":1712},"The calls from LibertyTalk arrive in `http`, in clear text: the token of the streamer travels in clear between LibertyTalk and the bridge. Someone who intercepts that traffic could reuse it until the next **New token**.","Les appels de LibertyTalk arrivent en `http`, en clair : le jeton du streamer circule en clair entre LibertyTalk et le pont. Quelqu'un qui intercepte ce trafic pourrait le réutiliser jusqu'au prochain **Nouveau jeton**.",{"en":1714,"fr":1715},"The token of a streamer only triggers effects around that streamer, within the limits of the sandbox options of the server.","Le jeton d'un streamer ne déclenche que des effets autour de ce streamer, dans les limites des options bac à sable du serveur.",{"id":1717,"kind":101,"text":1718,"type":105,"title":1721},"p3-ports-https",{"en":1719,"fr":1720},"Put a reverse proxy with a certificate (Caddy, nginx...) in front of the bridge, set `\"host\": \"127.0.0.1\"` in `bridge/config.json` so that the bridge only answers the proxy, and type the `https://` address of the proxy as public address in F8. For a hosted game without a public address, a cloudflared tunnel (`cloudflared tunnel --url http://127.0.0.1:7420`) gives an `https://` address too.","Placez un proxy inverse avec un certificat (Caddy, nginx...) devant le pont, mettez `\"host\": \"127.0.0.1\"` dans `bridge/config.json` pour que le pont ne réponde qu'au proxy, et tapez l'adresse `https://` du proxy comme adresse publique dans F8. Pour une partie hébergée sans adresse publique, un tunnel cloudflared (`cloudflared tunnel --url http://127.0.0.1:7420`) donne aussi une adresse `https://`.",{"en":1722,"fr":1723},"For https","Pour du https",{"id":1725,"text":1726,"type":123,"level":124},"p3-limits",{"en":1727,"fr":1728},"Limits","Limites",{"id":1730,"type":127,"items":1731,"ordered":144},"p3-limits-list",[1732,1735,1738,1741,1744,1747],{"en":1733,"fr":1734},"The machine of the server must be able to run Node.js and be reachable from the internet on the port of the bridge. A rented server without command-line access, managed only through a web panel, does not fit.","La machine du serveur doit pouvoir lancer Node.js et être joignable depuis internet sur le port du pont. Un serveur loué sans accès à la ligne de commande, géré seulement par un panneau web, ne convient pas.",{"en":1736,"fr":1737},"One set of workflows for the whole server: every streamer gets the same effects, around their own character. Cooldowns count per streamer.","Un seul jeu de workflows pour tout le serveur : chaque streamer reçoit les mêmes effets, autour de son propre personnage. Les délais comptent par streamer.",{"en":1739,"fr":1740},"Weather and time of day are the same for every player, and their cooldowns count for the whole server.","La météo et l'heure sont les mêmes pour tous les joueurs, et leurs délais comptent pour tout le serveur.",{"en":1742,"fr":1743},"The helicopter flies to a random player: it is off by default and, when on, only leaves while one player is online (unless an option says otherwise).","L'hélicoptère va vers un joueur au hasard : il est désactivé par défaut et, une fois activé, ne part que si un seul joueur est connecté (sauf option contraire).",{"en":1745,"fr":1746},"The jobs of a streamer who is offline wait for them, 15 minutes at most; past that, they are dropped.","Les jobs d'un streamer hors ligne attendent son retour, 15 minutes au plus ; au-delà, ils sont abandonnés.",{"en":1748,"fr":1749},"Effects around a streamer keep away from the other players (15 tiles by default) and from the safehouses the streamer may not enter.","Les effets autour d'un streamer évitent les autres joueurs (15 cases par défaut) et les refuges où il n'a pas accès.",{"id":1751,"text":1752,"type":123,"level":124},"p3-troubleshooting",{"en":579,"fr":580},{"id":1754,"head":1755,"rows":1762,"type":511},"p3-troubleshooting-table",[1756,1759],{"en":1757,"fr":1758},"Symptom","Symptôme",{"en":1760,"fr":1761},"Fix","Solution",[1763,1770,1777,1784,1791,1798],[1764,1767],{"en":1765,"fr":1766},"F8 > Status: \"Bridge of the server: offline.\"","F8 > Statut : « Bridge du serveur : hors ligne. »",{"en":1768,"fr":1769},"Start the bridge on the machine of the server, with the account of the server.","Lancez le pont sur la machine du serveur, avec le compte du serveur.",[1771,1774],{"en":1772,"fr":1773},"F8 > Status: \"The bridge of the server runs in solo mode\"","F8 > Statut : « Le bridge du serveur tourne en mode solo »",{"en":1775,"fr":1776},"Restart it with `start-bridge.sh` (Linux) or `start-bridge.cmd server` (Windows).","Relancez-le avec `start-bridge.sh` (Linux) ou `start-bridge.cmd server` (Windows).",[1778,1781],{"en":1779,"fr":1780},"F8 > Webhooks: \"Reserved to the admins of this server\"","F8 > Webhooks : « Réservé aux admins de ce serveur »",{"en":1782,"fr":1783},"Your role is neither admin nor moderator. Host of a game: **Allow me (host)**.","Votre rôle n'est ni admin ni modérateur. Hôte d'une partie : **M'autoriser (hôte)**.",[1785,1788],{"en":1786,"fr":1787},"The server kicks you: \"Lua/script checksums do not match\"","Le serveur vous expulse : « Lua/script checksums do not match »",{"en":1789,"fr":1790},"Your game and the server do not have the same Lua files. Keep one copy of Talky (the Workshop or `Zomboid/mods`, not both) and remove the mods copied by hand into the game folder, then restart the game.","Votre jeu et le serveur n'ont pas les mêmes fichiers Lua. Gardez une seule copie de Talky (le Workshop ou `Zomboid/mods`, pas les deux) et retirez les mods copiés à la main dans le dossier du jeu, puis redémarrez le jeu.",[1792,1795],{"en":1793,"fr":1794},"The bridge window: `Port 7420 is already used`","La fenêtre du pont : `Port 7420 is already used`",{"en":1796,"fr":1797},"Another program holds that port, for example a single player bridge on the same machine. Change `port` in `bridge/config.json`, then the port of the public address.","Un autre programme prend ce port, par exemple un pont solo sur la même machine. Changez `port` dans `bridge/config.json`, puis le port de l'adresse publique.",[1799,1802],{"en":1800,"fr":1801},"Nothing happens in game after a follow","Rien ne se passe en jeu après un follow",{"en":1803,"fr":1804},"The port is not open, the address of the widget is wrong, or the streamer was removed: the bridge window shows `401 bad token` or `not_streamer`, and the **Executions** tab of the widget shows the error.","Le port n'est pas ouvert, l'adresse du widget est fausse, ou le streamer a été retiré : la fenêtre du pont affiche `401 bad token` ou `not_streamer`, et l'onglet **Exécutions** du widget montre l'erreur.",{"id":1806,"type":1807},"p2-end-divider","divider",{"id":1809,"slug":1810,"text":1811,"type":1814},"p2-go-further","workflows-deep",{"en":1812,"fr":1813},"To go further: all of LibertyTalk's triggers, conditions and run statuses, beyond Project Zomboid.","Pour aller plus loin : tous les déclencheurs, conditions et statuts d'exécution de LibertyTalk, au-delà de Project Zomboid.","guide_link",{"workflows-deep":1816},{"slug":1810,"title":1817,"summary":1820,"icon":1823,"visibility":7},{"en":1818,"fr":1819},"Workflows in depth","Workflows en profondeur",{"en":1821,"fr":1822},"How the engine runs a workflow: triggers, variables, conditions, webhook calls, testing and widgets, with the traps that break a scenario without any error message.","Comment le moteur exécute un workflow : déclencheurs, variables, conditions, appels webhook, tests et widgets, avec les pièges qui font échouer un scénario sans message d'erreur.","ph:flow-arrow",1793373334732]