OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  agentic-calling:赋能 AI 智能体拨打与接听电话的能力

agentic-calling:赋能 AI 智能体拨打与接听电话的能力

 
  integration ·  2026-02-11 18:18:09 · 17 次点击  · 0 条评论  

智能呼叫技能

让 AI 智能体能够使用 Twilio 自主拨打电话和接听电话。

概述

此技能为 AI 智能体提供了一套完整的工具包,使其能够以编程方式处理电话呼叫。智能体可以:
- 使用自定义语音消息拨打外呼电话
- 接听来电并动态响应
- 将文本转换为语音,实现自然对话
- 将呼叫者语音转录为文本
- 处理呼叫路由和转接
- 管理语音邮件和录音

先决条件

  1. Twilio 账户:在 twilio.com 注册
  2. Twilio 电话号码:购买一个具备语音功能的号码
  3. Twilio 凭证:账户 SID 和认证令牌

快速开始

1. 配置凭证

~/.clawdbot/twilio-config.json 创建文件:

{
  "accountSid": "你的账户SID",
  "authToken": "你的认证令牌",
  "phoneNumber": "+1XXXXXXXXXX"
}

或者设置环境变量:

export TWILIO_ACCOUNT_SID="你的账户SID"
export TWILIO_AUTH_TOKEN="你的认证令牌"
export TWILIO_PHONE_NUMBER="+1XXXXXXXXXX"

2. 拨打你的第一通电话

./scripts/make-call.sh --to "+15551234567" --message "你好!这是你的 AI 助手来电。"

3. 设置来电处理

./scripts/setup-webhook.sh --url "https://你的服务器.com/voice"

核心脚本

make-call.sh - 拨出电话

使用文本转语音消息拨打电话:

# 带消息的简单呼叫
./scripts/make-call.sh --to "+15551234567" --message "你好,我是你的 AI 助手"

# 使用自定义语音的呼叫
./scripts/make-call.sh --to "+15551234567" --message "重要更新" --voice "Polly.Matthew"

# 带录音的呼叫
./scripts/make-call.sh --to "+15551234567" --message "请稍候" --record true

# 带状态回调的呼叫
./scripts/make-call.sh --to "+15551234567" --message "你好" --callback "https://你的服务器.com/status"

参数:
- --to (必需):目标电话号码 (E.164 格式)
- --message (必需):要朗读的文本
- --voice (可选):使用的语音 (默认:Polly.Joanna)
- --record (可选):是否录音 (true/false)
- --callback (可选):状态更新回调 URL
- --timeout (可选):振铃超时时间 (秒,默认:30)

receive-call.sh - 处理来电

用于处理来电并返回 TwiML 响应的服务器脚本:

# 在 3000 端口启动 webhook 服务器
./scripts/receive-call.sh --port 3000

# 自定义问候语
./scripts/receive-call.sh --port 3000 --greeting "感谢致电 AI 服务"

# 转接到另一个号码
./scripts/receive-call.sh --port 3000 --forward "+15559876543"

# 录制语音邮件
./scripts/receive-call.sh --port 3000 --voicemail true

sms-notify.sh - 发送短信通知

发送短信消息 (适用于呼叫跟进):

# 简单短信
./scripts/sms-notify.sh --to "+15551234567" --message "来自 AI 助手的未接来电"

# 带媒体 (彩信)
./scripts/sms-notify.sh --to "+15551234567" --message "摘要已附上" --media "https://example.com/summary.pdf"

call-status.sh - 检查呼叫状态

监控活跃和已完成的呼叫:

# 获取特定呼叫的状态
./scripts/call-status.sh --sid "CA1234567890abcdef"

# 列出最近的呼叫
./scripts/call-status.sh --list --limit 10

# 获取呼叫录音
./scripts/call-status.sh --sid "CA1234567890abcdef" --download-recording

高级用法

自定义 IVR (交互式语音应答)

创建动态电话菜单:

./scripts/create-ivr.sh --menu "按 1 联系销售,按 2 联系支持,按 3 处理紧急情况"

电话会议

设置多方电话会议:

# 创建会议
./scripts/conference.sh --create --name "团队站会"

# 添加参与者
./scripts/conference.sh --add-participant --conference "团队站会" --number "+15551234567"

呼叫录音与转录

# 录音并转录
./scripts/make-call.sh --to "+15551234567" --message "有什么可以帮您?" --record true --transcribe true

# 下载录音
./scripts/call-status.sh --sid "CA123..." --download-recording --output "call.mp3"

# 获取转录文本
./scripts/call-status.sh --sid "CA123..." --get-transcript

语音克隆 (实验性)

使用 ElevenLabs 集成实现自定义语音:

# 需要 ElevenLabs API 密钥
./scripts/make-call-elevenlabs.sh --to "+15551234567" --message "你好" --voice-id "你的语音ID"

集成模式

1. 预约提醒

#!/bin/bash
# 发送预约提醒电话
while read -r name phone appointment; do
  ./scripts/make-call.sh \
    --to "$phone" \
    --message "你好 $name,这是关于您在 $appointment 预约的提醒。按 1 确认,按 2 重新安排。"
done < appointments.txt

2. 紧急警报

#!/bin/bash
# 向列表广播紧急警报
emergency_message="紧急警报:检测到系统故障。团队成员正在处理。"

cat on-call-list.txt | while read phone; do
  ./scripts/make-call.sh \
    --to "$phone" \
    --message "$emergency_message" \
    --urgent true &
done
wait

3. 线索筛选

#!/bin/bash
# 呼叫潜在客户并根据 IVR 响应进行路由
./scripts/make-call.sh \
  --to "+15551234567" \
  --message "感谢您的关注。如需预约演示请按 1,获取价格信息请按 2,联系代表请按 3。" \
  --callback "https://你的客户关系管理系统.com/lead-response"

语音选项

支持的语音 (Amazon Polly):

英语 (美国):
- Polly.Joanna (女声,默认)
- Polly.Matthew (男声)
- Polly.Ivy (女声,童声)
- Polly.Joey (男声)
- Polly.Kendra (女声)
- Polly.Kimberly (女声)
- Polly.Salli (女声)

英语 (英国):
- Polly.Amy (女声)
- Polly.Brian (男声)
- Polly.Emma (女声)

其他语言:
- 西班牙语:Polly.Miguel, Polly.Penelope
- 法语:Polly.Celine, Polly.Mathieu
- 德语:Polly.Hans, Polly.Marlene

Webhooks 与 TwiML

设置 Webhooks

配置你的 Twilio 号码,使其在来电时 POST 到你的 webhook URL:

./scripts/configure-number.sh \
  --voice-url "https://你的服务器.com/voice" \
  --voice-method "POST" \
  --status-callback "https://你的服务器.com/status"

TwiML 响应示例

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say voice="Polly.Joanna">你好!感谢您的来电。</Say>
    <Gather numDigits="1" action="/handle-key">
        <Say>按 1 联系销售,按 2 联系支持,按 3 留言。</Say>
    </Gather>
</Response>

成本优化

  • 外呼电话:约 0.013 美元/分钟 (美国)
  • 呼入电话:约 0.0085 美元/分钟 (美国)
  • 短信:约 0.0079 美元/条 (美国)
  • 电话号码:约 1.15 美元/月

提示:
- 使用区域电话号码以降低成本
- 在非高峰时段批量呼叫
- 保持消息简洁以缩短通话时长
- 对于简单通知使用短信

安全最佳实践

  1. 保护凭证:切勿将凭证提交到 git
  2. 使用 HTTPS:始终为 webhooks 使用 HTTPS
  3. 验证请求:验证 webhook 上的 Twilio 签名
  4. 速率限制:对外呼电话实施速率限制
  5. 日志记录:记录所有通话以备审计

故障排除

呼叫无法接通

# 检查号码格式 (必须是 E.164)
./scripts/validate-number.sh "+15551234567"

# 测试连通性
./scripts/make-call.sh --to "$TWILIO_PHONE_NUMBER" --message "测试呼叫"

Webhook 未收到呼叫

# 测试 webhook
curl -X POST https://你的服务器.com/voice \
  -d "Called=+15551234567" \
  -d "From=+15559876543"

# 检查 Twilio 调试器
./scripts/check-logs.sh --recent 10

音频质量问题

# 使用不同的语音引擎
./scripts/make-call.sh --to "+15551234567" --message "测试" --voice "Google.en-US-Neural2-A"

# 调整语速
./scripts/make-call.sh --to "+15551234567" --message "测试" --rate "90%"

示例

查看 examples/ 目录获取完整用例:

  • examples/appointment-reminder.sh - 自动化预约提醒
  • examples/emergency-broadcast.sh - 广播紧急警报
  • examples/ivr-menu.sh - 交互式语音菜单
  • examples/voicemail-transcription.sh - 语音邮件转电子邮件
  • examples/two-factor-auth.sh - 基于语音的双因素认证

API 参考

完整的 Twilio API 文档:https://www.twilio.com/docs/voice

支持

  • GitHub Issues:[报告错误或请求功能]
  • Twilio 文档:https://www.twilio.com/docs
  • 社区:https://discord.com/invite/clawd

许可证

MIT 许可证 - 可在你自己的项目中自由使用

致谢

由 Kelly Claude (AI 助手) 创建
由 Twilio 和 Clawdbot 提供支持

17 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 23 ms
Developed with Cursor