Français
EnglishEspañolPortuguês (Brasil)РусскийFrançaisDeutsch日本語简体中文繁體中文ItalianoPolski한국어УкраїнськаالعربيةTürkçeČeštinaไทย

Un bouton, votre propre flux

Utilisez Stream Deck, HTTP ou WebSocket pour exécuter un flux Event Flow enregistré.

Guide complet des contrôles, gestes et icônes Stream Deck

Créer un flux pouvant être appelé

  1. Déclencheur nomméStream Deck / API
  2. Conditions et actionsVotre flux Event Flow enregistré
  3. DestinationFlow Actions, OBS ou une autre intégration
  1. Ouvrir Event Flow depuis SSN. Créez un flux dédié ou choisissez le modèle Bouton Stream Deck / API .
  2. Ajouter Exécuter depuis Stream Deck / API (Run from Stream Deck / API) dans le groupe de déclencheurs Stream Deck et API .
  3. Donnez-lui le nom intermission. Les noms doivent correspondre exactement et sont sensibles à la casse ; utilisez un nom court et descriptif.
  4. Reliez sa sortie à Afficher du texte (Show Text). Définissez le texte sur Back in five minutes, puis choisissez la durée et le calque souhaités.
  5. Enregistrez le flux, puis activez-le. Un flux non enregistré n’existe que dans l’éditeur ; un flux désactivé ne peut pas être appelé. Le modèle de départ reste volontairement désactivé jusqu’à la fin de la configuration.
  6. Ouvrez votre Incrustation Flow Actions avec le lien généré par SSN. Pour votre public, ajoutez cette URL comme source Navigateur OBS. L’éditeur lui-même n’est pas l’incrustation.

Les flux dépourvus de ce déclencheur nommé ne peuvent pas être appelés via l’API de flux. Appeler un flux n’injecte pas de faux messages dans le dock. Les événements OBS et messages ordinaires continuent d’utiliser leurs déclencheurs existants.

Un flux peut combiner son déclencheur nommé avec des filtres via des nœuds logiques. Gardez les automatisations indépendantes dans des flux distincts : toutes les branches de déclencheurs/logique du flux sélectionné sont évaluées avec l’événement API. Chaque appui lance une exécution distincte ; placez un nœud d’état Limiteur de fréquence (Rate Limiter) après le déclencheur si vous souhaitez un délai entre les exécutions.

Connecter une touche Stream Deck

  1. Configurez l’action du plugin Configuration avec votre session SSN et votre mot de passe facultatif. Utilisez Tester la connexion (Test Connection).
  2. Faites glisser Commande prédéfinie (Preset Command) sur une touche.
  3. Sélectionnez Flux Event Flow → Exécuter un flux (Event Flow workflows → Run workflow).
  4. Choisir Actualiser les flux (Refresh workflows), puis sélectionnez votre flux et votre déclencheur enregistrés. La touche conserve l’identifiant du flux et le nom du déclencheur.
  5. Appuyez une fois et observez l’incrustation Flow Actions. La coche sur la touche signifie que SSN a accepté l’exécution.

Le sélecteur de flux conserve les sélections manquantes. Après avoir renommé, désactivé, supprimé ou importé un flux, actualisez la liste et sélectionnez-le à nouveau. Un flux importé comme nouveau flux possède un identifiant différent. Utilisez plutôt le champ Value pour cibler plusieurs flux par leur nom.

Commande personnalisée (Custom Command) : réglez Action sur triggerWorkflow, laissez Target vide, saisissez {"trigger":"intermission"} comme Value et activez Attendre une réponse (Wait for response). Le préréglage propose une sélection guidée et un filtrage selon les capacités.

Actions multiples (Multi Actions) : chaque requête de flux est rapidement acquittée comme acceptée. L’étape Stream Deck suivante peut commencer avant la fin des actions différées. Placez l’enchaînement et les délais dans Event Flow si l’ordre compte.

Transmettre des valeurs personnalisées

Dans le champ Value de la touche ou dans votre requête API :

{
  "trigger": "intermission",
  "flowId": "YOUR_SAVED_FLOW_ID",
  "data": { "name": "Back in five minutes", "minutes": 5 }
}

Définissez Show Text sur {meta.workflow.data.name}. Compare Property peut lire meta.workflow.data.minutes. Data est un objet JSON facultatif ; il reste dans meta.workflow.data et ne peut ni remplacer l’identité de l’événement ni accorder des droits de chat.

Omettez flowId pour appeler tous les flux activés portant exactement ce nom de déclencheur. Plusieurs nœuds correspondants dans un même flux n’évaluent ce flux qu’une seule fois. Pour n’exécuter qu’un seul flux, conservez son identifiant issu du sélecteur ou de la réponse de découverte.

L’événement utilisé dans le flux sélectionné contient type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", un champ vide chatmessage, ainsi que les données ci-dessus. Un message de chat ordinaire copiant ces champs ne peut pas activer le déclencheur API nommé.

Exemples API

Gardez SSN activé et en cours d’exécution. Il s’agit d’appels de contrôle distant Social Stream ; ils n’utilisent pas l’API locale IA/MCP distincte de SSApp. Gardez votre véritable identifiant de session privé.

Découvrir les déclencheurs disponibles

{"action":"getWorkflowTriggers","get":"list-1","apiid":"YOUR_SESSION"}

La réponse contient result.payload.triggers:

{"triggers":[{"flowId":"flow-123","flowName":"Intermission","trigger":"intermission"}]}

Exécuter un flux nommé

{
  "action": "triggerWorkflow",
  "value": {"trigger":"intermission","flowId":"flow-123","data":{"name":"Back shortly"}},
  "get": "run-1",
  "apiid": "YOUR_SESSION"
}

Utilisez une chaîne get unique pour chaque requête. Une réponse réussie contient result.ok: true, result.status: "accepted", et result.payload.matchedFlows. L’acceptation signifie que le flux activé a été trouvé et planifié. Elle ne signifie pas que toutes les actions différées, tous les webhooks, appels OBS ou lectures de médias sont terminés.

WebSocket

Activer contrôle distant de l’extension par API (remote API control of extension) dans SSN. Reliez-le à wss://io.socialstream.ninja. Rejoignez avec {"join":"YOUR_SESSION","out":1,"in":2}, puis envoyez la requête ci-dessus. Le canal 1 transporte les commandes ; le canal 2 transporte les réponses. Vous n’avez pas besoin d’activer le canal de chat pour les flux.

HTTP

Activez le même paramètre de contrôle distant par API. Remplacez la valeur fictive de session avant utilisation :

POST https://io.socialstream.ninja/YOUR_SESSION
Content-Type: application/json

{"action":"triggerWorkflow","value":{"trigger":"intermission","data":{"name":"Back shortly"}}}

Pour un déclencheur nommé simple, vous pouvez aussi utiliser GET https://io.socialstream.ninja/YOUR_SESSION/triggerWorkflow/null/intermission. Le quatrième segment du chemin peut contenir du JSON encodé pour URL afin de transmettre des valeurs structurées. Encodez toute la valeur JSON avec encodeURIComponent(JSON.stringify(value)). Les canaux d’envoi personnalisés utilisent ?channel=N.

P2P

Le mode P2P par défaut du plugin envoie les mêmes données via le transport VDO.Ninja existant de SSN par canal de données. L’option d’API WebSocket hébergée n’est pas nécessaire en P2P. Les clients P2P existants doivent envoyer cette requête via leur connexion de contrôle SSN déjà établie ; il n’est pas nécessaire d’ouvrir l’API IA locale.

Erreurs et compatibilité

  • WORKFLOW_NOT_FOUND: aucun flux enregistré et activé ne correspond au déclencheur/à l’identifiant du flux.
  • INVALID_VALUE: déclencheur absent/invalide, JSON mal formé, identifiant de flux invalide ou données non objet.
  • CONTROL_UNAVAILABLE: SSN ou le contrôle distant de l’animateur est désactivé.
  • TARGET_UNAVAILABLE: Event Flow est encore en cours de chargement.
  • Les anciennes ressources Social Stream peuvent ne pas annoncer ces actions. Vérifiez getCapabilities → ssn.actions.triggerWorkflow et getWorkflowTriggers. Le nouveau déclencheur et le plugin mis à jour doivent tous deux être installés ; le numéro de version de SSApp seul n’identifie pas les ressources Social Stream chargées à distance.

Ne réessayez pas automatiquement un appel modifiant l’état après la perte d’un accusé de réception : le flux peut déjà avoir démarré. Vérifiez d’abord sa sortie. Cette API ne fournit pas de file de suivi d’état des exécutions.

Ce dont chaque intégration a besoin

Action du fluxDestination/configuration requisePoints à vérifier
Affichage de texte, médias, audio, effacement des calquesIncrustation Flow Actions connectée à la même session ; source Navigateur OBS pour l’affichage destiné au public.Sortie visible, calque, durée et routage audio. Une commande réussie ne confirme pas la visibilité de la scène OBS.
Contrôles OBSFlow Actions connecté à OBS avec l’adresse/le mot de passe configurés ; noms de scènes/sources correspondants.État réel d’OBS. Consultez le guide OBS.
Épingler/mettre en avant un messageDock par défaut connecté ; choisissez un véritable identifiant de message ou des données de message complètes.Liste épinglée du dock et incrustation Featured. Le texte de chat vide d’un déclencheur API ne constitue pas en soi un message utile.
Appeler un webhook (Call Webhook)URL, méthode et corps JSON dans l’action.Réponse du destinataire et champs d’erreur d’Event Flow ; l’accusé de réception Stream Deck arrive avant les résultats différés/externes.
Envoyer un message / relayerSource connectée capable d’envoyer des messages et destination explicite.Chat de destination réel. Une requête de flux n’autorise pas à contourner les limites de la plateforme.
Produits et soutienProduits enregistrés/activés et incrustation de commerce.État sélectionné/masqué/planifié de SSN. Consultez contrôles des produits.
Tirages au sort, tickets, pointsTirage au sort/économie configurés et acteur approprié. Un événement API nommé ne possède pas d’identité de spectateur.Utilisez les préréglages de tirage au sort de l’animateur pour ses contrôles ; ne traitez pas l’événement API comme un achat de spectateur. Consultez tirages au sort et points.
Synthèse vocale, Spotify, impression, MIDIConnexion, autorisations, appareil ou compte propres à chaque intégration.Destination/appareil réel. L’installation de Stream Deck ne configure pas ces intégrations.

Guide complet d’Event Flow · Recettes · référence API

Gestes du minuteur et du chat

Minuteur : tournez d’un cran pour ±10 secondes par défaut ; maintenez la molette enfoncée en la tournant pour ±1 minute, soit 6× le pas configuré. Appuyez et relâchez sans tourner pour démarrer/mettre en pause. Touchez l’affichage du minuteur pour actualiser ; maintenez cet affichage appuyé pour réinitialiser. Maintenir uniquement la molette physique ne réinitialise pas le minuteur.

Consultation du chat (Chat Review) : tournez à gauche pour remonter le chat, à droite pour descendre ; appuyez sur la molette pour épingler le message consulté. Touchez l’affichage pour mettre en avant le message épinglé suivant ; maintenez l’affichage pour désépingler le message consulté. Gardez le dock par défaut ouvert. En mode WebSocket, activez le relais de chat sur le canal 4.

Ouvrir Aide et diagnostics → Guide des contrôles, icônes et flux (Help and diagnostics → Controls, icons and workflow guide) dans le plugin pour accéder au guide complet hors ligne, aux cinq types d’actions, à chaque préréglage/icône, au comportement de réinitialisation, aux valeurs par défaut et au dépannage.

Référence de la palette Event Flow

La palette contient 45 déclencheurs, 67 actions, cinq nœuds logiques et quatre nœuds d’état. Chaque entrée affiche un libellé à côté de son symbole. Sélectionnez un nœud pour consulter ses paramètres et les prérequis de l’intégration ; une icône de palette ne prouve pas qu’une destination est connectée.

Déclencheurs déterminent quand un flux démarre. Reliez les conditions par AND/OR si nécessaire. Actions s’exécutent dans l’ordre des connexions. Nœuds d’état mémorisent des valeurs entre les événements. Pour un délai entre appuis, choisissez Limiteur de fréquence (Rate Limiter) (THROTTLE), pas une action Delay : Delay reporte chaque exécution sans bloquer les appuis répétés.

Déclencheurs : Stream Deck et API (1)
  • ▶ Exécuter depuis Stream Deck / API (Run from Stream Deck / API) — apiTrigger
Déclencheurs : 📣 Événements de diffusion (9)
  • 👋 Nouveau follower (New Follower) — eventNewFollower
  • ⭐ Nouvel abonné (New Subscriber) — eventNewSubscriber
  • 🔄 Réabonnement/Renouvellement (Resub/Renewal) — eventResub
  • 🎁 Abonnement offert (Gift Sub) — eventGiftSub
  • 💰 Don / Pourboire (Donation / Tip) — eventDonation
  • 🚀 Raid — eventRaid
  • 💎 Cheer/Bits — eventCheer
  • 📋 Autre événement… (Other Event...) — eventOther
  • ✏️ Événement personnalisé (Custom Event) — eventCustom
Déclencheurs : OBS Studio (7)
  • Diffusion OBS démarrée (OBS Stream Started) — obsStreamStarted
  • Diffusion OBS arrêtée (OBS Stream Stopped) — obsStreamStopped
  • Enregistrement OBS démarré (OBS Recording Started) — obsRecordingStarted
  • Enregistrement OBS arrêté (OBS Recording Stopped) — obsRecordingStopped
  • Scène OBS changée (OBS Scene Changed) — obsSceneChanged
  • Média OBS terminé (OBS Media Ended) — obsMediaEnded
  • Tampon de relecture OBS enregistré (OBS Replay Buffer Saved) — obsReplaybufferSaved
Déclencheurs : 💬 Messages de chat (6)
  • 💬 Tout message (Any Message) — anyMessage
  • 🔍 Le message contient (Message Contains) — messageContains
  • ▶️ Le message commence par (Message Starts With) — messageStartsWith
  • ⏹️ Le message se termine par (Message Ends With) — messageEndsWith
  • 🟰 Le message est égal à (Message Equals) — messageEquals
  • 🔤 Expression régulière du message (Message Regex) — messageRegex
Déclencheurs : 📊 Propriétés des messages (7)
  • 📏 Longueur du message (Message Length) — messageLength
  • 🔢 Nombre de mots (Word Count) — wordCount
  • 😀 Contient un emoji (Contains Emoji) — containsEmoji
  • 🔗 Contient un lien (Contains Link) — containsLink
  • 💰 Contient un don (Has Donation) — hasDonation
  • ⚖️ Comparer une propriété (Compare Property) — compareProperty
  • ⚙️ Filtre des propriétés des messages (Message Properties Filter) — messageProperties
Déclencheurs : 👤 Utilisateur et source (6)
  • 📡 Depuis la source (From Source) — fromSource
  • 📺 Depuis le nom de chaîne (From Channel Name) — fromChannelName
  • 👤 De l’utilisateur (From User) — fromUser
  • 👑 Rôle de l’utilisateur (User Role) — userRole
  • 🧠 L’utilisateur est mémorisé (User Is Remembered) — userMemoryContains
  • 🎁 Échange de points de chaîne (Channel Point Redemption) — channelPointRedemption
Déclencheurs : ⏰ Temps et hasard (4)
  • 🎲 Probabilité aléatoire (Random Chance) — randomChance
  • ⏰ Intervalle de temps (Time Interval) — timeInterval
  • 🎤 Quand je dis… (When I say...) — voicePhrase
  • 🕐 Heure de la journée (Time of Day) — timeOfDay
Déclencheurs : 🎹 MIDI (3)
  • 🎹 Note MIDI démarrée (MIDI Note On) — midiNoteOn
  • 🎹 Note MIDI arrêtée (MIDI Note Off) — midiNoteOff
  • 🎛️ Changement de contrôle MIDI (MIDI Control Change) — midiCC
Déclencheurs : 📦 Avancés (2)
  • 📣 Type d’événement avancé (Event Type (Advanced)) — eventType
  • Code personnalisé (Custom Code) — customJs
Actions : 💬 Actions de message (14)
  • 🚫 Bloquer le message (Block Message) — blockMessage
  • ✅ Renvoyer le message (Return Message) — returnMessage
  • ⚡ Continuer en asynchrone (Continue Async) — continueAsync
  • ✏️ Modifier le message (Modify Message) — modifyMessage
  • ⬅️ Ajouter un préfixe (Add Prefix) — addPrefix
  • ➡️ Ajouter un suffixe (Add Suffix) — addSuffix
  • 🔄 Rechercher et remplacer (Find & Replace) — findReplace
  • ✂️ Supprimer du texte (Remove Text) — removeText
  • 🎨 Définir une propriété (Set Property) — setProperty
  • 🌟 Mettre un message en avant (Feature Message) — featureMessage
  • Épingler un message (Pin Message) — pinMessage
  • 💬 Envoyer un message (Send Message) — sendMessage
  • 📢 Relayer le chat (Relay Chat) — relay
  • 🪞 Filtre de reflets (Reflection Filter) — reflectionFilter
Actions : 🔌 Intégrations (6)
  • Exécuter du code personnalisé (Execute Custom Code) — customJs
  • 🖨️ Imprimer une étiquette thermique (Print Thermal Label) — printThermal
  • 🌐 Appeler un webhook (Call Webhook) — webhook
  • ⬆️ Ajouter des points (Add Points) — addPoints
  • ⬇️ Dépenser des points (Spend Points) — spendPoints
  • 🎁 Tirage au sort / Tickets (Giveaway / Tickets) — giveawayControl
Actions : 🎨 Médias et effets (7)
  • 🖼️ Afficher une incrustation média (Display Media Overlay) — playTenorGiphy
  • 👤 Afficher l’avatar (Show Avatar) — showAvatar
  • 🛍 Produits et soutien (Products & Support) — commerceControl
  • 📝 Afficher du texte (Show Text) — showText
  • 🗑️ Effacer le calque (Clear Layer) — clearLayer
  • 🔊 Lire un extrait audio (Play Audio Clip) — playAudioClip
  • ⏱️ Délai (Delay) — delay
Actions : 🎬 OBS Studio (14)
  • 🎬 Changer de scène (Change Scene) — obsChangeScene
  • 👁️ Afficher/masquer une source (Toggle Source) — obsToggleSource
  • 📝 Définir une source texte (Set Text Source) — obsSetText
  • ⏯️ Contrôler une source média (Control Media Source) — obsMediaControl
  • 🔊 Régler le volume de la source (Set Source Volume) — obsSetVolume
  • 🔄 Actualiser la source Navigateur (Refresh Browser Source) — obsRefreshBrowser
  • 🎨 Activer/désactiver un filtre (Toggle Filter) — obsSetSourceFilter
  • 🔇 Couper/réactiver le son (Mute/Unmute Audio) — obsMuteSource
  • 🔴 Démarrer l’enregistrement (Start Recording) — obsStartRecording
  • ⏹️ Arrêter l’enregistrement (Stop Recording) — obsStopRecording
  • 📡 Démarrer la diffusion (Start Streaming) — obsStartStreaming
  • ⏹️ Arrêter la diffusion (Stop Streaming) — obsStopStreaming
  • ⏺️ Contrôler le tampon de relecture (Control Replay Buffer) — obsReplayBufferControl
  • 💾 Enregistrer le tampon de relecture (Save Replay Buffer) — obsReplayBuffer
Actions : 🎵 Spotify (10)
  • ⏭️ Piste suivante (Skip Track) — spotifySkip
  • ⏮️ Piste précédente (Previous Track) — spotifyPrevious
  • ⏸️ Pause — spotifyPause
  • ▶️ Reprendre (Resume) — spotifyResume
  • ⏯️ Basculer lecture/pause (Toggle Play/Pause) — spotifyToggle
  • 🔊 Régler le volume (Set Volume) — spotifyVolume
  • 📋 Ajouter à la file d’attente (Add to Queue) — spotifyQueue
  • 🎵 Annoncer le titre en cours (Announce Now Playing) — spotifyNowPlaying
  • 🔀 Basculer la lecture aléatoire (Toggle Shuffle) — spotifyShuffle
  • 🔁 Définir le mode de répétition (Set Repeat Mode) — spotifyRepeat
Actions : 🔊 Synthèse vocale (5)
  • 🗣️ Prononcer le texte (Speak Text) — ttsSpeak
  • 🔇 Activer/désactiver la synthèse vocale (Toggle TTS) — ttsToggle
  • ⏭️ Passer la lecture vocale (Skip TTS) — ttsSkip
  • 🗑️ Vider la file de synthèse vocale (Clear TTS Queue) — ttsClear
  • 🔊 Régler le volume de synthèse vocale (Set TTS Volume) — ttsVolume
Actions : 🎹 MIDI (2)
  • 🎹 Envoyer une note (Send Note) — midiSendNote
  • 🎛️ Envoyer un changement de contrôle (Send Control Change) — midiSendCC
Actions : 🧠 Mémoire utilisateur (4)
  • 🧠 Mémoriser l’utilisateur (Remember User) — rememberUser
  • 👋 Oublier l’utilisateur (Forget User) — forgetUser
  • 🧹 Effacer tous les utilisateurs (Clear All Users) — clearUserMemory
  • 🎟️ Choisir un utilisateur au hasard (Pick Random User) — pickRandomUser
Actions : 🔧 Contrôle d’état (5)
  • 🚦 Définir l’état de la porte (Set Gate State) — setGateState
  • 🔄 Réinitialiser un nœud d’état (Reset State Node) — resetStateNode
  • 🔢 Définir la valeur du compteur (Set Counter Value) — setCounter
  • ➕ Incrémenter le compteur (Increment Counter) — incrementCounter
  • Vérifier le compteur (Check Counter) — checkCounter
Nœuds logiques et d’état
  • 🔀 Porte ET (AND Gate) — AND
  • 🔄 Porte OU (OR Gate) — OR
  • 🚫 Porte NON (NOT Gate) — NOT
  • 🎲 Porte aléatoire (RANDOM Gate) — RANDOM
  • 🚫 Vérifier les mots interdits (Check Bad Words) — CHECK_BAD_WORDS
  • 🚦 Interrupteur marche/arrêt (On/Off Switch) — GATE
  • 🔢 Compteur (Counter) — COUNTER
  • ⏲️ Limiteur de fréquence (Rate Limiter) — THROTTLE
  • 🧠 Mémoire utilisateur (User Memory) — USER_MEMORY

Les filtres de messages, les points de spectateurs et les actions sur les utilisateurs mémorisés nécessitent des données de message/utilisateur pertinentes. Un bouton d’animateur ne fournit ni véritable spectateur ni cible de réponse source. Choisissez des contrôles d’animateur ou une destination explicitement configurée ; n’utilisez pas un flux nommé pour usurper l’identité d’un spectateur.

Pour les détails de connexion, consultez le guide Event Flow, guide des nœuds d’état, guide de la mémoire utilisateur, et guide OBS.

Résoudre un échec

  1. Commencez par un flux simple Show Text et vérifiez sa sortie.
  2. Enregistrez et activez le flux ; actualisez la liste des flux Stream Deck. Vérifiez le nom du déclencheur et l’identifiant du flux.
  3. Vérifiez que SSN est activé, que la connexion indique Online et que l’incrustation de destination est connectée à la même session.
  4. Consultez la réponse API ou les diagnostics du plugin pour les erreurs de recherche/validation. Pour les échecs après acceptation, examinez la destination et les journaux d’exécution d’Event Flow.
  5. Ajoutez les autres intégrations une par une. Testez les appuis répétés, un flux désactivé et une reconnexion avant toute utilisation en direct.

Le panneau de test de chat ordinaire de l’éditeur envoie un événement de chat. Il ne simule pas un déclencheur API nommé. Testez ce déclencheur via Stream Deck ou l’API pour vérifier tout le chemin.