fb30b9d958fe78154984135fc6f6178aa18516da
Co-authored-by: multica-agent <github@multica.ai>
magic-sonar
智语声呐
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 排除。仓库只保留脱敏日志样本。
离线验证
go test ./...
go build ./cmd/sip-demo
测试使用本地 WebSocket/RTP 端点,不调用百练或 SIP 服务器。
经授权的内部联调
确认执行机出口 IP 已加入白名单、UDP SIP/RTP 可达,再仅通过环境提供号码和凭据:
export SIP_TEST_NUMBER='<已授权内部测试号码>'
export BAILIAN_BASE_URL='wss://<WorkspaceId>.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'
export BAILIAN_API_KEY='<server-side-key>'
go run ./cmd/sip-demo
BAILIAN_BASE_URL 必须是上述北京地域工作空间的 CosyVoice WebSocket 完整端点;程序不拼接、回退或重试其他路径。除 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/线路能力验证。
Languages
Go
100%