Guia completo de controles, gestos e ícones do Stream Deck
Crie um fluxo que possa ser chamado
- Gatilho nomeadoStream Deck / API
- Condições e açõesSeu Event Flow salvo
- DestinoFlow Actions, OBS ou outra integração
- Abrir Event Flow no SSN. Crie um fluxo dedicado ou escolha o modelo Botão do Stream Deck / API .
- Adicione Executar pelo Stream Deck / API no grupo de gatilhos Stream Deck e API .
- Dê o nome
intermission. Os nomes devem corresponder exatamente e diferenciam maiúsculas de minúsculas; use um nome curto e descritivo. - Conecte a saída a Mostrar texto. Defina o texto como
Back in five minutes, e escolha a duração e a camada desejadas. - Salve o fluxo e depois ative. Um fluxo não salvo existe apenas no editor; um fluxo desativado não pode ser chamado. O modelo inicial fica desativado intencionalmente até você terminar a configuração.
- Abra sua Sobreposição Flow Actions usando o link gerado pelo SSN. Para o público, adicione essa URL como fonte de navegador do OBS. O editor em si não é a sobreposição.
Fluxos sem este gatilho nomeado não podem ser chamados pela API de fluxos. Chamar um fluxo não injeta chat fictício no dock. Eventos existentes do OBS e chat normal continuam usando seus gatilhos existentes.
Um fluxo pode combinar seu gatilho nomeado com filtros por meio de nós lógicos. Mantenha automações sem relação em fluxos separados: todas as ramificações de gatilhos/lógica do fluxo selecionado são avaliadas com o evento da API. Pressões repetidas iniciam execuções separadas; coloque um nó de estado Limitador de frequência após o gatilho se quiser um intervalo de espera.
Conectar uma tecla do Stream Deck
- Configure a ação do plugin Configuração com sua sessão do SSN e senha opcional. Use Testar conexão.
- Arraste Comando predefinido para uma tecla.
- Selecione Fluxos do Event Flow → Executar fluxo.
- Escolha Atualizar fluxos, depois selecione o fluxo e o gatilho salvos. A tecla armazena o ID do fluxo e o nome do gatilho.
- Pressione uma vez e observe a sobreposição Flow Actions. A marca de confirmação da tecla significa que o SSN aceitou a execução.
O seletor de fluxos preserva seleções ausentes. Após renomear, desativar, excluir ou importar um fluxo, atualize e selecione novamente. Um fluxo importado como novo tem outro ID. Use o campo Value para selecionar pelo nome entre vários fluxos.
Comando personalizado: defina Action como triggerWorkflow, deixe Target em branco, digite {"trigger":"intermission"} como Value e ative Aguardar resposta. A predefinição oferece seleção guiada e filtragem por capacidades.
Múltiplas ações: cada solicitação de fluxo confirma rapidamente a aceitação. A próxima etapa do Stream Deck pode começar antes do término de ações atrasadas do fluxo. Coloque a sequência e os atrasos dentro do Event Flow quando a ordem importar.
Passar valores personalizados
No campo Value da tecla ou na solicitação de API:
{
"trigger": "intermission",
"flowId": "YOUR_SAVED_FLOW_ID",
"data": { "name": "Back in five minutes", "minutes": 5 }
}Defina Mostrar texto como {meta.workflow.data.name}. Comparar propriedade pode ler meta.workflow.data.minutes. Data é um objeto JSON opcional; permanece em meta.workflow.data e não pode substituir a identidade do evento nem conceder privilégios de chat.
Omita flowId para chamar todos os fluxos ativados com esse nome exato de gatilho. Vários nós de gatilho correspondentes em um fluxo ainda avaliam esse fluxo apenas uma vez. Para executar somente um fluxo, mantenha o ID do seletor ou da resposta de descoberta.
O evento usado dentro do fluxo selecionado tem type: "api", event: "workflow_trigger", chatname: "Stream Deck / API", um campo vazio de chatmessage, e os dados acima. Um chat normal que copie esses campos não pode ativar o gatilho nomeado da API.
Exemplos de API
Mantenha o SSN ativado e em execução. Estas são chamadas de controle remoto do Social Stream; não usam a API local separada de IA/MCP do SSApp. Mantenha seu ID real de sessão privado.
Descobrir gatilhos disponíveis
{"action":"getWorkflowTriggers","get":"list-1","apiid":"YOUR_SESSION"}O callback contém result.payload.triggers:
{"triggers":[{"flowId":"flow-123","flowName":"Intermission","trigger":"intermission"}]}
Executar um fluxo nomeado
{
"action": "triggerWorkflow",
"value": {"trigger":"intermission","flowId":"flow-123","data":{"name":"Back shortly"}},
"get": "run-1",
"apiid": "YOUR_SESSION"
}Use uma string exclusiva de get para cada solicitação. Um callback bem-sucedido tem result.ok: true, result.status: "accepted", e result.payload.matchedFlows. Aceitação significa que o fluxo ativado foi encontrado e agendado. Não significa que todas as ações atrasadas, webhooks, chamadas ao OBS ou reproduções de mídia foram concluídas.
WebSocket
Ative controle remoto da extensão por API no SSN. Conecte a wss://io.socialstream.ninja. Entre com {"join":"YOUR_SESSION","out":1,"in":2}, depois envie a solicitação acima. O canal 1 transporta controles; o canal 2 transporta callbacks. Você não precisa ativar o canal de chat para fluxos.
HTTP
Ative a mesma configuração de controle remoto por API. Substitua o placeholder de sessão antes de usar:
POST https://io.socialstream.ninja/YOUR_SESSION
Content-Type: application/json
{"action":"triggerWorkflow","value":{"trigger":"intermission","data":{"name":"Back shortly"}}}Para um gatilho nomeado simples, você também pode usar GET https://io.socialstream.ninja/YOUR_SESSION/triggerWorkflow/null/intermission. O quarto segmento do caminho pode conter JSON codificado para URL para valores estruturados. Codifique o valor JSON inteiro com encodeURIComponent(JSON.stringify(value)). Canais de envio personalizados usam ?channel=N.
P2P
O modo P2P padrão do plugin envia o mesmo payload pelo transporte existente de canal de dados VDO.Ninja do SSN. A opção da API de WebSocket hospedado não é necessária para P2P. Clientes P2P existentes devem enviar esta solicitação pela conexão de controle SSN já estabelecida; não é necessário abrir a API local de IA.
Erros e compatibilidade
WORKFLOW_NOT_FOUND: nenhum fluxo salvo e ativado corresponde ao gatilho/ID de fluxo.INVALID_VALUE: gatilho ausente/inválido, JSON malformado, ID de fluxo inválido ou data que não é objeto.CONTROL_UNAVAILABLE: o SSN ou o controle remoto do host está desativado.TARGET_UNAVAILABLE: o Event Flow ainda está carregando.- Arquivos antigos do Social Stream podem não anunciar essas ações. Verifique
getCapabilities→ssn.actions.triggerWorkflowegetWorkflowTriggers. O novo gatilho e o plugin atualizado precisam estar instalados; o número de versão do SSApp, por si só, não identifica os arquivos do Social Stream carregados remotamente.
Não repita automaticamente uma chamada que altera estado após perder a confirmação: o fluxo pode já ter iniciado. Verifique a saída primeiro. Esta API não fornece uma fila de status de execução.
O que cada integração precisa
| Ação de fluxo | Destino/configuração necessários | O que verificar |
|---|---|---|
| Mostrar texto, mídia, áudio e limpeza de camadas | Sobreposição Flow Actions conectada, mesma sessão; fonte de navegador do OBS para a saída ao público. | Saída visível, camada, duração e roteamento de áudio. Um comando bem-sucedido não comprova a visibilidade da cena do OBS. |
| Controles do OBS | Flow Actions conectado ao OBS com endereço/senha configurados; nomes de cenas/fontes correspondentes. | Estado real do OBS. Consulte o Guia do OBS. |
| Fixar/destacar mensagem | Dock padrão conectado; escolha um ID de mensagem real ou um payload completo de mensagem. | Lista de fixados do Dock e sobreposição de destaque. O texto vazio de chat de um gatilho de API não é, por si só, uma mensagem útil. |
| Chamar webhook | URL, método e corpo JSON na ação. | Resposta do receptor e campos de erro do Event Flow; a confirmação do Stream Deck chega antes dos resultados atrasados/externos. |
| Enviar mensagem / repassar | Fonte conectada com permissão de escrita e destino explícito. | Chat real de destino. Uma solicitação de fluxo não é permissão para contornar limites da plataforma. |
| Produtos e apoio | Produtos salvos/ativados e a sobreposição de comércio. | Estado selecionado/oculto/agendado do SSN. Consulte controles de produtos. |
| Sorteio, bilhetes, pontos | Sorteio/economia configurados e um ator adequado. Um evento nomeado de API não tem identidade de espectador. | Use predefinições de sorteio de host para controles de host; não trate o evento da API como uma compra de espectador. Consulte sorteios e pontos. |
| TTS, Spotify, impressão, MIDI | A configuração própria de conexão, permissões, dispositivo ou conta de cada integração. | O destino/dispositivo real. Instalar o Stream Deck não configura essas integrações. |
Gestos de temporizador e chat
Cronômetro: gire um passo para ±10 segundos por padrão; mantenha o controle giratório pressionado enquanto gira para ±1 minuto (6× o passo configurado). Pressione/solte sem girar para iniciar/pausar. Toque no visor do temporizador para atualizar; mantenha pressionado o visor para redefinir. Manter somente o controle físico pressionado não redefine.
Revisão de chat: gire para a esquerda para chat mais antigo e para a direita para mais recente; pressione o controle para fixar a mensagem revisada. Toque no visor para destacar a próxima mensagem fixada; mantenha o visor pressionado para desafixar a mensagem revisada. Mantenha o dock padrão aberto. No modo WebSocket, ative o repasse de chat no canal 4.
Abrir Ajuda e diagnósticos → Guia de controles, ícones e fluxos no plugin para o guia offline completo, todos os cinco tipos de ação, cada predefinição/ícone, comportamento de redefinição, padrões e solução de problemas.
Referência da paleta do Event Flow
A paleta tem 45 gatilhos, 67 ações, cinco nós lógicos e quatro nós de estado. Cada entrada tem um rótulo de texto ao lado do símbolo. Selecione um nó para ver suas configurações e pré-requisitos de integração; um ícone na paleta não comprova que um destino esteja conectado.
Gatilhos decidem quando um fluxo começa. Conecte condições com AND/OR quando necessário. Ações são executadas na ordem conectada. Nós de estado memorizam valores entre eventos. Para um intervalo de espera do botão, escolha Limitador de frequência (THROTTLE), não uma ação de atraso: Delay adia cada execução e não impede acionamentos repetidos.
Gatilhos: Stream Deck e API (1)
- ▶ Executar pelo Stream Deck / API —
apiTrigger
Gatilhos: 📣 Eventos da transmissão (9)
- 👋 Novo seguidor —
eventNewFollower - ⭐ Novo inscrito —
eventNewSubscriber - 🔄 Reinscrição/renovação —
eventResub - 🎁 Inscrição de presente —
eventGiftSub - 💰 Doação / Gorjeta —
eventDonation - 🚀 Raid —
eventRaid - 💎 Cheer/Bits —
eventCheer - 📋 Outro evento... —
eventOther - ✏️ Evento personalizado —
eventCustom
Gatilhos: OBS Studio (7)
- Transmissão do OBS iniciada —
obsStreamStarted - Transmissão do OBS parada —
obsStreamStopped - Gravação do OBS iniciada —
obsRecordingStarted - Gravação do OBS parada —
obsRecordingStopped - Cena do OBS alterada —
obsSceneChanged - Mídia do OBS encerrada —
obsMediaEnded - Buffer de replay do OBS salvo —
obsReplaybufferSaved
Gatilhos: 💬 Mensagens de chat (6)
- 💬 Qualquer mensagem —
anyMessage - 🔍 Mensagem contém —
messageContains - ▶️ Mensagem começa com —
messageStartsWith - ⏹️ Mensagem termina com —
messageEndsWith - 🟰 Mensagem igual a —
messageEquals - 🔤 Regex da mensagem —
messageRegex
Gatilhos: 📊 Propriedades de mensagens (7)
- 📏 Comprimento da mensagem —
messageLength - 🔢 Contagem de palavras —
wordCount - 😀 Contém emoji —
containsEmoji - 🔗 Contém link —
containsLink - 💰 Tem doação —
hasDonation - ⚖️ Comparar propriedade —
compareProperty - ⚙️ Filtro de propriedades de mensagem —
messageProperties
Gatilhos: 👤 Usuário e fonte (6)
- 📡 Da fonte —
fromSource - 📺 Do nome do canal —
fromChannelName - 👤 De usuário —
fromUser - 👑 Função de usuário —
userRole - 🧠 Usuário está memorizado —
userMemoryContains - 🎁 Resgate de pontos do canal —
channelPointRedemption
Gatilhos: ⏰ Tempo e aleatoriedade (4)
- 🎲 Chance aleatória —
randomChance - ⏰ Intervalo de tempo —
timeInterval - 🎤 Quando eu disser... —
voicePhrase - 🕐 Horário do dia —
timeOfDay
Gatilhos: 🎹 MIDI (3)
- 🎹 Nota MIDI ligada —
midiNoteOn - 🎹 Nota MIDI desligada —
midiNoteOff - 🎛️ Alteração de controle MIDI —
midiCC
Gatilhos: 📦 Avançados (2)
- 📣 Tipo de evento (avançado) —
eventType - Código personalizado —
customJs
Ações: 💬 Ações de mensagens (14)
- 🚫 Bloquear mensagem —
blockMessage - ✅ Retornar mensagem —
returnMessage - ⚡ Continuar de forma assíncrona —
continueAsync - ✏️ Modificar mensagem —
modifyMessage - ⬅️ Adicionar prefixo —
addPrefix - ➡️ Adicionar sufixo —
addSuffix - 🔄 Localizar e substituir —
findReplace - ✂️ Remover texto —
removeText - 🎨 Definir propriedade —
setProperty - 🌟 Destacar mensagem —
featureMessage - Fixar mensagem —
pinMessage - 💬 Enviar mensagem —
sendMessage - 📢 Repassar chat —
relay - 🪞 Filtro de eco —
reflectionFilter
Ações: 🔌 Integrações (6)
- Executar código personalizado —
customJs - 🖨️ Imprimir etiqueta térmica —
printThermal - 🌐 Chamar webhook —
webhook - ⬆️ Adicionar pontos —
addPoints - ⬇️ Gastar pontos —
spendPoints - 🎁 Sorteio / Bilhetes —
giveawayControl
Ações: 🎨 Mídia e efeitos (7)
- 🖼️ Exibir sobreposição de mídia —
playTenorGiphy - 👤 Mostrar avatar —
showAvatar - 🛍 Produtos e apoio —
commerceControl - 📝 Mostrar texto —
showText - 🗑️ Limpar camada —
clearLayer - 🔊 Reproduzir clipe de áudio —
playAudioClip - ⏱️ Atraso —
delay
Ações: 🎬 OBS Studio (14)
- 🎬 Trocar cena —
obsChangeScene - 👁️ Alternar fonte —
obsToggleSource - 📝 Definir fonte de texto —
obsSetText - ⏯️ Controlar fonte de mídia —
obsMediaControl - 🔊 Definir volume da fonte —
obsSetVolume - 🔄 Atualizar fonte de navegador —
obsRefreshBrowser - 🎨 Alternar filtro —
obsSetSourceFilter - 🔇 Silenciar/ativar áudio —
obsMuteSource - 🔴 Iniciar gravação —
obsStartRecording - ⏹️ Parar gravação —
obsStopRecording - 📡 Iniciar transmissão —
obsStartStreaming - ⏹️ Parar transmissão —
obsStopStreaming - ⏺️ Controlar buffer de replay —
obsReplayBufferControl - 💾 Salvar buffer de replay —
obsReplayBuffer
Ações: 🎵 Spotify (10)
- ⏭️ Pular faixa —
spotifySkip - ⏮️ Faixa anterior —
spotifyPrevious - ⏸️ Pausar —
spotifyPause - ▶️ Retomar —
spotifyResume - ⏯️ Alternar reprodução/pausa —
spotifyToggle - 🔊 Definir volume —
spotifyVolume - 📋 Adicionar à fila —
spotifyQueue - 🎵 Anunciar música atual —
spotifyNowPlaying - 🔀 Alternar reprodução aleatória —
spotifyShuffle - 🔁 Definir modo de repetição —
spotifyRepeat
Ações: 🔊 Síntese de voz (5)
- 🗣️ Falar texto —
ttsSpeak - 🔇 Alternar TTS —
ttsToggle - ⏭️ Pular TTS —
ttsSkip - 🗑️ Limpar fila de TTS —
ttsClear - 🔊 Definir volume do TTS —
ttsVolume
Ações: 🎹 MIDI (2)
- 🎹 Enviar nota —
midiSendNote - 🎛️ Enviar alteração de controle —
midiSendCC
Ações: 🧠 Memória de usuários (4)
- 🧠 Memorizar usuário —
rememberUser - 👋 Esquecer usuário —
forgetUser - 🧹 Limpar todos os usuários —
clearUserMemory - 🎟️ Escolher usuário aleatório —
pickRandomUser
Ações: 🔧 Controle de estado (5)
- 🚦 Definir estado da porta —
setGateState - 🔄 Redefinir nó de estado —
resetStateNode - 🔢 Definir valor do contador —
setCounter - ➕ Incrementar contador —
incrementCounter - Verificar contador —
checkCounter
Nós de lógica e estado
- 🔀 Porta AND —
AND - 🔄 Porta OR —
OR - 🚫 Porta NOT —
NOT - 🎲 Porta RANDOM —
RANDOM - 🚫 Verificar palavras proibidas —
CHECK_BAD_WORDS - 🚦 Interruptor liga/desliga —
GATE - 🔢 Contador —
COUNTER - ⏲️ Limitador de frequência —
THROTTLE - 🧠 Memória de usuários —
USER_MEMORY
Filtros de mensagens, pontos de espectadores e ações de usuários memorizados precisam de dados significativos de mensagem/usuário. Um botão de host não fornece um espectador real nem um destino de resposta da fonte. Escolha controles de host ou um destino explícito configurado; não use um fluxo nomeado para se passar por um espectador.
Para detalhes das conexões, consulte o Guia do Event Flow, guia de nós de estado, guia de memória de usuários, e Guia do OBS.
Investigar uma falha
- Comece com um fluxo simples de Mostrar texto e verifique a saída.
- Salve e ative; atualize a lista de fluxos do Stream Deck. Confirme o nome do gatilho e o ID do fluxo.
- Verifique se o SSN está ativado, se a conexão está Online e se a sobreposição de destino está conectada à mesma sessão.
- Verifique o callback da API ou os diagnósticos do plugin para erros de busca/validação. Para falhas após a aceitação, inspecione o destino e os logs de execução do Event Flow.
- Adicione outras integrações uma de cada vez. Teste pressões repetidas, um fluxo desativado e uma reconexão antes de usar ao vivo.
O painel normal de teste de chat do editor envia um evento de chat. Ele não simula um gatilho nomeado de API. Teste este gatilho pelo Stream Deck ou API para verificar o caminho completo.