openclaw - ✅(Solved) Fix Google Live tool responses omit function names [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#72425Fetched 2026-04-27 05:30:17
View on GitHub
Comments
0
Participants
1
Timeline
1
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×1

Google Live realtime tool responses omit the original function call name, so Gemini Live tool calls can fail when OpenClaw submits the result back through the official @google/genai SDK.

This shows up most visibly in Google Meet realtime sessions using gemini-3.1-flash-live-preview: the model greets normally, then stalls or drops when it calls an OpenClaw-owned tool and the bridge tries to return the tool result.

Root Cause

  1. Configure Google Meet realtime with the Google provider and gemini-3.1-flash-live-preview.
  2. Join a realtime Meet session.
  3. Ask the agent to do something that requires an OpenClaw-owned tool or consult flow.
  4. The Live model emits a function call.
  5. OpenClaw executes the tool and calls submitToolResult(callId, result).
  6. The SDK rejects the malformed function response because it lacks the matching function name.

Fix Action

Fixed

PR fix notes

PR #72426: Fix Google Live tool response names

Description (problem / solution / changelog)

Summary

  • remember Google Live function call names by call id inside the realtime bridge
  • include the matching name when submitting FunctionResponse objects back to @google/genai
  • fail closed via onError instead of sending a malformed tool response when no matching call name exists

Why

Gemini Live tool use requires OpenClaw to manually send function responses back to the Live session. Google’s Live API examples for gemini-3.1-flash-live-preview include id, name, and response; the current bridge drops name, which the current SDK rejects with Could not parse function response, type 'object'.

Validation

  • pnpm exec oxfmt --check extensions/google/realtime-voice-provider.ts extensions/google/realtime-voice-provider.test.ts
  • pnpm exec vitest run extensions/google/realtime-voice-provider.test.ts
  • pnpm tsgo:extensions:test

Fixes #72425

Changed files

  • extensions/google/realtime-voice-provider.test.ts (modified, +24/-0)
  • extensions/google/realtime-voice-provider.ts (modified, +16/-0)

Code Example

{
  id: callId,
  name: originalFunctionName,
  response: { ... }
}

---

{
  id: callId,
  response: { ... }
}
RAW_BUFFERClick to expand / collapse

Summary

Google Live realtime tool responses omit the original function call name, so Gemini Live tool calls can fail when OpenClaw submits the result back through the official @google/genai SDK.

This shows up most visibly in Google Meet realtime sessions using gemini-3.1-flash-live-preview: the model greets normally, then stalls or drops when it calls an OpenClaw-owned tool and the bridge tries to return the tool result.

Evidence

  • Google Live API docs say Gemini 3.1 Flash Live supports function calling synchronously, and clients must manually send FunctionResponse objects with id, name, and response when responding to tool calls: https://ai.google.dev/gemini-api/docs/live-api/tools
  • The Live API reference says tool responses match tool calls by id, and the examples still include name in each function response: https://ai.google.dev/api/live
  • The installed OpenClaw Google provider currently forwards the Live API tool call name to OpenClaw, but GoogleRealtimeVoiceBridge.submitToolResult() sends only { id, response } to session.sendToolResponse().
  • With the current @google/genai SDK this throws: Could not parse function response, type 'object'.

Repro Shape

  1. Configure Google Meet realtime with the Google provider and gemini-3.1-flash-live-preview.
  2. Join a realtime Meet session.
  3. Ask the agent to do something that requires an OpenClaw-owned tool or consult flow.
  4. The Live model emits a function call.
  5. OpenClaw executes the tool and calls submitToolResult(callId, result).
  6. The SDK rejects the malformed function response because it lacks the matching function name.

Expected

OpenClaw should preserve the function call name by call id and include it when sending the function response:

{
  id: callId,
  name: originalFunctionName,
  response: { ... }
}

Actual

OpenClaw sends:

{
  id: callId,
  response: { ... }
}

Impact

Gemini Live conversations can become unresponsive exactly when a realtime voice session tries to use tools, which makes Google Meet voice lanes unable to reach normal OpenClaw agent/tool capability.

extent analysis

TL;DR

The issue can be fixed by modifying the GoogleRealtimeVoiceBridge.submitToolResult() function to include the original function call name in the tool response.

Guidance

  • Verify that the GoogleRealtimeVoiceBridge class has access to the original function call name when submitting the tool result.
  • Update the submitToolResult() function to include the original function name in the response object, like this: { id: callId, name: originalFunctionName, response: { ... } }.
  • Check the @google/genai SDK documentation to ensure that the updated response object conforms to the expected format.
  • Test the modified submitToolResult() function to ensure that it resolves the issue and allows Gemini Live conversations to complete successfully.

Example

// Example of the updated submitToolResult function
submitToolResult(callId, result, originalFunctionName) {
  const response = {
    id: callId,
    name: originalFunctionName,
    response: result
  };
  session.sendToolResponse(response);
}

Notes

The fix assumes that the originalFunctionName is available when submitting the tool result. If this is not the case, additional modifications may be needed to store or retrieve the original function name.

Recommendation

Apply the workaround by updating the submitToolResult() function to include the original function name in the response object, as this should resolve the issue and allow Gemini Live conversations to complete successfully.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix Google Live tool responses omit function names [1 pull requests, 1 participants]