fix(voice-call): auto-respond to webhook transcripts#100255
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 5, 2026, 5:43 AM ET / 09:43 UTC. Summary PR surface: Source +67, Tests +174. Total +241 across 11 files. Reproducibility: yes. Source inspection shows current main's generic processParsedEvents only calls manager.processEvent, while manager call.speech records/listens and only the media-stream sibling calls handleInboundResponse; the linked issue and superseded PR add live Telnyx evidence. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this replacement after the exact-head validation issue is cleared, preserving the manager-result handoff and Plivo GetInput continuation while closing the older conflicting source PR as superseded. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows current main's generic processParsedEvents only calls manager.processEvent, while manager call.speech records/listens and only the media-stream sibling calls handleInboundResponse; the linked issue and superseded PR add live Telnyx evidence. Is this the best way to solve the issue? Yes. Returning a closed final-speech result from manager while keeping response generation in the webhook server is the narrow owner-boundary fix; moving agent response work into manager events would couple state handling to runtime side effects. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 78685aec4686. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +67, Tests +174. Total +241 across 11 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
Co-authored-by: dvy <[email protected]>
524a4c1 to
ddfc9e2
Compare
|
Land-ready maintainer proof:
|
Co-authored-by: dvy <[email protected]>
Closes #79118
Supersedes #79336 because the contributor fork predates the current
mainhistory and cannot be refreshed through GitHub's verified branch-edit path without replaying more than 21,000 unrelated files.What Problem This Solves
Fixes an issue where callers using carrier webhook transcription could hear the greeting and have their speech transcribed, but OpenClaw would never generate or speak a reply.
Why This Change Was Made
Both media-stream and carrier-webhook transcripts now use one manager-owned final-speech result and one auto-response handoff. Replays, partial transcripts, turn-token mismatches, and transcripts already consumed by a closed-loop waiter stay excluded. Plivo renders an auto-response inside the next supported
GetInputprompt so conversation continues after playback.User Impact
Inbound voice conversations can continue beyond the first transcribed utterance across Telnyx-style webhooks and Plivo XML flows, without producing duplicate replies.
Evidence
check:changed: extension typechecks, lint, database-first guard, media helper guard, and import-cycle checks passed.Speakis supported andspeechEndTimeout="2"is within the documented 2-10 second range.Known gap: no maintainer Plivo carrier credential was available for a billed PSTN call; provider-contract proof and the real XML generation path are covered directly.