Nodes and media
Attivazione vocale
Le parole di attivazione sono un unico elenco globale gestito dal Gateway — non esistono elenchi personalizzati per singolo nodo. Qualsiasi nodo o interfaccia utente dell'app può modificare l'elenco; il Gateway salva la modifica e la trasmette a tutti i client connessi.
- macOS: opzione locale per abilitare o disabilitare Voice Wake. Richiede macOS 26+; consultare Attivazione vocale (macOS) per i dettagli su runtime/PTT.
- iOS: opzione locale per abilitare o disabilitare Voice Wake in Settings.
- Android: opzione locale per abilitare o disabilitare Voice Wake ed editor delle parole di attivazione in Settings → Voice. Richiede il riconoscimento vocale sul dispositivo di Android.
Archiviazione
Le parole di attivazione e le regole di instradamento risiedono nel database di stato del Gateway, ~/.openclaw/state/openclaw.sqlite per impostazione predefinita (sostituibile con OPENCLAW_STATE_DIR), nelle tabelle voicewake_triggers, voicewake_routing_config, voicewake_routing_routes. I precedenti settings/voicewake.json e settings/voicewake-routing.json sono esclusivamente input di migrazione per openclaw doctor --fix — il runtime non li legge mai.
Protocollo
Elenco degli attivatori
| Metodo | Parametri | Risultato |
|---|---|---|
voicewake.get |
nessuno | { triggers: string[] } |
voicewake.set |
{ triggers: string[] } |
{ triggers: string[] } |
voicewake.set normalizza l'input: rimuove gli spazi iniziali e finali, elimina le voci vuote, conserva al massimo 32 attivatori e tronca ciascuno a 64 unità di codice UTF-16 senza dividere le coppie surrogate. Se il risultato è vuoto, vengono usati i valori predefiniti integrati (openclaw, claude, computer).
Instradamento (dall'attivatore alla destinazione)
| Metodo | Parametri | Risultato |
|---|---|---|
voicewake.routing.get |
nessuno | { config: VoiceWakeRoutingConfig } |
voicewake.routing.set |
{ config: VoiceWakeRoutingConfig } |
{ config: VoiceWakeRoutingConfig } |
{ "version": 1, "defaultTarget": { "mode": "current" }, "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }], "updatedAtMs": 1730000000000}Ogni percorso target supporta esattamente una delle seguenti opzioni:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
Limiti: al massimo 32 percorsi, testo dell'attivatore di massimo 64 caratteri. Gli attivatori dei percorsi vengono normalizzati per il confronto e il rilevamento dei duplicati convertendoli in minuscolo, rimuovendo la punteggiatura iniziale e finale da ogni parola e comprimendo gli spazi ("Hey, Bot!!" e "hey bot" corrispondono e vengono considerati duplicati) — si tratta di una normalizzazione più rigorosa rispetto alla semplice rimozione degli spazi usata per l'elenco globale degli attivatori precedente.
Eventi
| Evento | Payload |
|---|---|
voicewake.changed |
{ triggers: string[] } |
voicewake.routing.changed |
{ config: VoiceWakeRoutingConfig } |
Entrambi vengono trasmessi a ogni client WebSocket con ambito di lettura (app macOS, WebChat e simili) e a ogni nodo connesso. Un nodo li riceve entrambi anche come snapshot iniziale subito dopo la connessione.
Comportamento dei client
- macOS: chiama
voicewake.set/voicewake.gete resta in ascolto divoicewake.changedper mantenersi sincronizzato con gli altri client. - iOS: chiama
voicewake.set/voicewake.gete resta in ascolto divoicewake.changedper mantenere reattivo il rilevamento locale delle parole di attivazione. - Android: chiama
voicewake.set/voicewake.get, resta in ascolto divoicewake.changede pubblicizzavoiceWakequando è abilitato. Il riconoscimento rimane sul dispositivo e funziona solo in primo piano; viene sospeso quando Talk, la dettatura manuale, l'acquisizione di note vocali o la sintesi vocale dei messaggi utilizzano l'audio.