35 lines
1.3 KiB
TypeScript
35 lines
1.3 KiB
TypeScript
import { loadVoiceWakeConfig, setVoiceWakeTriggers } from "../../infra/voicewake.js";
|
|
import { ErrorCodes, errorShape } from "../protocol/index.js";
|
|
import { normalizeVoiceWakeTriggers } from "../server-utils.js";
|
|
import { formatForLog } from "../ws-log.js";
|
|
import type { GatewayRequestHandlers } from "./types.js";
|
|
|
|
export const voicewakeHandlers: GatewayRequestHandlers = {
|
|
"voicewake.get": async ({ respond }) => {
|
|
try {
|
|
const cfg = await loadVoiceWakeConfig();
|
|
respond(true, { triggers: cfg.triggers });
|
|
} catch (err) {
|
|
respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
|
|
}
|
|
},
|
|
"voicewake.set": async ({ params, respond, context }) => {
|
|
if (!Array.isArray(params.triggers)) {
|
|
respond(
|
|
false,
|
|
undefined,
|
|
errorShape(ErrorCodes.INVALID_REQUEST, "voicewake.set requires triggers: string[]"),
|
|
);
|
|
return;
|
|
}
|
|
try {
|
|
const triggers = normalizeVoiceWakeTriggers(params.triggers);
|
|
const cfg = await setVoiceWakeTriggers(triggers);
|
|
context.broadcastVoiceWakeChanged(cfg.triggers);
|
|
respond(true, { triggers: cfg.triggers });
|
|
} catch (err) {
|
|
respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, formatForLog(err)));
|
|
}
|
|
},
|
|
};
|