AI电话呼叫服务

一个MCP服务器及Python SDK和CLI工具,使AI代理能够通过SIP协议拨打和接听真实电话,支持语音转文本、文本转语音和通话录音功能。

  • by nwalker85
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 nwalker85/isip

使用说明

isip——给你的人工智能代理一个电话☎️

一个MCP服务器(加上Python SDK和CLI),允许AI代理通过SIP拨打和进行真实的电话。


它做什么

点克劳德桌面、光标或任何MCP客户端 isip 你的代理人可以 拨打一个真实的电话号码,说话(TTS),听(STT),记录通话,并报告一份记录 --无需构建Twilio应用程序,无需SaaS平台,也不需要Docker。它建立在本土,经过战斗考验 PJSIP 堆栈。

在引擎盖下,有三种方法可以拨打电话:

  1. MCP服务器 --将调用作为工具暴露给任何AI代理。
  2. Python SDK(Sippy) -一个干净的高级API: sippy.call(target, prompt=…) → 成绩单。
  3. CLI(siptester) --单个调用或JSON定义的测试套件。

你的经纪人,正在打电话

一旦MCP服务器连接到Claude Desktop或Cursor,模型就可以用简单的语言进行调用:

You:    "Call +1 512-555-0142, introduce yourself, and ask whether they're open today."
Claude: 📞 Calling… connected (24.1s).
        Transcript: "Hi! Yes, we're open until 6pm today. How can I help?"

暴露于代理的MCP工具:

工具 它做什么
place_call(phone, prompt) 拨打号码,说出提示,转录回复
list_recordings() 查看之前的通话记录+成绩单

代理人驾驶电话; isip 处理SIP信令、音频、TTS/STT和录制。


为什么存在

给代理人一部手机可以解锁两件事:

  1. 测试语音AI --脚本和回归测试来自代码或代理本身的SIP语音代理、中继、网关和IVR。
  2. 代理间电话 (更大的想法) --处理长达一小时的等待的人工智能称人类讨厌(例如保险 利益验证),并进行谈判 AI到AI 当另一侧也实现自动化时——将一小时的等待时间变成几秒钟。

快速开始

先决条件

  • macOS(10.15+)·Python 3.12+·自制

安装

# 1. System dependencies
brew install pjproject ffmpeg

# 2. Clone + set up the SDK
git clone https://github.com/nwalker85/isip.git
cd isip/sdk/python
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .

# 3. Configure credentials
cp ../../.env.example ../../.env   # then edit with your keys

.env:

# AI services
OPENAI_API_KEY=sk-...
DEEPGRAM_API_KEY=...
ELEVENLABS_API_KEY=...        # optional

# SIP gateway
SIP_USERNAME=your_username
SIP_PASSWORD=your_password
SIP_GATEWAY=<your-gateway>.sip.livekit.cloud

将其连接到您的代理(MCP)

cd mcp-server-isip
pip install -e .

添加到克劳德桌面(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "isip": {
      "command": "mcp-server-isip",
      "cwd": "/path/to/isip"
    }
  }
}

那就让克劳德打个电话吧。看 mcp-server-isip/QUICKSTART.md 对于完整设置。

或者从Python调用

from siptester import Sippy, VoiceService, SipHeaders

sippy = Sippy(
    voice_service=VoiceService("openai", "tts-1"),
    transcription_service=VoiceService("deepgram", "nova-2"),
)
target = SipHeaders(sip_to="sip:+15125550142@<your-gateway>.sip.livekit.cloud")
result = sippy.call(target, prompt="Hello, this is a test call.")

if result.established:
    print(result.duration, result.transcript)

一个衬垫:

from siptester import quick_call
print(quick_call(phone="+15125550142", prompt="Hello, is anyone there?",
                 username="user", password="pass").transcript)

或者从CLI

source sdk/python/.venv/bin/activate

siptester call \
  --gateway "$SIP_GATEWAY" --user "$SIP_USERNAME" --password "$SIP_PASSWORD" \
  --phone +15125550142 --prompt-text "Hello, this is a test" \
  --openai-key "$OPENAI_API_KEY" --deepgram-key "$DEEPGRAM_API_KEY"

# Or a JSON test suite:
siptester suite --suite tests/example_tests.json \
  --gateway "$SIP_GATEWAY" --user "$SIP_USERNAME" --password "$SIP_PASSWORD"

建筑

  AI agent (Claude / Cursor)
        │  MCP
        ▼
  mcp-server-isip ──► Sippy (high-level API) ──► SipTestClient ──► PJSIP (native)
                              │                                        │
                       OpenAI TTS / Deepgram STT                 SIP gateway (e.g. LiveKit)
                                                                       │
                                                                  the phone network
  • MCP服务器 (mcp-server-isip/)--面向代理的工具。
  • 开发包 (sdk/python/siptester/) — Sippy 高级API,低级 SipTestClient,以及 siptester CLI。
  • PJSIP --本地SIP信令。
  • 人工智能服务 --OpenAI TTS用于提示,Deepgram STT用于转录;ElevenLabs可选。

状态

一个经过端到端验证的工作原型(对LiveKit SIP网关的实时呼叫):

组件 状态
PJSIP绑定 ✅ 工作
Python SDK/ Sippy ✅ 工作
OpenAI TTS·Deepgram STT✅ 工作
实时SIP呼叫(LiveKit网关) ✅ ~28s电话,收到成绩单
录音 ✅ 工作
MCP服务器 ✅ AI代理可以拨打电话
CLI ✅ 工作

路线图

  • SDK强化 --打包、使用PJSIP模拟的单元测试、类型覆盖。
  • 命令行界面 --配置文件(~/.isip/config.yaml),JSON输出,并行运行并重试。
  • 代理电话 --更丰富的MCP工具(多回合对话、DTMF/IVR导航、呼叫转移)和代理到代理VOB用例。
  • 跨平台 --Linux验证,Docker镜像优化。

故障排除

  • pjsua/未找到PJSIP → brew install pjproject
  • ffmpeg 未找到 → brew install ffmpeg
  • 麦克风权限 → 系统设置→ 隐私和安全→ 麦克风
  • NAT/防火墙 → set local_ip 到您的公共IP SipHeaders(...)
  • SIP身份验证失败 → 与您的SIP提供商验证凭据;电子邮件样式的用户名会自动规范化。

学分和许可证

内置于 PJSIP, 开放人工智能 (TTS), Deepgram (STT),并针对 LiveKit 的 SIP网关。

麻省理工学院——见 许可证.

给你的经纪人一个电话。