在客服和 IT 支持场景中,构建 API 驱动的外呼 AI 代理是提升效率的关键。通过 Microsoft 的开源项目 Call-Center-AI,可以无缝集成 Azure Communication Services、Cognitive Services 和 OpenAI GPT,实现从单一 API 调用发起的智能外呼,支持语音合成(TTS)、自动语音识别(ASR)以及电话路由管理,尤其适用于 serverless 架构下的弹性扩展。
核心架构与集成要点
该方案采用全 serverless 设计,核心是 Azure Container Apps 作为应用主机,处理实时对话流。电话接入通过 Azure Communication Services 实现,支持 inbound/outbound calls 和 SMS,用户只需购买一个支持 voice 的电话号码,即可配置 bot 接听或主动外呼。语音处理链路为:ASR(Speech-to-Text)将用户语音转为文本 → OpenAI GPT(gpt-4o-nano 或 gpt-4o)生成响应并调用工具 → TTS(Text-to-Speech)合成语音输出。全链路支持流式传输,避免延迟累积。
关键集成参数:
- Communication Services:创建资源组后,启用系统托管身份(System Managed Identity),购买号码时选择 inbound/outbound + voice(SMS 可选)。连接字符串存入 config.yaml 的
communication_services.connection_string。
- Cognitive Services:部署 Speech 服务,选择实时 STT($1/小时)和标准 TTS($15/百万字符)。配置
speech.region 和 speech.key,支持多语言如 fr-FR-DeniseNeural 或自定义神经语音(Custom Neural Voice)。
- OpenAI:使用 Azure OpenAI 部署 gpt-4o-nano(低成本、高速)和 gpt-4o(insights)。端点如
llm.fast.endpoint: https://xxx.openai.azure.com/openai/deployments/gpt-4o-nano/chat/completions?api-version=2024-10-21。启用 RAG 通过 AI Search 索引自定义知识库(schema: answer/context/vectors 等,1536 维 ADA embedding)。
- 存储与缓存:Cosmos DB 存对话/claim(多区域写 RU/s ~1k),Redis 缓存历史上下文,Azure Storage 存录音/声音文件。
部署使用 Bicep IaC:make deploy name=my-rg-name,自动创建 Event Grid、Queues 和 App Configuration。feature flags 如 recording_enabled: true 可动态控制录音、slow_llm_for_chat: false 优先快模型。
API 驱动外呼实现
外呼通过 POST /call API 触发,JSON payload 定义 bot 身份、目标号码、任务和 claim schema。示例:
{
"bot_company": "Contoso",
"bot_name": "Amélie",
"phone_number": "+11234567890",
"task": "Help the customer with their digital workplace...",
"agent_phone_number": "+33612345678",
"claim": [{"name": "hardware_info", "type": "text"}, {"name": "first_seen", "type": "datetime"}]
}
bot 会主动拨打 phone_number,收集 claim 数据(如文本/日期/邮箱),生成 to-do list 和 reminders,支持人类转接(transfer to agent_phone_number)。对话实时存储 Cosmos DB,报告访问 /report/{phone_number} 查看历史、claim 和合成总结。
如 repo 所述,“Conversations are streamed in real-time to avoid delays, can be resumed after disconnections”。这确保断线续传:Event Grid 捕获事件推入 Queues,重连时从 Redis 恢复上下文。
自定义 schema 支持 text、datetime、email、phone_number,验证 E164 格式。任务描述用英文,注入 LLM prompt,避免复述新闻。
可落地参数与监控清单
为 serverless 优化,提供以下阈值参数(App Configuration,TTL 60s 刷新):
| 参数 |
默认值 |
建议调优 |
作用 |
| answer_hard_timeout_sec |
15 |
10-20 |
LLM 硬超时,避免卡死 |
| answer_soft_timeout_sec |
4 |
3 |
软超时,播报“稍等” |
| phone_silence_timeout_sec |
20 |
15-25 |
静默警告 |
| vad_silence_timeout_ms |
500 |
400 |
语音活动检测(VAD)静默阈值 |
| vad_threshold |
0.5 |
0.4-0.6 |
VAD 敏感度 |
| recognition_retry_max |
3 |
2-4 |
STT 重试 |
| callback_timeout_hour |
3 |
1-4 |
回调超时 |
监控集成 Application Insights:追踪 call.answer.latency(用户说完到 bot 回应时延)、call.aec.droped(回声消除失败)、LLM tokens/latency(OpenLLMetry)。自定义指标如 RU/s 使用率、STT/TTS 字符数。阈值告警:latency > 2s、RU > 80% 触发缩放。
成本控制:1000 通 10min 通话 ~$720/月,主因 Cosmos ($233)、Speech ($152)、Container Apps ($160)。优化:PTU 预热 OpenAI(减半 TTFT)、采样日志(Monitor $0.645/GB)、Basic AI Search($74)。
回滚策略:feature flags 灰度(如 vad_threshold A/B 测试)、镜像 tag 指定(如 image_version: 0.1.0)、多区域 Cosmos。安全:Content Safety 过滤(0-7 阈值)、PII 匿名、RAG grounding。
工程化实践与扩展
本地开发:make install + make tunnel 用 Dev Tunnels 暴露端口,local.py 无电话模拟测试。生产前补测试覆盖、vNET、私有端点、Red team。
扩展:fine-tuning 用历史通话(匿名后),A/B App Configuration;IVR 回调、Twilio SMS fallback。该方案小时级定制 bot,适用于保险/IT/客服,平衡成本与智能。
资料来源:Microsoft Call-Center-AI GitHub repo(https://github.com/microsoft/call-center-ai),包含完整 README、config 示例与 Bicep 模板。成本基于 2024-12 估算,实际依区域/负载调整。