在呼叫中心场景中,API 触发 AI 代理拨打电话(outbound calls)与直接呼叫配置号码接入 bot(inbound direct bot handling)是两种互补的自动化模式。前者适用于主动任务分发,如预约确认或故障排查;后者则优化被动响应,如客户自助咨询。通过 Azure Communication Services 与 OpenAI 的集成,二者可无缝结合工具调用,形成闭环自动化,显著降低人力成本并提升响应时效。
API 驱动外呼的核心机制与参数优化
API 外呼的核心是通过 POST /call 端点触发,传入 JSON payload,包括 bot_company、bot_name、phone_number、task 描述及 claim schema。该模式下,系统使用 Azure Communication Services 创建呼叫会话,事件通过 Event Grid 推送到队列,app 容器处理 STT(Speech-to-Text)转录、LLM 推理(gpt-4o-mini 优先,fallback 至 gpt-4o)、TTS(Text-to-Speech)合成,并实时流式传输音频。
关键参数配置聚焦实时性和鲁棒性:
- vad_threshold: 0.5(Voice Activity Detection 阈值,范围 0.1-1):平衡灵敏度与误触发,低值易捕获弱语音但增假阳性;实际部署中,从 0.5 起步,根据噪音环境 A/B 测试至 0.4-0.6。
- vad_silence_timeout_ms: 500 / vad_cutoff_timeout_ms: 250:静音检测窗口,前者触发结束检测,后者切断;针对长停顿场景(如思考),延长至 800ms 可减中断,提升自然流。
- answer_soft_timeout_sec: 4 / answer_hard_timeout_sec: 15:LLM 响应软硬超时,前者插播 “稍等” 提示,后者 fallback 错误;结合 PTU(Provisioned Throughput Units)部署 gpt-4o-mini,TTFT(Time to First Token)可降至 2s 内。
- phone_silence_timeout_sec: 20:用户静音警告阈值,防挂机;集成 reminders 机制,超时后生成跟进 todo,如 “24h 后回调”。
claim schema 定义结构化输出,例如:
[
{"name": "hardware_info", "type": "text"},
{"name": "first_seen", "type": "datetime"},
{"name": "building_location", "type": "text"}
]
LLM 遵循 JSON 模式输出,确保数据验证(E164 手机号、ISO datetime),存入 Cosmos DB。工具调用集成 RAG(AI Search embeddings via text-embedding-3-large),检索内部文档,增强领域知识。
落地清单:
- 配置 config.yaml:llm.fast.model="gpt-4o-mini",conversation.initiate.task="收集 IT 支持 claim"。
- 部署 Bicep 模板:make deploy name=ccai-rg,确保 Communication Services 号码支持 inbound/outbound。
- 测试 curl:
curl -X POST https://your-app/call \ -H 'Content-Type: application/json' \ -d '{"bot_company":"Contoso","bot_name":"Amélie","phone_number":"+11234567890","task":"IT支持故障排查","claim":[...] }' - 监控 Application Insights:call.answer.latency<5s,call.aec.droped=0(回声消除)。
直接 bot 内呼的接入与差异化处理
inbound 模式下,用户直拨 bot 号码,Communication Services 回调 app 处理事件流,无需 API 触发。差异在于会话初始化:默认 task 从 config.yaml 加载,claim schema 可选覆盖。系统自动检测语言(fr-FR/zh-CN 等),切换 TTS voice 如 fr-FR-DeniseNeural,支持 custom_voice_endpoint_id 集成品牌语音。
优化参数强调容错:
- recognition_retry_max: 3 / recognition_stt_complete_timeout_ms: 100:STT 重试上限与完成超时,防网络抖动丢帧。
- callback_timeout_hour: 3:断线续传窗口,Redis 缓存历史 messages/next action。
- recording_enabled: true:Azure Storage 录音,container="recordings",用于 QA 与 fine-tuning。
工具调用扩展:LLM 支持 function calling 生成 reminders/synthesis,如 {"next":{"action":"case_closed","justification":"..."}}。历史对话 fine-tune LLM,提升个性化(e.g., satisfaction: "high")。
部署差异:
| 模式 | 触发 | 初始化 | 适用场景 |
|---|---|---|---|
| Outbound | API POST | Payload 覆盖 | 主动分发、批量 |
| Inbound | 拨号 | Config 默认 | 自助咨询、24/7 |
监控清单:
- 指标:custom metrics 如 call.aec.missed(回声失败),目标 < 1%。
- 日志:OpenLLMetry 追踪 prompt/token,警报 LLM hallucinations。
- 回滚:feature flags via App Configuration,ttl_sec=60s 热更新。
集成工具调用与风险阈值
二者结合工具调用(如 RAG search、DB upsert),实现端到端自动化。风险阈值:
- Moderation:OpenAI Content Filters score>4(hate/sexual 等),阻断 jailbreak。
- 成本:1000 通 10min calls~$720,优化 nano model 减 10-15x。
- 隐私:PII anonymization 前 fine-tune,multi-region Cosmos RU/s=1000。
实际参数调优:从 demo 起步,模拟 100 通 calls,迭代 vad/timeout 至 latency<3s,claim fill rate>95%。
此方案已在保险 / IT 支持验证,断线续传确保 UX,工具集成闭环任务。参考 Microsoft call-center-ai GitHub 仓库,一句描述其 POC 性质与 Azure 依赖。