mirror of https://github.com/openclaw/openclaw.git
refactor: share voice call message actions
This commit is contained in:
parent
c5dc61e795
commit
9b24f890b2
|
|
@ -227,6 +227,35 @@ const voiceCallPlugin = {
|
||||||
params.respond(true, { callId: result.callId, initiated: true });
|
params.respond(true, { callId: result.callId, initiated: true });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const respondToCallMessageAction = async (params: {
|
||||||
|
requestParams: GatewayRequestHandlerOptions["params"];
|
||||||
|
respond: GatewayRequestHandlerOptions["respond"];
|
||||||
|
action: (request: Awaited<ReturnType<typeof resolveCallMessageRequest>>) => Promise<{
|
||||||
|
success: boolean;
|
||||||
|
error?: string;
|
||||||
|
transcript?: string;
|
||||||
|
}>;
|
||||||
|
failure: string;
|
||||||
|
includeTranscript?: boolean;
|
||||||
|
}) => {
|
||||||
|
const request = await resolveCallMessageRequest(params.requestParams);
|
||||||
|
if ("error" in request) {
|
||||||
|
params.respond(false, { error: request.error });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const result = await params.action(request);
|
||||||
|
if (!result.success) {
|
||||||
|
params.respond(false, { error: result.error || params.failure });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
params.respond(
|
||||||
|
true,
|
||||||
|
params.includeTranscript
|
||||||
|
? { success: true, transcript: result.transcript }
|
||||||
|
: { success: true },
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
api.registerGatewayMethod(
|
api.registerGatewayMethod(
|
||||||
"voicecall.initiate",
|
"voicecall.initiate",
|
||||||
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
||||||
|
|
@ -264,17 +293,13 @@ const voiceCallPlugin = {
|
||||||
"voicecall.continue",
|
"voicecall.continue",
|
||||||
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
||||||
try {
|
try {
|
||||||
const request = await resolveCallMessageRequest(params);
|
await respondToCallMessageAction({
|
||||||
if ("error" in request) {
|
requestParams: params,
|
||||||
respond(false, { error: request.error });
|
respond,
|
||||||
return;
|
action: (request) => request.rt.manager.continueCall(request.callId, request.message),
|
||||||
}
|
failure: "continue failed",
|
||||||
const result = await request.rt.manager.continueCall(request.callId, request.message);
|
includeTranscript: true,
|
||||||
if (!result.success) {
|
});
|
||||||
respond(false, { error: result.error || "continue failed" });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
respond(true, { success: true, transcript: result.transcript });
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
sendError(respond, err);
|
sendError(respond, err);
|
||||||
}
|
}
|
||||||
|
|
@ -285,17 +310,12 @@ const voiceCallPlugin = {
|
||||||
"voicecall.speak",
|
"voicecall.speak",
|
||||||
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
||||||
try {
|
try {
|
||||||
const request = await resolveCallMessageRequest(params);
|
await respondToCallMessageAction({
|
||||||
if ("error" in request) {
|
requestParams: params,
|
||||||
respond(false, { error: request.error });
|
respond,
|
||||||
return;
|
action: (request) => request.rt.manager.speak(request.callId, request.message),
|
||||||
}
|
failure: "speak failed",
|
||||||
const result = await request.rt.manager.speak(request.callId, request.message);
|
});
|
||||||
if (!result.success) {
|
|
||||||
respond(false, { error: result.error || "speak failed" });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
respond(true, { success: true });
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
sendError(respond, err);
|
sendError(respond, err);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue