

























@@ -1363,7 +1363,10 @@ describe("google-meet plugin", () => {
13631363entries: {
13641364"voice-call": {
13651365enabled: true,
1366-config: { provider: "twilio" },
1366+config: {
1367+provider: "twilio",
1368+publicUrl: "https://voice.example.com/voice/webhook",
1369+},
13671370},
13681371},
13691372},
@@ -1390,16 +1393,20 @@ describe("google-meet plugin", () => {
13901393id: "twilio-voice-call-credentials",
13911394ok: true,
13921395}),
1396+expect.objectContaining({
1397+id: "twilio-voice-call-webhook",
1398+ok: true,
1399+}),
13931400]),
13941401);
13951402});
139614031397-it("reports missing voice-call wiring for Twilio transport", async () => {
1404+it("reports missing voice-call wiring for explicit Twilio transport", async () => {
13981405vi.stubEnv("TWILIO_ACCOUNT_SID", "");
13991406vi.stubEnv("TWILIO_AUTH_TOKEN", "");
14001407vi.stubEnv("TWILIO_FROM_NUMBER", "");
14011408const { tools } = setup(
1402-{ defaultTransport: "twilio" },
1409+{ defaultTransport: "chrome" },
14031410{
14041411fullConfig: {
14051412plugins: {
@@ -1418,7 +1425,7 @@ describe("google-meet plugin", () => {
14181425) => Promise<{ details: { ok?: boolean; checks?: unknown[] } }>;
14191426};
142014271421-const result = await tool.execute("id", { action: "setup_status" });
1428+const result = await tool.execute("id", { action: "setup_status", transport: "twilio" });
1422142914231430expect(result.details.ok).toBe(false);
14241431expect(result.details.checks).toEqual(
@@ -1435,6 +1442,49 @@ describe("google-meet plugin", () => {
14351442);
14361443});
143714441445+it("reports local voice-call publicUrl as unusable for Twilio transport", async () => {
1446+vi.stubEnv("TWILIO_ACCOUNT_SID", "AC123");
1447+vi.stubEnv("TWILIO_AUTH_TOKEN", "secret");
1448+vi.stubEnv("TWILIO_FROM_NUMBER", "+15550001234");
1449+const { tools } = setup(
1450+{ defaultTransport: "twilio" },
1451+{
1452+fullConfig: {
1453+plugins: {
1454+allow: ["google-meet", "voice-call"],
1455+entries: {
1456+"voice-call": {
1457+enabled: true,
1458+config: {
1459+provider: "twilio",
1460+publicUrl: "http://127.0.0.1:3334/voice/webhook",
1461+},
1462+},
1463+},
1464+},
1465+},
1466+},
1467+);
1468+const tool = tools[0] as {
1469+execute: (
1470+id: string,
1471+params: unknown,
1472+) => Promise<{ details: { ok?: boolean; checks?: unknown[] } }>;
1473+};
1474+1475+const result = await tool.execute("id", { action: "setup_status" });
1476+1477+expect(result.details.ok).toBe(false);
1478+expect(result.details.checks).toEqual(
1479+expect.arrayContaining([
1480+expect.objectContaining({
1481+id: "twilio-voice-call-webhook",
1482+ok: false,
1483+}),
1484+]),
1485+);
1486+});
1487+14381488it("opens local Chrome Meet in observe-only mode without BlackHole checks", async () => {
14391489const originalPlatform = process.platform;
14401490Object.defineProperty(process, "platform", { value: "darwin" });
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。