
AI Phone Agent
https://github.com/mksglu/ai-phone-agent- Category
- AI Agents
- Rank
- No. 2158Tools index
Previous survey · No. 2091 ·
- Pricing
- Open Source
- Type
- AGENT
- Builder
- mksglu
- GitHub
- 4 stars
- Date
About
AI-powered phone agent for handling voice calls.
What it does
This proof of concept assembles a phone receptionist from FreeSWITCH, a TypeScript bridge, and OpenRouter. Calls arrive through SIP or its browser phone. The bridge records each turn, transcribes it, sends conversation history to a language model, converts the reply into audio, and can transfer callers to a person.
Why it's ranked here
It demonstrates the whole call path instead of stopping at a chatbot demo. SIP handling, browser calling, transcription, conversation state, speech output, transfers, monitoring, and call records are represented. The verdict is mixed because the primary flow is deliberately short and the real-time path still substitutes dummy transcription and a tone for working speech services.
What's good
The repository makes telecom boundaries visible. FreeSWITCH owns signaling and media while the TypeScript service owns dialogue and call state. The browser phone lowers the barrier to local testing. OpenRouter failures fall back to keyword replies, generated speech has a valid silent-audio fallback, shutdown covers all three servers, and per-call JSON records preserve operational context.
Tradeoffs
The turn-based flow records fixed five-second segments and ends after three turns, so conversation cannot feel continuous. Primary speech generation depends on macOS tools, while its fallback may play silence. The streaming path detects speech and moves audio bidirectionally, but transcription is hard-coded to a greeting and speech output is only a short tone. Local WebRTC also requires manual network configuration and has no STUN service.
How to use it well
Use it to learn or prototype the boundary between SIP infrastructure and language-model orchestration on a local macOS development machine. Start with the browser phone, inspect active calls and call records, then replace the streaming speech placeholders before testing realistic traffic. It suits engineers evaluating call flow and transfer mechanics. It does not supply production speech streaming, hosted telephony, or a deployment-ready receptionist service.
Technical notes+
src/index.ts starts the EslServer on port 9090, WsServer on 3001, and Dashboard on 3002 with one shared AiEngine. src/call-handler.ts implements the working record, STT, LLM, TTS, playback, transfer loop with MAX_TURNS set to 3. src/stt-engine.ts copies recordings from the FreeSWITCH container and submits base64 WAV audio to OpenRouter. src/tts-engine.ts invokes macOS say, then tries afconvert, ffmpeg, or sox, with manual silent WAV generation as the final fallback. src/stream-handler.ts has energy-based VAD and buffering, but sttPlaceholder returns "hello" and ttsPlaceholder emits a 440 Hz tone. src/dashboard.ts serves the browser phone, monitoring HTML, and read-only JSON endpoints. package.json defines an ES module TypeScript application with build, development, and start scripts.
Observed
- Primary language
- TypeScript running on Node.js
- Install surface
- npm project installed with npm install; FreeSWITCH development environment uses Docker Compose
- Call interfaces
- Inbound SIP softphone and browser-based WebRTC phone
- Service interfaces
- FreeSWITCH ESL outbound socket, bidirectional WebSocket audio, and read-only HTTP JSON monitoring endpoints
- Platform support
- Primary text-to-speech path requires macOS say and afconvert; ffmpeg and sox conversion fallbacks are implemented
- External service
- OpenRouter provides language-model chat and recorded-audio transcription
- Structural observation
- The supplied repository tree lists no test directory or test script
Read from README.md, package.json, src/index.ts, src/types.ts, src/ai-engine.ts, src/dashboard.ts, src/ws-server.ts, src/cdr-logger.ts, src/esl-server.ts, src/stt-engine.ts, src/tts-engine.ts, src/call-handler.ts, src/stream-handler.ts, src/transfer-handler.ts.
What it can do
Answer incoming phone calls automatically
Incoming voice call → Automated voice response
Convert speech to text during calls
Caller's voice audio → Transcribed text
Generate natural language responses to caller questions
Caller's questions or requests → Contextual voice responses
Route calls to appropriate departments or agents
Caller intent and routing rules → Call transfer to designated recipient
Schedule appointments or meetings
Caller's scheduling request and availability → Confirmed appointment booking
Collect and record customer information
Caller-provided personal or business details → Structured customer data record
Provide automated customer support responses
Customer support inquiries → Relevant help information and solutions
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.