Voice Call 是一个通过电话服务商 API 发起外呼电话的技能,主要用于紧急告警、通知提醒和直接沟通场景。它可以把文本消息自动转为语音外呼,也支持更精细的 SSML 控制、交互式通话以及通话状态管理。
【主要能力】
- 文本转语音(TTS):对文本消息自动进行 TTS 播报,支持多种语音选项(具体因服务商而异),并支持 SSML 以实现更高级的语音控制。
- 交互式通话:支持 Webhook 集成用于 IVR,支持 DTMF 按键输入处理,以及通话录音(是否支持取决于服务商)。
- 通话分析:支持状态跟踪(queued、ringing、in-progress、completed、failed)、通话时长跟踪和费用跟踪。
- 通话操作:可发起呼叫、查询指定通话状态、挂断指定通话。
【支持的服务商】
- Twilio:最流行,功能丰富。
- Telnyx:成本效益较好,覆盖良好。
- Plivo:API 简单,价格有竞争力。
- Mock:用于开发/测试,不会真正拨打电话。
【使用方式与配置】 使用前需要配置环境变量。必需项包括 VOICE_PROVIDER(服务商名称,可选 twilio、telnyx、plivo、mock)和 VOICE_FROM_NUMBER(你的外呼主叫号码)。各服务商另有专属凭证:Twilio 需要 TWILIO_ACCOUNT_SID 和 TWILIO_AUTH_TOKEN;Telnyx 需要 TELNYX_API_KEY 和 TELNYX_CONNECTION_ID;Plivo 需要 PLIVO_AUTH_ID 和 PLIVO_AUTH_TOKEN。
常用命令示例:
- 使用 TTS 消息发起基础呼叫:python voice_call.py --to "+15555550123" --message "Hello, this is an automated call from PopeBot."
- 使用自定义 SSML 语音呼叫:python voice_call.py --to "+15555550123" --ssml "<speak>Hello <break time='1s'/> important message</speak>"
- 带 Webhook 发起交互式呼叫:python voice_call.py --to "+15555550123" --webhook-url "https://your-server.com/call-handler"
- 查询通话状态:python voice_call.py --status --call-id "CA1234567890"
- 结束通话:python voice_call.py --hangup --call-id "CA1234567890"
【适用场景与示例】 当用户需要发起紧急电话、为关键事件发送语音告警、实现基于电话的通知,或构建交互式语音应答系统时,可使用本技能。资料给出的示例包括:
- 紧急告警:python voice_call.py --to "+15555550123" --message "Security alert: Unusual activity detected on your account. Please check immediately." --priority "urgent"
- 预约提醒(SSML):python voice_call.py --to "+15555550123" --ssml "<speak>Hello! This is a reminder about your appointment <break time='500ms'/> tomorrow at 3 PM.</speak>"
- 双因素认证语音验证码:python voice_call.py --to "+15555550123" --message "Your verification code is 8-4-7-2. Repeat: 8-4-7-2."
【限制与安全注意事项】 限制方面:需要有效的 API 凭证;国际呼叫可能有限制;费用因服务商和目的地而异;Mock 服务商仅用于测试,不会真正拨打电话。
安全方面:切勿在日志中暴露 API 凭证;拨号前验证电话号码;遵守“禁止呼叫”(DNC)相关规定;实施速率限制以防止滥用。