能力标签
Asterisk AI语音智能体
🛠
AI工具

Asterisk AI语音智能体

基于 Python · 开源 AI 工具,GitHub 社区精选
英文名:AVA-AI-Voice-Agent-for-Asterisk
⭐ 1.0k Stars 🍴 214 Forks 💻 Python 📄 MIT 🏷 AI 8.2分
8.2AI 综合评分
语音AIAsteriskPBX电话交换工作流自动化
✦ AI Skill Hub 推荐

Asterisk AI语音智能体 是 AI Skill Hub 本期精选AI工具之一。已获得 1.0k 颗 GitHub Star,综合评分 8.2 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。

📚 深度解析

Asterisk AI语音智能体 是一款基于 Python 的开源工具,在 GitHub 上收获 1k+ Star,是语音AI、Asterisk、PBX、电话交换领域中的优质开源项目。开源工具的最大优势在于代码完全透明,你可以审计每一行代码的安全性,也可以根据自身需求进行二次开发和定制。

**为什么要使用开源工具而非商业 SaaS?**
对于个人开发者和有隐私需求的用户,本地部署的开源工具意味着数据不离本机,不受第三方服务商的数据政策约束。同时,开源工具通常没有使用次数限制和月度费用,一次安装即可长期使用,对于高频使用场景的总拥有成本(TCO)远低于订阅制商业工具。

**安装与环境准备**
Asterisk AI语音智能体 依赖 Python 运行环境。建议通过 pyenv(Python)或 nvm(Node.js)管理 Python 版本,避免全局环境污染。对于新手用户,推荐先创建虚拟环境(python -m venv venv && source venv/bin/activate),再安装依赖,这样即使出现问题也可以随时删除虚拟环境重新开始,不影响系统稳定性。

**社区与维护**
GitHub Issue 和 Discussion 是获取帮助的最快渠道。在提问前建议先检查 Closed Issues(已关闭的问题),大多数常见问题都已有解答。遇到 Bug 时,提供 pip list 的输出、完整错误堆栈和最小可复现示例,能显著提高开发者响应速度。AI Skill Hub 将持续追踪 Asterisk AI语音智能体 的版本更新,及时通知重要功能变化。

📋 工具概览

Asterisk AI语音智能体 是一款基于 Python 开发的开源工具,专注于 语音AI、Asterisk、PBX 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。

GitHub Stars
⭐ 1.0k
开发语言
Python
支持平台
Windows / macOS / Linux
维护状态
正常维护,社区驱动
开源协议
MIT
AI 综合评分
8.2 分
工具类型
AI工具
Forks
214

📖 中文文档

以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

Asterisk AI语音智能体 是一款基于 Python 开发的开源工具,专注于 语音AI、Asterisk、PBX 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。

📌 核心特色
  • 开源免费,支持本地部署,数据完全自主可控
  • 活跃的 GitHub 开源社区,持续迭代更新
  • 提供详细文档和使用示例,新手友好
  • 支持自定义配置,灵活适配不同使用环境
  • 可作为基础组件集成进现有技术栈或进行二次开发
🎯 主要使用场景
  • 本地部署运行,保护数据隐私,满足合规要求
  • 自定义集成到现有系统,扩展技术栈能力
  • 作为开源基础组件进行商业化二次开发
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 方式一: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('安装成功')"
📋 安装步骤说明
  1. 访问 GitHub 仓库页面
  2. 按照 README 文档完成依赖安装
  3. 根据系统环境完成初始化配置
  4. 参考官方示例或文档开始使用
  5. 遇到问题可在 GitHub Issues 中查找解答
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 命令行使用
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"
📑 README 深度解析 真实文档 完整度 87/100 含工作流图 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

简介

<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>

Version License Python Docker Asterisk Ask DeepWiki Discord <br> <a href="https://www.producthunt.com/products/ava-ai-voice-agent-for-asterisk?embed=true&amp;utm_source=badge-featured&amp;utm_medium=badge&amp;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&amp;theme=light&amp;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 StartFeaturesRoadmapDemoDocsCommunity

</div>

---

🎉 What's New

<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 mappingcheck_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 updatesTools → 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.

  • 30-second inbound inactivity protection by default — AVA asks “Are you still there?”, waits 15 seconds for a reply, then speaks a configurable final warning and ends the call. Outbound agents remain opt-in.
  • The agent keeps its configured voice — check-ins and final warnings are synthesized by the active Google Live, OpenAI Realtime, Grok, Deepgram, ElevenLabs, local full-agent, or pipeline voice.
  • Transport-safe hangup — watchdog and 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.
  • Deepgram and ElevenLabs lifecycle fixes — Deepgram control frames no longer split greetings, and ElevenLabs response-completion plus hosted-silence handling keeps AVA's watchdog authoritative.
  • Global and per-agent controls — configure defaults under Advanced Settings → Voice Activity Detection → Caller Inactivity, then optionally override them per agent. Call History labels watchdog endings as No input timeout.

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.

  • Provider-aware voice picker in the Agent form: a dropdown of OpenAI's 10 GA voices, suggestions + custom clone IDs for Grok, Google Live's 30 prebuilt voices, Deepgram's Aura models — the control adapts to the agent's selected AI Engine.
  • Provider-specific safety — the provider-level voice becomes the default voice; agents without one behave exactly as before. OpenAI and Google log and fall back for unknown values. Deepgram preserves a configured Aura value for review but fails the call before connection when the voice is unknown or its language does not match the Deepgram Agent language.
  • Observable — every call logs the resolved voice and its source, and Call History shows "Voice: marin (from agent)" per call.
  • Agent voice changes apply instantly — no engine restart.

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.

  • Live-status hub — a single /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.
  • Push-firstai_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.
  • ConfigurableLIVE_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.

  • Dashboard reliability — the Asterisk status pill no longer flaps on a transient ARI blip: it reads the engine's authoritative, reconnect-supervised ARI state and applies hysteresis. The system endpoints the Dashboard polls every 5s no longer block the admin event loop, the heaviest is TTL-cached, polling backs off on errors, failed polls surface in the error banner, and a single bad poll no longer flashes cards to "Loading…".
  • No more "Loading configuration…" flash — ~11 config pages now seed from a shared stale-while-revalidate cache of the config document, so revisiting a settings page is instant.
  • Accessibility (WCAG AA) — form labels programmatically associated with inputs, a focus-trapping modal, a navigation landmark + "skip to content" link, accessible names on icon-only buttons, non-colour status cues on the topology, a visible dark-mode toggle on-state, and light-mode contrast fixes. Debug console.logs (including one that leaked the auth token to the browser console) were removed.
  • Prompt editor — configured tool names are colour-coded by their in-call status (enabled / global / not-enabled) as you type.
  • Fix (#436) — a canonical 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.

  • 🤖 Agents tab — create, edit, and manage agents in the UI. Start from a template (receptionist, after-hours, appointment booker, and more), set the prompt and provider, and copy a ready-to-paste dialplan snippet.
  • 📊 Multi-agent dashboard — live KPIs (active agents, active calls, calls routed, transfers), per-agent stats, and routing breakdowns at a glance.
  • ☎️ New AI_AGENT dialplan variable — route a call to an agent by name. Your existing AI_CONTEXT dialplans keep working unchanged.
  • 🔄 Automatic migration — your existing contexts move into a local agents database on first start. Back up agents.db before later major-version upgrades; see the operator migration guide for rollback boundaries.
  • 🔒 Security hardening — no more 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:

  • Pydantic defaults in src/config.py now default to api_version: ga + model: gpt-realtime (so fresh wizard installs are correct).
  • Admin UI "Add Provider" template for OpenAI Realtime no longer seeds the sunset preview model.
  • Model dropdown removes the 5 sunset preview options and adds 3 new GA models — 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.
  • Legacy preview values in operator YAML now render in a "Custom (legacy — will not connect)" optgroup with a yellow warning banner above the form so the broken state is visible without silently swapping the operator's config.
  • Engine emits a one-shot warning when api_version: beta is detected in config (exactly once per provider lifetime, not per reconnect attempt).
  • Docs: full rewrite of 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>

✨ Features

Technical Features

  • Tool Calling System: AI-powered actions (transfers, emails) work with any provider.
  • Agent CLI Tools: setup, check, rca, update, version commands (legacy aliases: init, doctor, troubleshoot).
  • Modular Pipeline System: Independent STT, LLM, and TTS provider selection.
  • Multiple Transports: AudioSocket (default in config/ai-agent.yaml), ExternalMedia RTP, and opt-in, version-gated Asterisk Media WebSocket (see the transport matrix).
  • Per-Agent Audio Profiles: Stable and enhanced 8 kHz telephony profiles, plus opt-in 16 kHz AudioSocket with provider-native PCM conversion on supported Asterisk versions and G.722/wideband endpoint or trunk legs. ExternalMedia RTP remains on the supported 8 kHz profiles; G.711/PSTN Agents remain on an 8 kHz profile.
  • Streaming-First Downstream: Streaming playback when possible, with automatic fallback to file playback for robustness.
  • High-Performance Architecture: Separate ai_engine and local_ai_server containers.
  • Observability: Built-in Call History for per-call debugging + optional /metrics scraping.
  • State Management: SessionStore for centralized, typed call state.
  • Barge-In Support: Interrupt handling with configurable gating.

Integrations & Early-Stage Features

Alpha = usable but still hardening. Community = contributed and community-validated, not maintainer-tested on every release. Features without a label are stable.

Start ai_engine (required for health checks)

docker compose -p asterisk-ai-voice-agent up -d --build ai_engine

📊 Requirements

Platform Requirements

RequirementDetails
**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.

Minimum System Requirements

TypeCPURAMGPUDisk
**Cloud** (OpenAI/Deepgram)2+ cores4GBNone1GB
**Local Hybrid** (cloud LLM)4+ cores8GB+None2GB
**Fully Local** (CPU)4+ cores (2020+)8-16GBNone5GB
**Fully Local** (GPU)4+ cores8-16GBRTX 3060+10GB

Software Requirements

  • Docker + Docker Compose v2
  • Asterisk 18+ with ARI enabled
  • FreePBX (recommended) or vanilla Asterisk

4. Verify Installation

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

🔧 Advanced Setup (CLI)

For users who prefer the command line or need headless setup.

Option B: Manual Setup

```bash

Retrieve one-time password: docker compose -p asterisk-ai-voice-agent logs admin_ui | grep -i password

```

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.

---

Getting Started

🚀 Quick Start

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

HTTP Tools (Pre/In/Post-Call) Example

```yaml

📖 Guides

GuideFor
| **[Contributing Guide](CONTRIBUTING.md)** | Full contribution guidelines and

🎥 Demo

Watch the demo

Run preflight with auto-fix (creates .env, generates JWT_SECRET)

sudo ./preflight.sh --apply-fixes ```

Important: Preflight creates your .env file and generates a secure JWT_SECRET. Always run this first!

Option A: Interactive CLI

./install.sh
agent setup
Note: Legacy commands agent init, agent quickstart, agent doctor, agent troubleshoot, and agent demo remain as hidden compatibility aliases. New workflows should use the visible commands documented in docs/CLI_TOOLS_GUIDE.md.

Configure environment

cp .env.example .env

Edit .env with your API keys

Configure Asterisk Dialplan

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.

7 Golden Baseline Configurations

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.

Fully Local (Optional)

AVA also supports a Fully Local mode (100% on-premises, no cloud APIs). Three topologies are supported:

TopologyLatencyBest For
**CPU-Only**5-15s/turnPrivacy, testing
**GPU (same box)**0.5-2s/turnProduction local
**Split-Server** (remote GPU)1-3s/turnPBX 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.

⚙ Configuration

Three-File Configuration

  • 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

Optional: Metrics (Bring Your Own Prometheus)

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.

---

Configuration & Operations

🏠 Self-Hosted LLM with Ollama (No API Key Required)

Run your own local LLM using Ollama - perfect for privacy-focused deployments:

```yaml

🩺 Agent CLI Tools

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

---

Email Integration

  • Automatic Call Summaries: Admins receive full transcripts and metadata.
  • Caller-Requested Transcripts: "Email me a transcript of this call."
ToolDescriptionStatus
transferTransfer to extensions, queues, or ring groups
cancel_transferCancel in-progress transfer (during ring)
hangup_callEnd call gracefully with farewell message
leave_voicemailRoute caller to voicemail extension
send_email_summaryAuto-send call summaries to admins⚙️ Disabled by default
request_transcriptCaller-initiated email transcripts⚙️ Disabled by default
🇨🇳 中文文档镜像 AI 翻译 2026-05-25
英文原文章节由系统翻译为中文摘要,便于快速理解。完整原文见上方 "📑 README 深度解析"。
📌 简介

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 以进行健康检查。

🛠 安装步骤(Docker/pip/源码)

安装过程支持多种模式。推荐使用交互式 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 进行通话前、通话中及通话后的自动化流程控制。

⚙️ 配置说明(含 MCP / env)

配置阶段至关重要。在正式运行前,必须先执行 `sudo ./preflight.sh --apply-fixes` 进行预检并自动修复,该脚本会自动创建 `.env` 文件并生成安全的 `JWT_SECRET`。用户可以通过交互式 CLI 进行环境配置,并根据需求在配置文件中定义不同的 AI 供应商与传输参数。

🔌 API 说明

本项目支持高度的隐私保护与本地化部署。通过集成 Ollama,用户可以运行完全自托管的本地 LLM,无需依赖外部 API Key 即可实现智能对话。这对于对数据隐私要求极高的企业级部署场景非常友好,同时也为开发者提供了灵活的接口调用能力。

🔄 工作流/模块

系统具备强大的工作流集成能力。通过 Email Integration 模块,管理员可以自动接收通话摘要、全文转录及元数据;用户甚至可以通过语音指令(如“请把通话记录发到我的邮箱”)触发转录发送。内置的 Tool 模块支持 `transfer`(转接到分机、队列或环路组)等多种功能,实现了从语音识别到业务执行的闭环。

🎯 aiskill88 AI 点评 A 级 2026-05-25

融合Asterisk与现代AI技术的优秀项目。架构清晰,社区活跃,填补PBX智能化空白。生产级应用潜力大,维护持续。

📚 实用指南(长尾问题)
适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
  • 做语音类 AI 产品的开发者
最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • 本地部署优先选 GGUF 量化模型,节省显存并保持响应速度
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
  • 显存不足直接 OOM — 优先降低 context 或换更小的量化模型
  • Python 依赖冲突:建议用 venv / uv 隔离环境
部署方案
  • Docker:AVA-AI-Voice-Agent-for-Asterisk 提供官方镜像,docker compose up 一键启动
  • CLI:直接 npm install -g / pip install,命令行调用
  • 本地部署:CPU 8GB 起,GPU 推荐 16GB+ 显存
  • 云端托管:可放在 Vercel / Railway / Fly.io 等 PaaS 平台
相关搜索
AVA-AI-Voice-Agent-for-Asterisk 中文教程AVA-AI-Voice-Agent-for-Asterisk 安装报错怎么办AVA-AI-Voice-Agent-for-Asterisk MCP 配置AVA-AI-Voice-Agent-for-Asterisk Docker 部署AVA-AI-Voice-Agent-for-Asterisk Agent 工作流AVA-AI-Voice-Agent-for-Asterisk 与同类工具对比AVA-AI-Voice-Agent-for-Asterisk 最佳实践AVA-AI-Voice-Agent-for-Asterisk 适合谁用

⚡ 核心功能

👥 适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
  • 做语音类 AI 产品的开发者
⭐ 最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • 本地部署优先选 GGUF 量化模型,节省显存并保持响应速度
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
⚠️ 常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
  • 显存不足直接 OOM — 优先降低 context 或换更小的量化模型

👥 适合人群

AI 技术爱好者研究人员和学生开发者和工程师技术创业者

🎯 使用场景

  • 本地部署运行,保护数据隐私,满足合规要求
  • 自定义集成到现有系统,扩展技术栈能力
  • 作为开源基础组件进行商业化二次开发

⚖️ 优点与不足

✅ 优点
  • +MIT 协议,可免费商用
  • +完全开源免费,无授权费用
  • +本地部署,数据完全自主可控
  • +开发者社区支持,遇问题可查可问
⚠️ 不足
  • 安装和初始配置可能需要一定技术基础
  • 功能完整性通常不如成熟商业产品
  • 技术支持主要依赖开源社区,响应速度不稳定
⚠️ 使用须知

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。

🔗 相关工具推荐

📰 相关 AI 新闻
🍿 AI 圈相关吃瓜
🗺️ 相关解决方案
🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合

❓ 常见问题 FAQ

AVA-AI-Voice-Agent-for-Asterisk 是一款Python开发的AI辅助工具。开源AI工作流:An open-source AI Voice Agent that integrates with Asterisk/FreePBX using Audios。⭐1.0k · Python 主要应用场景包括:智能客服中心、自动语音应答系统、企业内部通话管理。
💡 AI Skill Hub 点评

经综合评估,Asterisk AI语音智能体 在AI工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。

📚 深入学习 Asterisk 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
🔗 原始来源
🐙 GitHub 仓库  https://github.com/hkjarral/AVA-AI-Voice-Agent-for-Asterisk

收录时间:2026-05-25 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。

📺 订阅 AI Skill Hub Daily Telegram 频道
每天 8 条精选 AI Skill、MCP、Agent 与自动化工具推送
加入频道 →