惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
docs: expand meet voice-call troubleshooting · openclaw/o...
steipete · 2026-05-01 · via Recent Commits to openclaw:main

@@ -646,6 +646,139 @@ This repo ships a matching skill doc at `skills/voice-call/SKILL.md`.

646646

| `voicecall.end` | `callId` |

647647

| `voicecall.status` | `callId` |

648648649+

## Troubleshooting

650+651+

### Setup fails webhook exposure

652+653+

Run setup from the same environment that runs the Gateway:

654+655+

```bash

656+

openclaw voicecall setup

657+

openclaw voicecall setup --json

658+

```

659+660+

For `twilio`, `telnyx`, and `plivo`, `webhook-exposure` must be green. A

661+

configured `publicUrl` still fails when it points at local or private network

662+

space, because the carrier cannot call back into those addresses. Do not use

663+

`localhost`, `127.0.0.1`, `0.0.0.0`, `10.x`, `172.16.x`-`172.31.x`,

664+

`192.168.x`, `169.254.x`, `fc00::/7`, or `fd00::/8` as `publicUrl`.

665+666+

Use one public exposure path:

667+668+

```json5

669+

{

670+

plugins: {

671+

entries: {

672+

"voice-call": {

673+

config: {

674+

publicUrl: "https://voice.example.com/voice/webhook",

675+

// or

676+

tunnel: { provider: "ngrok" },

677+

// or

678+

tailscale: { mode: "funnel", path: "/voice/webhook" },

679+

},

680+

},

681+

},

682+

},

683+

}

684+

```

685+686+

After changing config, restart or reload the Gateway, then run:

687+688+

```bash

689+

openclaw voicecall setup

690+

openclaw voicecall smoke

691+

```

692+693+

`voicecall smoke` is a dry run unless you pass `--yes`.

694+695+

### Provider credentials fail

696+697+

Check the selected provider and the required credential fields:

698+699+

- Twilio: `twilio.accountSid`, `twilio.authToken`, and `fromNumber`, or

700+

`TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, and `TWILIO_FROM_NUMBER`.

701+

- Telnyx: `telnyx.apiKey`, `telnyx.connectionId`, `telnyx.publicKey`, and

702+

`fromNumber`.

703+

- Plivo: `plivo.authId`, `plivo.authToken`, and `fromNumber`.

704+705+

Credentials must exist on the Gateway host. Editing a local shell profile does

706+

not affect an already running Gateway until it restarts or reloads its

707+

environment.

708+709+

### Calls start but provider webhooks do not arrive

710+711+

Confirm the provider console points at the exact public webhook URL:

712+713+

```text

714+

https://voice.example.com/voice/webhook

715+

```

716+717+

Then inspect runtime state:

718+719+

```bash

720+

openclaw voicecall status --call-id <id>

721+

openclaw voicecall tail

722+

```

723+724+

Common causes:

725+726+

- `publicUrl` points at a different path than `serve.path`.

727+

- The tunnel URL changed after the Gateway started.

728+

- A proxy forwards the request but strips or rewrites host/proto headers.

729+

- Firewall or DNS routes the public hostname somewhere other than the Gateway.

730+

- The Gateway was restarted without the Voice Call plugin enabled.

731+732+

When a reverse proxy or tunnel is in front of the Gateway, set

733+

`webhookSecurity.allowedHosts` to the public hostname, or use

734+

`webhookSecurity.trustedProxyIPs` for a known proxy address. Use

735+

`webhookSecurity.trustForwardingHeaders` only when the proxy boundary is under

736+

your control.

737+738+

### Signature verification fails

739+740+

Provider signatures are checked against the public URL OpenClaw reconstructs

741+

from the incoming request. If signatures fail:

742+743+

- Confirm the provider webhook URL exactly matches `publicUrl`, including

744+

scheme, host, and path.

745+

- For ngrok free-tier URLs, update `publicUrl` when the tunnel hostname changes.

746+

- Ensure the proxy preserves the original host and proto headers, or configure

747+

`webhookSecurity.allowedHosts`.

748+

- Do not enable `skipSignatureVerification` outside local testing.

749+750+

### Google Meet Twilio joins fail

751+752+

Google Meet uses this plugin for Twilio dial-in joins. First verify Voice Call:

753+754+

```bash

755+

openclaw voicecall setup

756+

openclaw voicecall smoke --to "+15555550123"

757+

```

758+759+

Then verify the Google Meet transport explicitly:

760+761+

```bash

762+

openclaw googlemeet setup --transport twilio

763+

```

764+765+

If Voice Call is green but the Meet participant never joins, check the Meet

766+

dial-in number, PIN, and `--dtmf-sequence`. The phone call can be healthy while

767+

the meeting rejects or ignores an incorrect DTMF sequence.

768+769+

### Realtime call has no speech

770+771+

Confirm only one audio mode is enabled. `realtime.enabled` and

772+

`streaming.enabled` cannot both be true.

773+774+

For realtime Twilio calls, also verify:

775+776+

- A realtime provider plugin is loaded and registered.

777+

- `realtime.provider` is unset or names a registered provider.

778+

- The provider API key is available to the Gateway process.

779+

- `openclaw voicecall tail` shows the media stream accepted and realtime

780+

provider readiness before the initial greeting.

781+649782

## Related

650783651784

- [Talk mode](/nodes/talk)