{"_id":"@actagent/voice-call","_rev":"4-309860208ae25e833a0ae286882a71e2","name":"@actagent/voice-call","dist-tags":{"latest":"2026.6.5"},"versions":{"2026.6.2":{"name":"@actagent/voice-call","version":"2026.6.2","_id":"@actagent/voice-call@2026.6.2","maintainers":[{"name":"nidaye0525","email":"nidaye0525@gmail.com"}],"homepage":"https://github.com/actagent/actagent#readme","bugs":{"url":"https://github.com/actagent/actagent/issues"},"dist":{"shasum":"5d849203c68c445cbc46752f7b632b91d00929e5","tarball":"https://registry.npmjs.org/@actagent/voice-call/-/voice-call-2026.6.2.tgz","fileCount":123,"integrity":"sha512-B1RYNbKSQZabOT6EKNnWaWCX1nQvgSNsHmORlJBmpxOZ5SpVXN1lCPRNueQ/EdUEKti6cIgnFKbBKjjOpzZmaw==","signatures":[{"sig":"MEQCIAkl30Pzk/BOJ+dyc5SXgIFDvc/Upth62UIbzO6uwZsJAiBQNFRa+BCtTyhNaerxJGdFbUiV+c+w0kYXRdfeeMDIvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038931},"type":"module","gitHead":"77bc85eae49cb350c8baa74e34ec3e5c3efeacb4","_npmUser":{"name":"nidaye0525","email":"nidaye0525@gmail.com"},"actagent":{"build":{"actagentVersion":"2026.6.2"},"compat":{"pluginApi":">=2026.6.2"},"install":{"npmSpec":"@actagent/voice-call","defaultChoice":"npm","minHostVersion":">=2026.4.10"},"release":{"publishToNpm":true,"publishToACTAgentHub":true},"extensions":["./index.ts"]},"repository":{"url":"git+https://github.com/actagent/actagent.git","type":"git"},"_npmVersion":"10.9.4","description":"ACTAgent voice-call plugin for Twilio, Telnyx, and Plivo phone calls.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"8.21.0","zod":"4.4.3","typebox":"1.1.39","commander":"14.0.3"},"_hasShrinkwrap":true,"devDependencies":{"actagent":"workspace:*","@actagent/plugin-sdk":"workspace:*"},"peerDependencies":{"actagent":"workspace:*"},"peerDependenciesMeta":{"actagent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/voice-call_2026.6.2_1780815237535_0.12424176397213205","host":"s3://npm-registry-packages-npm-production"}},"2026.6.3":{"name":"@actagent/voice-call","version":"2026.6.3","_id":"@actagent/voice-call@2026.6.3","maintainers":[{"name":"nidaye0525","email":"nidaye0525@gmail.com"}],"homepage":"https://github.com/actagent/actagent#readme","bugs":{"url":"https://github.com/actagent/actagent/issues"},"dist":{"shasum":"26e110a4d7c5cf3cfdc709203638e8675eac6ff3","tarball":"https://registry.npmjs.org/@actagent/voice-call/-/voice-call-2026.6.3.tgz","fileCount":123,"integrity":"sha512-u+yrEZjy5UacxTEdG3WA3Leq4oZaz9IigN7DOkfbl7PsdhHBOYvGbVg8zGx22a0dAnqdkzTDoWSaMmCXWdyFFA==","signatures":[{"sig":"MEQCIFeKnCfZFU56cmKgzaGRqOw5yOoWYF2uaL3T05rJW0+JAiAebjiaYr2I0UkWck+vxSInWtNQ9N75ek8KBHoECAGm3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038931},"type":"module","gitHead":"fb880b12fab8027ca8617032ad806f913da48b9d","_npmUser":{"name":"nidaye0525","email":"nidaye0525@gmail.com"},"actagent":{"build":{"actagentVersion":"2026.6.2"},"compat":{"pluginApi":">=2026.6.2"},"install":{"npmSpec":"@actagent/voice-call","defaultChoice":"npm","minHostVersion":">=2026.4.10"},"release":{"publishToNpm":true,"publishToACTAgentHub":true},"extensions":["./index.ts"]},"repository":{"url":"git+https://github.com/actagent/actagent.git","type":"git"},"_npmVersion":"10.9.4","description":"ACTAgent voice-call plugin for Twilio, Telnyx, and Plivo phone calls.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"8.21.0","zod":"4.4.3","typebox":"1.1.39","commander":"14.0.3"},"_hasShrinkwrap":true,"devDependencies":{"actagent":"workspace:*","@actagent/plugin-sdk":"workspace:*"},"peerDependencies":{"actagent":"workspace:*"},"peerDependenciesMeta":{"actagent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/voice-call_2026.6.3_1780856119345_0.41756308468907366","host":"s3://npm-registry-packages-npm-production"}},"2026.6.4":{"name":"@actagent/voice-call","version":"2026.6.4","_id":"@actagent/voice-call@2026.6.4","maintainers":[{"name":"nidaye0525","email":"nidaye0525@gmail.com"}],"homepage":"https://github.com/actagent/actagent#readme","bugs":{"url":"https://github.com/actagent/actagent/issues"},"dist":{"shasum":"996060d7990f02194e0455da3241b47a628fac5b","tarball":"https://registry.npmjs.org/@actagent/voice-call/-/voice-call-2026.6.4.tgz","fileCount":123,"integrity":"sha512-acXuuz6D1lint1407/c+0pPHlCRfjkpqVmsA6wNQrRoRj6bWAamX7b+3O+bM7Dq0atex7CoJfhw0vtqP6gc3fg==","signatures":[{"sig":"MEQCIBa9y8suqfLQZa7yRY+wkGQ5HrdjYbrx+S5RvNRVcnmLAiB8dNIAjwBXsQq58rI//KHwoWGxTPJmbzF0WWZ51MBMHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038931},"type":"module","gitHead":"4ff5dd5cd323035f94eb4e3fb35483eb03da74ca","_npmUser":{"name":"nidaye0525","email":"nidaye0525@gmail.com"},"actagent":{"build":{"actagentVersion":"2026.6.2"},"compat":{"pluginApi":">=2026.6.2"},"install":{"npmSpec":"@actagent/voice-call","defaultChoice":"npm","minHostVersion":">=2026.4.10"},"release":{"publishToNpm":true,"publishToACTAgentHub":true},"extensions":["./index.ts"]},"repository":{"url":"git+https://github.com/actagent/actagent.git","type":"git"},"_npmVersion":"10.9.4","description":"ACTAgent voice-call plugin for Twilio, Telnyx, and Plivo phone calls.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"8.21.0","zod":"4.4.3","typebox":"1.1.39","commander":"14.0.3"},"_hasShrinkwrap":true,"devDependencies":{"actagent":"workspace:*","@actagent/plugin-sdk":"workspace:*"},"peerDependencies":{"actagent":"workspace:*"},"peerDependenciesMeta":{"actagent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/voice-call_2026.6.4_1780860219685_0.6111619649635662","host":"s3://npm-registry-packages-npm-production"}},"2026.6.5":{"name":"@actagent/voice-call","version":"2026.6.5","description":"ACTAgent voice-call plugin for Twilio, Telnyx, and Plivo phone calls.","repository":{"type":"git","url":"git+https://github.com/actagent/actagent.git"},"type":"module","dependencies":{"commander":"14.0.3","typebox":"1.1.39","ws":"8.21.0","zod":"4.4.3"},"devDependencies":{"@actagent/plugin-sdk":"workspace:*","actagent":"workspace:*"},"peerDependencies":{"actagent":"workspace:*"},"peerDependenciesMeta":{"actagent":{"optional":true}},"actagent":{"extensions":["./index.ts"],"install":{"npmSpec":"@actagent/voice-call","defaultChoice":"npm","minHostVersion":">=2026.4.10"},"compat":{"pluginApi":">=2026.6.2"},"build":{"actagentVersion":"2026.6.2"},"release":{"publishToACTAgentHub":true,"publishToNpm":true}},"_id":"@actagent/voice-call@2026.6.5","gitHead":"ededc059e0bb8427ebbe8c766f3fbc49d190d1ac","bugs":{"url":"https://github.com/actagent/actagent/issues"},"homepage":"https://github.com/actagent/actagent#readme","_nodeVersion":"22.22.2","_npmVersion":"10.9.4","dist":{"integrity":"sha512-sFOTDvYEst2hIQe7agDgP0Ai+HNP6pg8M93RubDymUYoFH4AzccCQ7NAT5CWnnJc8/R4+g6oG+nLfmVaTnsJaQ==","shasum":"2032df43f7000fe62541d556b897650963784d03","tarball":"https://registry.npmjs.org/@actagent/voice-call/-/voice-call-2026.6.5.tgz","fileCount":123,"unpackedSize":1038931,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICECD4XeJzLAZQzBaHkQd9CiEwYaKR7ONg7o6gXeUVObAiAahdz3ZCgrsXjkRTdabzj/D7banS2HyStBSBbL2/R+bQ=="}]},"_npmUser":{"name":"nidaye0525","email":"nidaye0525@gmail.com"},"directories":{},"maintainers":[{"name":"nidaye0525","email":"nidaye0525@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/voice-call_2026.6.5_1780866461145_0.12589632564430908"},"_hasShrinkwrap":true}},"time":{"created":"2026-06-07T06:53:57.380Z","modified":"2026-06-07T21:07:41.410Z","2026.6.2":"2026-06-07T06:53:57.742Z","2026.6.3":"2026-06-07T18:15:19.500Z","2026.6.4":"2026-06-07T19:23:39.858Z","2026.6.5":"2026-06-07T21:07:41.299Z"},"bugs":{"url":"https://github.com/actagent/actagent/issues"},"homepage":"https://github.com/actagent/actagent#readme","repository":{"type":"git","url":"git+https://github.com/actagent/actagent.git"},"description":"ACTAgent voice-call plugin for Twilio, Telnyx, and Plivo phone calls.","maintainers":[{"name":"nidaye0525","email":"nidaye0525@gmail.com"}],"readme":"# @actagent/voice-call\n\nOfficial Voice Call plugin for **ACTAgent**.\n\nProviders:\n\n- **Twilio** (Programmable Voice + Media Streams)\n- **Telnyx** (Call Control v2)\n- **Plivo** (Voice API + XML transfer + GetInput speech)\n- **Mock** (dev/no network)\n\nDocs: `https://docs.actagent.ai/plugins/voice-call`\nPlugin system: `https://docs.actagent.ai/tools/plugin`\n\n## Install\n\n```bash\nactagent plugins install @actagent/voice-call\n```\n\nRestart the Gateway afterwards.\n\n## Local dev install\n\n```bash\nPLUGIN_HOME=~/.actagent/extensions\nmkdir -p \"$PLUGIN_HOME\"\ncp -R <local-plugin-checkout> \"$PLUGIN_HOME/voice-call\"\ncd \"$PLUGIN_HOME/voice-call\" && pnpm install\n```\n\n## Config\n\nPut under `plugins.entries.voice-call.config`:\n\n```json5\n{\n  provider: \"twilio\", // or \"telnyx\" | \"plivo\" | \"mock\"\n  fromNumber: \"+15550001234\",\n  toNumber: \"+15550005678\",\n  sessionScope: \"per-phone\", // or \"per-call\"\n\n  twilio: {\n    accountSid: \"ACxxxxxxxx\",\n    authToken: \"your_token\",\n  },\n\n  telnyx: {\n    apiKey: \"KEYxxxx\",\n    connectionId: \"CONNxxxx\",\n    // Telnyx webhook public key from the Telnyx Mission Control Portal\n    // (Base64 string; can also be set via TELNYX_PUBLIC_KEY).\n    publicKey: \"...\",\n  },\n\n  plivo: {\n    authId: \"MAxxxxxxxxxxxxxxxxxxxx\",\n    authToken: \"your_token\",\n  },\n\n  // Webhook server\n  serve: {\n    port: 3334,\n    path: \"/voice/webhook\",\n  },\n\n  // Public exposure (pick one):\n  // publicUrl: \"https://example.ngrok.app/voice/webhook\",\n  // tunnel: { provider: \"ngrok\" },\n  // tailscale: { mode: \"funnel\", path: \"/voice/webhook\" }\n\n  outbound: {\n    defaultMode: \"notify\", // or \"conversation\"\n  },\n\n  // Optional response agent workspace. Defaults to \"main\".\n  agentId: \"main\",\n\n  streaming: {\n    enabled: true,\n    // optional; if omitted, Voice Call picks the first registered\n    // realtime-transcription provider by autoSelectOrder\n    provider: \"<realtime-transcription-provider-id>\",\n    streamPath: \"/voice/stream\",\n    providers: {\n      \"<realtime-transcription-provider-id>\": {\n        // provider-owned options\n      },\n    },\n    preStartTimeoutMs: 5000,\n    maxPendingConnections: 32,\n    maxPendingConnectionsPerIp: 4,\n    maxConnections: 128,\n  },\n}\n```\n\nNotes:\n\n- Twilio/Telnyx/Plivo require a **publicly reachable** webhook URL.\n- `mock` is a local dev provider (no network calls).\n- Telnyx requires `telnyx.publicKey` (or `TELNYX_PUBLIC_KEY`) unless `skipSignatureVerification` is true.\n- If older configs still use `provider: \"log\"`, `twilio.from`, or legacy `streaming.*` OpenAI keys, run `actagent doctor --fix` to rewrite them.\n- advanced webhook, streaming, and tunnel notes: `https://docs.actagent.ai/plugins/voice-call`\n- `responseModel` is optional. When unset, voice responses use the runtime default model.\n- `sessionScope` defaults to `per-phone`, preserving caller memory across calls. Use `per-call` for reception, booking, IVR, and bridge flows where each carrier call should start fresh.\n- `realtime.consultThinkingLevel` is optional. When set, it overrides the thinking level used by the model behind realtime `actagent_agent_consult` calls.\n- `realtime.consultFastMode` is optional. When set, it toggles fast mode for realtime `actagent_agent_consult` calls.\n\n## Stale call reaper\n\nSee the plugin docs for recommended ranges and production examples:\n`https://docs.actagent.ai/plugins/voice-call#stale-call-reaper`\n\n## TTS for calls\n\nVoice Call uses the core `messages.tts` configuration for\nstreaming speech on calls. Override examples and provider caveats live here:\n`https://docs.actagent.ai/plugins/voice-call#tts-for-calls`\n\n## CLI\n\n```bash\nactagent voicecall call --to \"+15555550123\" --message \"Hello from ACTAgent\"\nactagent voicecall continue --call-id <id> --message \"Any questions?\"\nactagent voicecall speak --call-id <id> --message \"One moment\"\nactagent voicecall end --call-id <id>\nactagent voicecall status --json\nactagent voicecall status --call-id <id>\nactagent voicecall tail\nactagent voicecall expose --mode funnel\n```\n\n## Tool\n\nTool name: `voice_call`\n\nActions:\n\n- `initiate_call` (message, to?, mode?)\n- `continue_call` (callId, message)\n- `speak_to_user` (callId, message)\n- `end_call` (callId)\n- `get_status` (callId)\n\n## Gateway RPC\n\n- `voicecall.initiate` (to?, message, mode?)\n- `voicecall.continue` (callId, message)\n- `voicecall.speak` (callId, message)\n- `voicecall.end` (callId)\n- `voicecall.status` (callId)\n\n## Notes\n\n- Uses webhook signature verification for Twilio/Telnyx/Plivo.\n- Adds replay protection for Twilio and Plivo webhooks (valid duplicate callbacks are ignored safely).\n- Twilio speech turns include a per-turn token so stale/replayed callbacks cannot complete a newer turn.\n- `responseModel` / `responseSystemPrompt` control AI auto-responses.\n- Voice-call auto-responses enforce a spoken JSON contract (`{\"spoken\":\"...\"}`) and filter reasoning/meta output before playback.\n- While a Twilio stream is active, playback does not fall back to TwiML `<Say>`; stream-TTS failures fail the playback request.\n- Outbound conversation calls suppress barge-in only while the initial greeting is actively speaking, then re-enable normal interruption.\n- Twilio stream disconnect auto-end uses a short grace window so quick reconnects do not end the call.\n- Realtime provider selection is generic. Configure `streaming.provider` / `realtime.provider` and put provider-owned options under `providers.<id>`.\n- Runtime fallback still accepts the old voice-call keys for now, but migration is a doctor step and the compat shim is scheduled to go away in a future release.\n","readmeFilename":"README.md"}