这个项目能做什么
jiofiber-bridge是一个模板项目,用于通过普通SIP软电话在任何地方使用JioFiber(Jio Fiber Voice / JioCall over broadband)固话,支持呼出和呼入。Jio通过其IMS核心使用名为JUICE的专有客户端提供语音服务,该客户端通常仅在ISP路由器或JioCall应用上运行。此项目在与路由器同一局域网内运行一个小型无头桥接器,以真正的JioCall设备方式注册到IMS核心,并将线路重新呈现为普通SIP中继。将Asterisk指向该中继,Zoiper、Groundwire或Linphone等软电话即可从任何网络拨打和接听固话电话。
架构:桥接器是一个B2BUA,必须位于家庭局域网内,因为IMS核心只与路由器通信,且RTP必须源自局域网接口。一端通过JUICE/IMS(TLS信令、AMR/AMR-WB音频)与路由器通信;另一端是普通SIP/PCMU中继,通过pjproject的会议桥实现AMR到PCMU的转码。Asterisk运行在小型公共VPS上,电话在此注册;它规范化拨打的号码,在呼入时振铃电话并携带主叫号码。桥接器和Asterisk通过私有覆盖网络(Tailscale或WireGuard)连接,因此家庭不暴露任何SIP端口,VPS仅暴露面向电话的注册服务器。
README强调了三个难题。第一,身份:JUICE注册使用RFC 5626 outbound,带有特定格式的+sip.instance(大写,无urn:uuid:前缀),外加轮换的每设备密码和通过OTP流程白名单化的设备;库存pjsua以不同格式格式化实例,核心会静默丢弃REGISTER。第二,媒体:核心提供带mode-set的AMR/AMR-WB,并期望在SDP中回显,否则呼叫约一至两分钟后被拆除。第三,入站分叉:核心仅振铃注册时通告了完整RCS/MMTEL功能标签集和类似JioCall的User-Agent的联系人;仅注册mmtel可使呼出工作,但入站永不振铃。
要求包括家庭局域网上一台常开的Linux机器(需root权限)、一台用于Asterisk 18+的小型公共VPS、覆盖网络、构建工具及AMR编解码器开发头文件、IMS账户详情(公共身份、认证用户名、realm、注册服务器/路由器地址),以及触发提供商设备添加OTP的能力。仓库提供B2BUA源文件、三个pjproject补丁(AMR mode-set、+sip.instance格式、contact_params累积保护)、构建配置、bridge.env.example、注册和健康检查脚本、用于静态上游IMS摘要密码的凭据恢复辅助工具、Asterisk pjsip/extensions/rtp配置,以及桥接器和两分钟健康定时器的systemd单元。
设置步骤涵盖构建打过补丁的pjproject、配置bridge.env、配置设备(白名单加每次启动时获取轮换密码)、将桥接器作为服务运行、配置Asterisk端点和中继、注册软电话,以及通过健康检查监控(重启桥接器并可发布ntfy警报)。README还记录了号码规范化(网外手机需要STD 0前缀,否则核心返回484 Address Incomplete)、RFC 4733 DTMF中继、通过X-Jio-Caller和P-Asserted-Identity/Remote-Party-ID头实现入站主叫号码、可选的入站IVR(WAV格式及绝对路径注意事项)、对其他PBX(如Grandstream UCM和FreePBX)的指导(IVR必须应答而非播放早期媒体),以及EARLY_ANSWER逃生舱。怪癖部分将症状映射到原因,包括静默REGISTER丢弃、呼叫在一至两分钟后死亡、长时间运行后PJ_ETOOSMALL、多宿主RTP导致的单向音频,以及因缺少功能标签导致入站不振铃。一切均为模板,无真实号码、IP、密码或提供商主机名;项目采用MIT许可并附免责声明。
评论
0 评分人数达到10人后显示
登录后参与讨论。