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 });
|
||||
};
|
||||
|
||||
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(
|
||||
"voicecall.initiate",
|
||||
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
||||
|
|
@ -264,17 +293,13 @@ const voiceCallPlugin = {
|
|||
"voicecall.continue",
|
||||
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
||||
try {
|
||||
const request = await resolveCallMessageRequest(params);
|
||||
if ("error" in request) {
|
||||
respond(false, { error: request.error });
|
||||
return;
|
||||
}
|
||||
const result = await request.rt.manager.continueCall(request.callId, request.message);
|
||||
if (!result.success) {
|
||||
respond(false, { error: result.error || "continue failed" });
|
||||
return;
|
||||
}
|
||||
respond(true, { success: true, transcript: result.transcript });
|
||||
await respondToCallMessageAction({
|
||||
requestParams: params,
|
||||
respond,
|
||||
action: (request) => request.rt.manager.continueCall(request.callId, request.message),
|
||||
failure: "continue failed",
|
||||
includeTranscript: true,
|
||||
});
|
||||
} catch (err) {
|
||||
sendError(respond, err);
|
||||
}
|
||||
|
|
@ -285,17 +310,12 @@ const voiceCallPlugin = {
|
|||
"voicecall.speak",
|
||||
async ({ params, respond }: GatewayRequestHandlerOptions) => {
|
||||
try {
|
||||
const request = await resolveCallMessageRequest(params);
|
||||
if ("error" in request) {
|
||||
respond(false, { error: request.error });
|
||||
return;
|
||||
}
|
||||
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 });
|
||||
await respondToCallMessageAction({
|
||||
requestParams: params,
|
||||
respond,
|
||||
action: (request) => request.rt.manager.speak(request.callId, request.message),
|
||||
failure: "speak failed",
|
||||
});
|
||||
} catch (err) {
|
||||
sendError(respond, err);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue