fix(google-meet): require voice call setup entry · openclaw/openclaw@fe107d5
vincentkoc
·
2026-05-04
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -56,6 +56,7 @@ Docs: https://docs.openclaw.ai
|
56 | 56 | - Google Meet: split realtime provider config into agent-mode transcription and bidi-mode voice providers, and migrate legacy Gemini Live bidi configs with `doctor --fix`, so Gemini Live can back direct bidi fallback without breaking the default OpenClaw agent talk-back path. |
57 | 57 | - Google Meet: expose `voiceCall.postDtmfSpeechDelayMs` in the plugin manifest schema and setup hints, so manifest-based config editing accepts the runtime-supported Twilio delay key. Thanks @vincentkoc. |
58 | 58 | - Google Meet: keep explicit non-Google `realtime.provider` values as the transcription provider compatibility fallback when `realtime.transcriptionProvider` is unset. Thanks @vincentkoc. |
| 59 | +- Google Meet: make Twilio setup status require an enabled `voice-call` plugin entry instead of treating a missing entry as ready. Thanks @vincentkoc. |
59 | 60 | - Telegram: render shared interactive reply buttons in reply delivery so plugin approval messages show inline keyboards. (#76238) Thanks @keshavbotagent. |
60 | 61 | - Agents/cli-runner: drop a saved `claude-cli` resume sessionId at preparation time when its on-disk transcript no longer exists in `~/.claude/projects/`, so a stale binding from a half-installed `update.run` cannot trap follow-up runs (auto-reply / Telegram direct) in a `claude --resume` timeout loop; the run starts fresh and the new sessionId is written back through the existing post-run flow. (#77030; refs #77011) Thanks @openperf. |
61 | 62 | - Release validation: install the cross-OS TypeScript harness through Windows-safe Node/npm shims so native Windows package checks reach the OpenClaw smoke suites instead of exiting before artifact capture. Thanks @vincentkoc. |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -1868,6 +1868,41 @@ describe("google-meet plugin", () => {
|
1868 | 1868 | ); |
1869 | 1869 | }); |
1870 | 1870 | |
| 1871 | +it("reports missing voice-call plugin entry for explicit Twilio transport", async () => { |
| 1872 | +vi.stubEnv("TWILIO_ACCOUNT_SID", "AC123"); |
| 1873 | +vi.stubEnv("TWILIO_AUTH_TOKEN", "secret"); |
| 1874 | +vi.stubEnv("TWILIO_FROM_NUMBER", "+15550001234"); |
| 1875 | +const { tools } = setup( |
| 1876 | +{ defaultTransport: "chrome" }, |
| 1877 | +{ |
| 1878 | +fullConfig: { |
| 1879 | +plugins: { |
| 1880 | +allow: ["google-meet", "voice-call"], |
| 1881 | +entries: {}, |
| 1882 | +}, |
| 1883 | +}, |
| 1884 | +}, |
| 1885 | +); |
| 1886 | +const tool = tools[0] as { |
| 1887 | +execute: ( |
| 1888 | +id: string, |
| 1889 | +params: unknown, |
| 1890 | +) => Promise<{ details: { ok?: boolean; checks?: unknown[] } }>; |
| 1891 | +}; |
| 1892 | + |
| 1893 | +const result = await tool.execute("id", { action: "setup_status", transport: "twilio" }); |
| 1894 | + |
| 1895 | +expect(result.details.ok).toBe(false); |
| 1896 | +expect(result.details.checks).toEqual( |
| 1897 | +expect.arrayContaining([ |
| 1898 | +expect.objectContaining({ |
| 1899 | +id: "twilio-voice-call-plugin", |
| 1900 | +ok: false, |
| 1901 | +}), |
| 1902 | +]), |
| 1903 | +); |
| 1904 | +}); |
| 1905 | + |
1871 | 1906 | it("reports missing Twilio dial plan for explicit Twilio setup", async () => { |
1872 | 1907 | vi.stubEnv("TWILIO_ACCOUNT_SID", "AC123"); |
1873 | 1908 | vi.stubEnv("TWILIO_AUTH_TOKEN", "secret"); |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -225,7 +225,8 @@ export function getGoogleMeetSetupStatus(
|
225 | 225 | Object.hasOwn(pluginEntries, "voice-call")); |
226 | 226 | if (shouldCheckTwilioDelegation) { |
227 | 227 | const voiceCallAllowed = !Array.isArray(pluginAllow) || pluginAllow.includes("voice-call"); |
228 | | -const voiceCallEnabled = voiceCallEntry.enabled !== false; |
| 228 | +const hasVoiceCallEntry = Object.hasOwn(pluginEntries, "voice-call"); |
| 229 | +const voiceCallEnabled = hasVoiceCallEntry && voiceCallEntry.enabled !== false; |
229 | 230 | checks.push({ |
230 | 231 | id: "twilio-voice-call-plugin", |
231 | 232 | ok: voiceCallAllowed && voiceCallEnabled, |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。