Asterisk AI语音智能体 是 AI Skill Hub 本期精选AI工具之一。已获得 1.0k 颗 GitHub Star,综合评分 8.2 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
Asterisk AI语音智能体 是一款基于 Python 开发的开源工具,专注于 语音AI、Asterisk、PBX 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
Asterisk AI语音智能体 是一款基于 Python 开发的开源工具,专注于 语音AI、Asterisk、PBX 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:pip 安装(推荐)
pip install ava-ai-voice-agent-for-asterisk
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install ava-ai-voice-agent-for-asterisk
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk
cd AVA-AI-Voice-Agent-for-Asterisk
pip install -e .
# 验证安装
python -c "import ava_ai_voice_agent_for_asterisk; print('安装成功')"
# 命令行使用
ava-ai-voice-agent-for-asterisk --help
# 基本用法
ava-ai-voice-agent-for-asterisk input_file -o output_file
# Python 代码中调用
import ava_ai_voice_agent_for_asterisk
# 示例
result = ava_ai_voice_agent_for_asterisk.process("input")
print(result)
# ava-ai-voice-agent-for-asterisk 配置文件示例(config.yml) app: name: "ava-ai-voice-agent-for-asterisk" debug: false log_level: "INFO" # 运行时指定配置文件 ava-ai-voice-agent-for-asterisk --config config.yml # 或通过环境变量配置 export AVA_AI_VOICE_AGENT_FOR_ASTERISK_API_KEY="your-key" export AVA_AI_VOICE_AGENT_FOR_ASTERISK_OUTPUT_DIR="./output"
<picture> <source media="(prefers-color-scheme: dark)" srcset="assets/banner_dark_mode.png?v=9"> <source media="(prefers-color-scheme: light)" srcset="assets/banner_light_mode.png?v=9"> <img alt="Asterisk AI Voice Agent" src="assets/banner_light_mode.png?v=9" width="100%"> </picture>
<br> <a href="https://www.producthunt.com/products/ava-ai-voice-agent-for-asterisk?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-ava-ai-voice-agent-for-asterisk" target="_blank" rel="noopener noreferrer"><img alt="AVA - AI Voice Agent for Asterisk - Open-source AI voice agent for any phone system | Product Hunt" width="250" height="54" src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1120145&theme=light&t=1775845744279"></a>
The most powerful, flexible open-source AI voice agent for Asterisk/FreePBX. Featuring a modular pipeline architecture that lets you mix and match STT, LLM, and TTS providers, plus 6 production-ready golden baselines validated for enterprise deployment.
Managing multiple PBXs or customer installations? Explore AVA Operator — the commercial multi-installation management layer built around AVA Core, currently available as an early-access preview. AVA Core remains MIT-licensed, free, and fully functional on its own.
Quick Start • Features • Roadmap • Demo • Docs • Community
</div>
---
<details open> <summary><b>v7.5.6 — Safer outbound context, Agent hangup policies, and configured summary LLMs</b></summary>
v7.5.6 is an in-place feature and reliability release. It does not migrate databases, reassign Agents, or change Audio Profiles.
- Outbound lead context is delivered or the call fails closed — ARI origination now uses its documented variables object, restoring routing, identity, AudioSocket, AMD/consent, and campaign metadata. Nonempty lead custom_vars is bounded, confirmed before provider startup, recovered after an engine restart, and redacted from diagnostics (#613). - Hangup intent markers can be scoped per Agent — each Agent can inherit, extend, or replace the global end-of-call phrases. New calls capture an immutable policy, and Full Local negotiates call-scoped support so older servers and malformed overrides fail closed (#619). - Post-call summaries can use configured modular LLMs — each webhook can select an enabled LLM provider and configure its model readiness, timeout, word limit, and prompt. Explicit selections never fall back to another provider; summary failures leave {summary} empty while webhook delivery continues. Existing webhooks retain the legacy OpenAI behavior until configured (#618). - Summary prompts stay isolated from the live Agent persona — provider adapters receive the webhook's summary instructions as authoritative job context, and the default Groq LLM moves to openai/gpt-oss-120b.
See the v7.5.6 changelog, migration notes, and validation matrix.
</details>
<details> <summary><b>v7.5.5 — Sidebar collapse, post-call webhook variables, and configurable extension availability</b></summary>
v7.5.5 is an in-place feature release. It does not migrate databases, reassign Agents, or change Audio Profiles.
- Collapsible Admin UI sidebar — the left navigation can collapse to an icon-only rail, with hover tooltips and a persisted preference, reclaiming space on smaller displays (#596). - Pre-call variables now flow into post-call webhooks — each pre-call output variable is exposed as its own placeholder in webhook payload templates, matching prompt and in-call tool behavior (#608). - Configurable extension availability mapping — check_extension_status now classifies multiple ARI device states per extension (including operator-configured custom states for DND/away) via a configurable free/busy/unavailable mapping, with a fail-closed default and new Admin UI editors for per-extension and global state mapping (#577). - check_extension_status reliability fixes — availability fields survive JSON sanitization across all tool adapters, live-transfer channel activity is cross-checked against stale device state, and an unmapped device_state_id can no longer bypass restrict_to_configured_extensions (#577).
See the v7.5.5 changelog, migration notes, and validation matrix.
</details>
<details> <summary><b>v7.5.4 — Privacy-safe diagnostics and provider/update hardening</b></summary>
v7.5.4 is an in-place reliability and privacy release. It does not migrate databases, reassign Agents, or change Audio Profiles.
- Diagnostics are truly opt-in — disabled playback taps and full-call RCA capture perform no per-call conversion, locking, file creation, write, or cleanup deletion. Enabled paths reject symlinks, unsafe writable ancestors, and foreign ownership before audio is written. - ARI silent failures recover promptly — 10-second WebSocket ping and timeout defaults make readiness fail in about 20 seconds before normal reconnect logic takes over. - Deepgram telephony choices are coherent — Flux and Nova receive the right language fields, the UI exposes the commonly used telephony models and seven end-to-end Aura languages, and incompatible language/model/voice combinations fail before a remote session opens. - Docker status is accurate again — Docker SDK 7.1 restores Admin UI socket compatibility and detection follows rootful, rootless, TCP, and named-pipe endpoint configuration. - Updates preserve optional Local AI state — absent and unselected Local AI stays absent, while an installed stopped service can be refreshed without being started, including rollback. - Call History privacy is operator-controlled — strict, routing-visible, and explicit off modes make the redaction boundary visible without rewriting historical records (#589).
See the v7.5.4 changelog, migration notes, and validation matrix.
</details>
<details> <summary><b>v7.5.3 — One-click audio recovery and safer transfers</b></summary>
v7.5.3 focuses on getting an installation back to a known-good configuration without undoing the operator's unrelated work.
- Restore audio defaults in context — Providers, Audio Profiles, and modular Pipelines each expose their own restore action in the Admin UI. Provider restores keep credentials, models, voices, prompts, enabled state, and provider identity; profile restores keep Agent assignments; pipeline restores keep STT/LLM/TTS provider selections and non-audio options. - Backend-owned baselines — restore values come from the same canonical registry used by validation, including the supported OpenAI Realtime GA linear16/24 kHz contract. Environment-owned overrides remain visible and are never silently rewritten. - Explicit apply guidance — each restore reports whether no action, a hot reload, or an AI Engine restart is needed before new calls use the baseline. - Fail-closed dialplan transfers — extension, queue, and ring-group transfers validate known-missing targets, require a confirmed ARI handoff, and preserve ownership safely when Asterisk's response is indeterminate. FreePBX queues use the standard ext-queues context by default (#577). - Query what the agent actually did — completed in-call tools now expose a stable tool_call_id, normalized success/failure status, action, and reconcilable target_id in Call History and its API without mixing telemetry into the transcript (#587).
These recovery actions are intentionally narrow: they do not provide a global factory reset and do not change secrets or Agent routing.
See the v7.5.3 changelog for implementation and compatibility details.
</details>
<details> <summary><b>v7.5.2 — Opt-in HD Voice over 16 kHz AudioSocket</b></summary>
v7.5.2 adds a call-scoped wideband path without changing existing Agent profiles or the established 8 kHz compatibility defaults.
- Native 16 kHz AudioSocket — assign wideband_pcm_16k to an Agent to use Asterisk slin16 and rate-specific AudioSocket framing in both directions. - Provider and pipeline alignment — Grok, Google Live, Deepgram, OpenAI, ElevenLabs, Local Hybrid, and Full Local retain truthful per-call media contracts, including retries, tool continuations, interruption, and cleanup. - Fail-closed compatibility — wideband requires Asterisk 20.17+, 21.12+, 22.7+, or 23.1+ and a genuinely wideband endpoint or SIP trunk path such as G.722. ExternalMedia RTP and PSTN/G.711 calls remain on an 8 kHz profile. - Simple rollback — switch the Agent back to telephony_ulaw_8k or telephony_enhanced_8k; no global transport or provider-default change is required.
See the v7.5.2 changelog, v7.5.2 migration notes, and v7.5.2 validation matrix.
</details>
<details> <summary><b>v7.5.1 — Safer Admin apply and complete call history</b></summary>
The v7.5.1 hotfix focuses on recovery and observability without changing audio profiles, provider transport, or fresh-install defaults.
- Recoverable Apply Changes — the Admin UI prepares its updater runner before touching a live service and restores the previous image and container environment if a Compose replacement fails or does not become healthy. - Complete realtime transcripts — OpenAI and Grok keep assistant transcript state separate from interleaved caller-final events, preventing clipped prefixes in Call History and post-call consumers. - Apply instead of unnecessary restart — tool-only edits advertise and use hot reload for new calls. Provider, environment, and process-level changes remain on the restart/recreate path.
No database migration or audio-profile reassignment is required. Existing stored transcripts are not rewritten.
See the v7.5.1 changelog and v7.5.1 migration notes.
</details>
<details> <summary><b>v7.5.0 — Enhanced telephony audio and VICIdial integration 🎧</b></summary>
v7.5.0 improves narrowband call audio without changing the established 8 kHz Asterisk wire contract, and adds a production-oriented VICIdial Remote Agent integration.
- Opt-in enhanced telephony audio — assign telephony_enhanced_8k to an Agent to use stateful band-limited downsampling for cleaner G.711 playback. Existing profiles keep their compatibility behavior, and switching back to telephony_ulaw_8k is the immediate rollback. - Consistent provider and pipeline policy — hosted providers and modular TTS pipelines inherit the Agent's Audio Profile by default, expose narrow troubleshooting overrides, and validate incompatible encoding, rate, resampler, overlap, and segmentation combinations before apply. - Safer interruption and teardown — resampler state is isolated per call and reset across responses, interruptions, and cleanup; replaced streams cannot be removed by stale cleanup; and late pipeline output is blocked after call teardown takes ownership. - VICIdial Remote Agents — VICIdial remains authoritative for campaigns, customer channels, reporting, dispositions, DNC, callbacks, and transfers, while AAVA supplies the mapped AI Agent with fail-closed ownership checks and sanitized lifecycle evidence. - More recoverable upgrades — the host recovery script handles mixed Git ownership, stale updater images, /root traversal constraints, and tracked local edits while preserving bounded backups and exact release targeting.
See the v7.5.0 changelog, Audio Profiles, and VICIdial Remote Agent setup for details.
</details>
<details> <summary><b>v7.4.1 — Reliable, simpler outbound calling 📞</b></summary>
Outbound campaigns are easier to prepare, safer to schedule, and much easier to troubleshoot from the Admin UI.
- Simpler lead intake — import validated CSV or Excel .xlsx files, or add individual leads manually. Samples and new campaigns use the canonical AI_AGENT/agent routing model while legacy AI_CONTEXT/context inputs remain compatible. - Safer campaign scheduling — scheduled calls consistently receive the lead's called number, malformed timezone or calling-window settings fail closed, campaign concurrency is counted correctly, and stale attempts recover through one validated timeout policy. - More reliable human handling — human-first AMD defaults reduce false voicemail classification, and terminal farewell/hangup handling prevents new caller input from reviving a call that is already ending. - Better HTTP-tool workflows — pre-call, in-call, and post-call HTTP tools enforce method/body compatibility; pre-call output variables remain available for enriched greetings; and bounded, sanitized tool responses and diagnostics are visible in Call History and Scheduling. - Safer upgrades — updater recovery now handles older Git installations, Docker Compose access after privilege drops, and mixed-ownership checkouts more predictably without sacrificing local tracked changes.
See the Outbound Calling guide and v7.4.1 changelog for details.
</details>
<details> <summary><b>v7.4.0 — Agent-scoped tools and Agent-only routing 🧰</b></summary>
Each Agent can now receive only the transfer destinations, calendars, and voicemail mailboxes it should be allowed to use.
- Per-Agent resource access — configure the global inventory on Tools, then choose Inherit, Selected, or None under Agents → Edit Agent → Tools for the transfer family, Google Calendar, Microsoft Calendar, and voicemail. - One enforced call snapshot — provider schemas, prompt guidance, execution, deferred transfers, and audit metadata all use the same effective resource set. Empty or stale selections fail closed, and a globally disabled tool always wins. - Restart-free tool updates — Tools → Save & Apply validates and publishes a new tool generation for new calls. Active calls keep the generation they started with; a failed build leaves the previous generation running. - Contexts retired — runtime persona routing now reads Agents from agents.db. Legacy YAML Contexts are imported atomically on upgrade, and AI_CONTEXT remains a deprecated compatibility alias while dialplans move to AI_AGENT. - Cleaner first run — empty installations start with Receptionist, Sales, and Support instead of a collection of demonstration Contexts. - Call History compatibility — tool names remain google_calendar, microsoft_calendar, and leave_voicemail, so existing filters and reports keep working.
Before upgrading—especially from v7.3.0–v7.3.3—read the current upgrade procedure and Contexts → Agents migration guide.
</details>
<details> <summary><b>v7.3.5 — Caller connection ringback 📞</b></summary>
Callers no longer wait through silent provider or pipeline startup.
- Per-agent ringback control — enable Play ringback while connecting in the Agents UI; tone:ring is supplied as the default repeating Asterisk tone. - One implementation for every call path — full-agent providers and modular pipelines share the same caller-only lifecycle, without sending setup audio to the AI provider. - Clean audio handoff — ringback stops on the first provider or pipeline greeting audio and is also cleared on no-greeting readiness, startup failure, disconnect, or call cleanup. - Safe and opt-in — existing agents remain unchanged until the setting is enabled. YAML/API users may configure an Asterisk-local tone:, sound:, or recording: media URI.
See Connection Audio / Ringback and the v7.3.5 changelog.
</details>
<details> <summary><b>v7.3.3 — Local AI stabilization 🧠</b></summary>
v7.3.3 is a Local-AI-only stabilization release. It adds no providers and keeps the cloud-provider call paths unchanged.
- Calls are isolated by session — agent prompts and conversation state no longer mutate shared Local AI Server configuration or leak across reused WebSocket connections. AI Engine and Local AI Server should be upgraded together; the legacy unscoped switch remains temporarily compatible. - Barge-in abandons interrupted output — late LLM/TTS work is quarantined, the interrupted exchange is removed from weak-model history, and the replacement turn stays focused on what the caller just said. - Farewells finish exactly once — Local hangup_call speaks the selected Kokoro/Piper/etc. farewell without a second LLM rewrite, drains partial AudioSocket or RTP tails, records agent_hangup, and then disconnects. - CPU/GPU deployment is safer — dependency pins, CUDA/cuDNN validation, optional llama.cpp architecture targeting, and idempotent preflight checks reduce first-build and rerun failures. - Community GPU evidence — Tesla V100S testing passed Faster-Whisper CUDA float16, Llama 3.1 8B Q4_K_M, Kokoro, AudioSocket, ExternalMedia, barge-in, terminal hangup, concurrent session isolation, and restart recovery.
See the Local AI community test matrix and the Unreleased changelog for the complete scope.
</details>
<details> <summary><b>v7.3.2 — stabilization release 🛡️</b></summary>
v7.3.2 is a stabilization-only patch release built from the supervised AudioSocket and ExternalMedia validation cycle.
- No new providers — scope is limited to reliability, deployment safety, documentation, and contributor-facing CI. - Grok ExternalMedia repaired — clean barge-in, cancelled-output quarantine, named-instance runtime inheritance, complete replacement turns, and exact inactivity announcements through xAI force_message. - AudioSocket and modular pipelines hardened — terminal playback, pipeline producer ownership, talk-detect echo, and inactivity-grace regressions are covered by focused tests and supervised calls. - Updater and provider-failure recovery hardened — safer ownership, rollback/stash handling, readiness validation, and an opt-in dialplan redirect. - PR quality gates expanded — Admin backend/frontend checks and CLI cross-compilation now run before merge.
Release evidence and remaining gates are tracked in the v7.3.2 validation matrix.
</details>
<details> <summary><b>v7.3.1 — Silence watchdog & safe call endings ☎️</b></summary>
AVA now protects silent calls and finishes every terminal message before disconnecting.
hangup_call farewells drain AudioSocket or ExternalMedia/RTP streaming buffers and ARI file playback before ARI disconnects the caller. Fixed sleeps no longer clip long final sentences.See Caller inactivity configuration, ElevenLabs setup, and the full v7.3.1 changelog.
</details>
<details> <summary><b>v7.3.0 — Per-agent voices 🎙️</b></summary>
Voice now belongs to agents. Configure one provider, create multiple agents that share it — each with its own voice.
Thanks @foytech for seeding this feature (#497). Full guide: docs/VOICE_SELECTION.md.
</details>
<details> <summary><b>v7.2.0 — Live-status dashboard 📡</b></summary>
Real-time system status for the Admin UI — pushed, not polled.
/api/live-status snapshot endpoint plus an SSE stream (/api/live-status/stream) aggregates AI Engine health, Local AI connectivity, active sessions, audio directories, platform checks, and Asterisk ARI into one normalized status feed.ai_engine and local_ai_server push their own readiness to the Admin UI (POST /api/live-status/publish, authenticated with LIVE_STATUS_PUSH_TOKEN), so the dashboard converges in sub-second time after a restart instead of waiting on staggered polls. Legacy /api/system/* probes remain as fallback/enrichment.LIVE_STATUS_POLL_INTERVAL_SECONDS (default 30 s, min 2 s) and LIVE_STATUS_INITIAL_PROBE_TIMEOUT_SECONDS (default 2 s), read live from .env.Full notes in CHANGELOG.md.
</details>
<details> <summary><b>v7.1.1 — Dashboard reliability & Admin UI polish 🛠️</b></summary>
A focused quality release across the Admin UI — no call-path changes.
console.logs (including one that leaked the auth token to the browser console) were removed.google_live: { type: full } provider can be edited and saved again.Full notes in CHANGELOG.md.
</details>
<details> <summary><b>v7.0.0 — the Agents release 🎯</b></summary>
The biggest release yet: manage your AI agents from the Admin UI, not a config file.
AI_AGENT dialplan variable — route a call to an agent by name. Your existing AI_CONTEXT dialplans keep working unchanged.agents.db before later major-version upgrades; see the operator migration guide for rollback boundaries.admin/admin: a one-time admin password is generated and must be changed at first login. Config exports no longer bundle your .env by default.⚠️ Major release — please read the Upgrade Notes before upgrading from 6.x.
</details>
<details> <summary><b>v6.5.4 (2026-05-25) — OpenAI Realtime GA cleanup across every code path</b></summary>
Follow-up to the v6.5.3 hotfix. v6.5.3 only flipped config/ai-agent.yaml; v6.5.4 brings the rest of the codebase in line:
src/config.py now default to api_version: ga + model: gpt-realtime (so fresh wizard installs are correct).gpt-realtime-1.5 (best audio-in/audio-out quality), gpt-realtime-2 (reasoning voice model, GPT-5-class), and gpt-realtime-mini (cost-optimized) — alongside the existing gpt-realtime.api_version: beta is detected in config (exactly once per provider lifetime, not per reconnect attempt).docs/Provider-OpenAI-Setup.md model section + fix to docs/TROUBLESHOOTING_GUIDE.md.</details>
<details> <summary><b>v6.5.3 hotfix (2026-05-25) — OpenAI Realtime restored</b></summary>
OpenAI sunset the Realtime Beta API on 2026-05-12 and removed the gpt-4o-realtime-preview-2024-12-17 model on 2026-05-07. Shipped config/ai-agent.yaml still pinned api_version: beta + that preview model, so every operator using OpenAI Realtime hit error.code: beta_api_shape_disabled and the WebSocket closed immediately. Two-line config flip — no code change required. The provider's GA wire-protocol path has shipped since v6.0.0; v6.5.3 just makes it the default everyone gets:
api_version: ga (was beta)model: gpt-realtime (was gpt-4o-realtime-preview-2024-12-17)If you have an ai-agent.local.yaml that explicitly pins api_version: beta, remove the override or change it to ga. Refs: OpenAI deprecations, gpt-realtime.
</details>
<details> <summary><b>v6.5.2 (2026-05-24) — xAI Grok + multi-instance full-agent providers</b></summary>
setup, check, rca, update, version commands (legacy aliases: init, doctor, troubleshoot).config/ai-agent.yaml), ExternalMedia RTP, and opt-in, version-gated Asterisk Media WebSocket (see the transport matrix).ai_engine and local_ai_server containers./metrics scraping.Alpha — scheduled campaigns, voicemail drop, consent gateCommunity — community-maintained guideAlpha — VICIdial-owned calling with AAVA as a Remote AgentAlpha = usable but still hardening. Community = contributed and community-validated, not maintainer-tested on every release. Features without a label are stable.
docker compose -p asterisk-ai-voice-agent up -d --build ai_engine
| Requirement | Details |
|---|---|
| **Architecture** | x86_64 (AMD64) only |
| **OS** | Linux with systemd |
| **Supported Distros** | Ubuntu 20.04+, Debian 11+, RHEL/Rocky/Alma 8+, Fedora 38+, Sangoma Linux |
Note: ARM64 (Apple Silicon, Raspberry Pi) is not currently supported. See Supported Platforms for the full compatibility matrix.
| Type | CPU | RAM | GPU | Disk |
|---|---|---|---|---|
| **Cloud** (OpenAI/Deepgram) | 2+ cores | 4GB | None | 1GB |
| **Local Hybrid** (cloud LLM) | 4+ cores | 8GB+ | None | 2GB |
| **Fully Local** (CPU) | 4+ cores (2020+) | 8-16GB | None | 5GB |
| **Fully Local** (GPU) | 4+ cores | 8-16GB | RTX 3060+ | 10GB |
GPU users: If you have an NVIDIA GPU for local AI inference, see docs/LOCAL_ONLY_SETUP.md for the GPU compose overlay (docker-compose.gpu.yml) before building.
```bash
For users who prefer the command line or need headless setup.
```bash
```
Key Features: - Setup Wizard: Visual provider configuration. - Dashboard: Real-time system metrics, container status, and Asterisk connection indicator. - Asterisk Setup: Live ARI status, module checklist, config audit with guided fix commands. - Live Logs: WebSocket-based log streaming. - YAML Editor: Monaco-based editor with validation.
---
Get the Admin UI running in 2 minutes.
For a complete first successful call walkthrough (dialplan + transport selection + verification), see: - Installation Guide - Transport Compatibility - WebSocket Transport Setup — opt-in authenticated transport; qualify the intended provider, codec, and topology
```yaml
| Guide | For |
|---|
sudo ./preflight.sh --apply-fixes ```
Important: Preflight creates your.envfile and generates a secureJWT_SECRET. Always run this first!
./install.sh
agent setup
Note: Legacy commandsagent init,agent quickstart,agent doctor,agent troubleshoot, andagent demoremain as hidden compatibility aliases. New workflows should use the visible commands documented indocs/CLI_TOOLS_GUIDE.md.
cp .env.example .env
Add this to your FreePBX (extensions_custom.conf):
[from-ai-agent]
exten => s,1,NoOp(Asterisk AI Voice Agent)
; AI_AGENT selects an operator-managed agent by slug.
same => n,Set(AI_AGENT=sales-agent)
; Optional: override that agent's configured provider/pipeline for this call.
; same => n,Set(AI_PROVIDER=google_live)
same => n,Stasis(asterisk-ai-voice-agent)
same => n,Hangup() Notes: - Use AI_AGENT to select an operator-managed agent. Its configured target is authoritative unless AI_PROVIDER is intentionally set as a per-call override. - Generate a current snippet with agent dialplan --agent <slug>. - See docs/FreePBX-Integration-Guide.md for channel variable precedence and examples.
1. OpenAI Realtime (Recommended for Quick Start) - Modern cloud AI with natural conversations (<2s response). - Config: config/ai-agent.golden-openai.yaml - Best for: Enterprise deployments, quick setup.
2. Deepgram Voice Agent (Enterprise Cloud) - Advanced Deepgram-managed Think stage for complex reasoning (<3s response); requires only a Deepgram API key. - Config: config/ai-agent.golden-deepgram.yaml - Best for: Deepgram ecosystem, advanced features.
3. Google Live API (Multimodal AI) - Gemini Live (Flash) with multimodal capabilities (<2s response). - Config: config/ai-agent.golden-google-live.yaml - Best for: Google ecosystem, advanced AI features.
4. ElevenLabs Agent (Premium Voice Quality) - ElevenLabs Conversational AI with premium voices (<2s response). - Config: config/ai-agent.golden-elevenlabs.yaml - Best for: Voice quality priority, natural conversations.
5. Local Hybrid (Privacy-Focused) - Local STT/TTS + Cloud LLM (OpenAI). Audio stays on-premises. - Config: config/ai-agent.golden-local-hybrid.yaml - Best for: Audio privacy, cost control, compliance.
6. Telnyx AI Inference (Cost-Effective Multi-Model) - Local STT/TTS + Telnyx LLM with 53+ models (GPT-4o, Claude, Llama). - OpenAI-compatible API with competitive pricing. - Config: config/ai-agent.golden-telnyx.yaml - Best for: Model flexibility, cost optimization, multi-provider access.
7. xAI Grok Voice Agent (Realtime Voice) - xAI realtime voice with five named voices (eve/ara/rex/sal/leo) or a custom cloned voice; μ-law @ 8 kHz caller input and observed PCM16 @ 24 kHz output converted for Asterisk. - Config: config/ai-agent.golden-grok.yaml - Best for: xAI ecosystem, telephony-native low-latency audio.
AVA also supports a Fully Local mode (100% on-premises, no cloud APIs). Three topologies are supported:
| Topology | Latency | Best For |
|---|---|---|
| **CPU-Only** | 5-15s/turn | Privacy, testing |
| **GPU (same box)** | 0.5-2s/turn | Production local |
| **Split-Server** (remote GPU) | 1-3s/turn | PBX on VPS + GPU box |
GPU setup uses docker-compose.gpu.yml overlay with CUDA-enabled llama.cpp. Community-validated: RTX 4090 achieves ~1.0s E2E.
config/ai-agent.yaml - Golden baseline configs (git-tracked, upstream-managed).config/ai-agent.local.yaml - Operator overrides (git-ignored). Any keys here are deep-merged on top of the base file at startup; all Admin UI and CLI writes go here so upstream updates never conflict..env - Secrets and API keys (git-ignored).Example .env:
OPENAI_API_KEY=sk-your-key-here
DEEPGRAM_API_KEY=your-key-here
ASTERISK_ARI_USERNAME=asterisk
ASTERISK_ARI_PASSWORD=your-password
The engine exposes Prometheus-format metrics on its health/metrics HTTP endpoint at /metrics (port 15000). This endpoint binds to 127.0.0.1 by default, so it is only reachable from the engine host — scrape it locally, or set the health endpoint host to 0.0.0.0 (and firewall it) to expose it to an external Prometheus. Per-call debugging is handled via Admin UI → Call History.
---
Run your own local LLM using Ollama - perfect for privacy-focused deployments:
```yaml
Production-ready CLI for operations and setup.
Installation:
curl -sSL https://raw.githubusercontent.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk/main/scripts/install-cli.sh | bash
Commands:
agent setup # Interactive setup wizard (recommended)
agent setup --list-targets # List configured providers and pipelines without changes
agent check # Standard diagnostics report (share this output when asking for help)
agent check --local # Verify local AI server (STT, LLM, TTS) on this host
agent check --remote <ip> # Verify local AI server on a remote GPU machine
agent update # Pull latest code + rebuild/restart as needed
agent rca --call <call_id> --no-llm # Deterministic post-call RCA
agent config validate # Validate provider, pipeline, transport, and audio configuration
agent dialplan --agent default # Generate an AI_AGENT dialplan snippet
agent version # Version information
---
| Tool | Description | Status |
|---|---|---|
transfer | Transfer to extensions, queues, or ring groups | ✅ |
cancel_transfer | Cancel in-progress transfer (during ring) | ✅ |
hangup_call | End call gracefully with farewell message | ✅ |
leave_voicemail | Route caller to voicemail extension | ✅ |
send_email_summary | Auto-send call summaries to admins | ⚙️ Disabled by default |
request_transcript | Caller-initiated email transcripts | ⚙️ Disabled by default |
AVA-AI-Voice-Agent-for-Asterisk 是一个专为 Asterisk 设计的 AI 语音代理项目。它通过集成先进的 AI 技术,为传统的电话系统注入智能化能力,实现自动化的语音交互与任务处理,旨在为开发者和企业提供高效、智能的语音通信解决方案。
v6.5.2 版本带来了多项重大更新。技术层面,引入了强大的 Tool Calling System,支持通过 AI 驱动的操作(如转接、发送邮件)与任何 Provider 协作;新增了 Agent CLI 工具集(包含 setup、check、rca 等命令)以优化运维;采用模块化 Pipeline 系统,允许独立选择 STT、LLM 和 TTS 供应商;同时支持 AudioSocket 和 ExternalMedia RTP 双重传输模式,确保了极高的灵活性。
本项目对硬件架构有明确要求,仅支持 x86_64 (AMD64) 架构。操作系统需为支持 systemd 的 Linux 发行版,包括 Ubuntu 20.04+、Debian 11+、RHEL/Rocky/Alma 8+、Fedora 38+ 以及 Sangoma Linux。在运行前,请确保已通过 Docker Compose 启动 ai_engine 以进行健康检查。
安装过程支持多种模式。推荐使用交互式 CLI 进行安装(执行 `./install.sh agent setup`),或通过官方脚本安装生产级 Agent CLI 工具。对于拥有 NVIDIA GPU 的用户,在构建前需参考 LOCAL_ONLY_SETUP.md 并使用 docker-compose.gpu.yml 进行 GPU 叠加配置。此外,也支持通过手动配置环境的方式进行部署。
项目提供了快速启动指南,帮助用户在 2 分钟内运行起 Admin UI。对于需要完成首次成功通话(包括 Dialplan 配置、传输模式选择及验证)的用户,请务必参考 Installation Guide 和 Transport Compatibility 文档。此外,系统还支持通过 HTTP Tools 进行通话前、通话中及通话后的自动化流程控制。
配置阶段至关重要。在正式运行前,必须先执行 `sudo ./preflight.sh --apply-fixes` 进行预检并自动修复,该脚本会自动创建 `.env` 文件并生成安全的 `JWT_SECRET`。用户可以通过交互式 CLI 进行环境配置,并根据需求在配置文件中定义不同的 AI 供应商与传输参数。
本项目支持高度的隐私保护与本地化部署。通过集成 Ollama,用户可以运行完全自托管的本地 LLM,无需依赖外部 API Key 即可实现智能对话。这对于对数据隐私要求极高的企业级部署场景非常友好,同时也为开发者提供了灵活的接口调用能力。
系统具备强大的工作流集成能力。通过 Email Integration 模块,管理员可以自动接收通话摘要、全文转录及元数据;用户甚至可以通过语音指令(如“请把通话记录发到我的邮箱”)触发转录发送。内置的 Tool 模块支持 `transfer`(转接到分机、队列或环路组)等多种功能,实现了从语音识别到业务执行的闭环。
融合Asterisk与现代AI技术的优秀项目。架构清晰,社区活跃,填补PBX智能化空白。生产级应用潜力大,维护持续。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,Asterisk AI语音智能体 在AI工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | AVA-AI-Voice-Agent-for-Asterisk |
| 原始描述 | 开源AI工作流:An open-source AI Voice Agent that integrates with Asterisk/FreePBX using Audios。⭐1.0k · Python |
| Topics | 语音AIAsteriskPBX电话交换工作流自动化 |
| GitHub | https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk |
| License | MIT |
| 语言 | Python |
收录时间:2026-05-25 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。