# magic-sonar 智语声呐 - [AI 外呼 SaaS 调研与架构指南](docs/research/ai-outbound-saas.md) - [公网模型外呼目标架构](docs/architecture/public-model-outbound.md) ## SIP/RTP 单次呼出 MVP cmd/sip-demo 通过 UDP 向 61.132.228.221:5060 发起一通 IP 白名单、无鉴权呼叫: - 主叫固定为企业 code BD93205882,被叫按 7089 + SIP_TEST_NUMBER 生成; - 协商 G.711 A-law/μ-law、20 ms RTP 帧,播放百练合成披露话术和 WAV/内置测试音; - 上行连续三帧达到 VAD 阈值时立即停止下行播放,用于验证最小打断链路; - 上下行分别录为 recordings/*-rx.wav、recordings/*-tx.wav; - SIP 请求、响应和通话事件写入 logs/sip.log,号码在写入前脱敏。 真实号码、API Key、运行日志和录音均被 .gitignore 排除。仓库只保留[脱敏日志样本](docs/examples/sip-signaling.redacted.log)。 ### 离线验证 go test ./... go build ./cmd/sip-demo 测试使用本地 WebSocket/RTP 端点,不调用百练或 SIP 服务器。 ### 经授权的内部联调 确认执行机出口 IP 已加入白名单、UDP SIP/RTP 可达,再仅通过环境提供号码和凭据: export SIP_TEST_NUMBER='<已授权内部测试号码>' export BAILIAN_BASE_URL='wss://.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference' export BAILIAN_API_KEY='' export BAILIAN_TTS_VOICE='' go run ./cmd/sip-demo BAILIAN_BASE_URL 必须是上述北京地域工作空间的 CosyVoice WebSocket 完整端点;BAILIAN_TTS_VOICE 必须是在同一工作空间中为 cosyvoice-v3.5-plus 创建的声音设计 voice ID,该模型不支持 longxiaochun 等系统音色。程序不拼接、回退或重试其他路径。除 loopback 测试外只接受 WSS。Key 只进入 WebSocket 握手的 Bearer 请求头,不写日志。可用 -audio music.wav 追加单声道 PCM16 WAV;未指定时追加两秒测试音。NAT 环境通过 SIP_ADVERTISE_IP 或 -advertise-ip 指定 SDP/Via 公网 IP。 本 MVP 不做注册、鉴权、重拨、ASR/LLM、AEC 或抖动缓冲。打断依赖线路提供独立上行;若远端回声触发误打断,用 -vad-threshold 校准,正式方案仍需 AEC/线路能力验证。