Skip to content

[Bug]: Telnyx inbound conversation mode: client_state null causes transcript webhooks to be dropped #89512

Description

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Summary

Inbound and outbound conversation mode calls on Telnyx fail silently after
the initial greeting. Telnyx delivers all webhook events correctly (200
responses confirmed in Telnyx Webhook Deliveries debugger) but OpenClaw
drops transcript events because client_state is null.

Steps to reproduce

  1. Call Openclaw.
  2. Wait for responce.

Expected behavior

Expected Behavior

  1. Inbound call received → accepted → greeting spoken ✅
  2. call.initiated, call.answered, call.speak.started, call.speak.ended,
    call.transcription all delivered by Telnyx with 200 response ✅
  3. OpenClaw has conversation.

Actual behavior

Actual Behavior

  1. Inbound call received → accepted → greeting spoken ✅
  2. call.initiated, call.answered, call.speak.started, call.speak.ended,
    call.transcription all delivered by Telnyx with 200 response ✅
  3. OpenClaw logs stop at "Speaking initial message" — no transcription
    processing, no LLM response, no hangup ❌

OpenClaw version

2026.5.28

Operating system

Debian 12

Install method

No response

Model

minimax m2.7

Provider / routing chain

PSTN → Telnyx (+15043990692) → Call Control App "Jarvis" (ID: 2969384855894230209) → Webhook: https://claw.braxtonmoody.com/voice/webhook → Cloudflare (DNS-only) → Nginx (web1, 192.168.1.113) → OpenClaw Gateway (192.168.1.183:18789) → voice-call plugin (127.0.0.1:3334)

Additional provider/model setup details

Environment

  • OpenClaw: 2026.5.28
  • voice-call plugin: 2026.5.28
  • Provider: Telnyx

Root Cause (from debugging)

Inspecting Telnyx webhook delivery payloads shows:
"client_state": null
on ALL events after the initial answer. OpenClaw uses client_state to route
webhook events back to the active call record. With client_state null,
transcripts cannot be matched to the call and are silently dropped.

Workaround

None found. skipSignatureVerification=true confirmed active, ruling out
signature mismatch. Bug persists on voice-call plugin 2026.5.26 and 2026.5.28.

Logs, screenshots, and evidence

## Impact
- Inbound conversation mode: Jarvis answers and greets but cannot hear responses
- Outbound notify mode: auto-hangup timer fires but hangup command never executes
- Outbound conversation mode: same as inbound

Impact and severity

Image

Additional information

Telnyx delivers call.transcription → 200 OK returned ✅
OpenClaw receives event but payload has client_state: null
Plugin cannot match event to active call record → event silently dropped ❌

Key evidence:

  • Telnyx Webhook Deliveries shows all events as "Delivered" with 200 response
  • call.transcription payload confirmed: "client_state": null
  • OpenClaw logs confirm no processing after "Speaking initial message"
  • Tested on voice-call plugin 2026.5.26 and 2026.5.28
  • skipSignatureVerification: true confirmed active — not a signature issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority user-facing bug, regression, or broken workflow.bugSomething isn't workingimpact:message-lossChannel message delivery can be lost, duplicated, or misrouted.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions