Skip to content

Releases: myleo1/SimGo

SimGo v2.0.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 13 Sep 07:39

v2.0.0

功能

  • 新增 call waiting 运行时对齐(保活):watchdog 每轮(2 分钟)读取 quectel show device state 的 Call Waiting: 状态,与 config/quectel.conf [defaults] 的 callwaiting 意图双向对齐:
    • 配置 yes(默认)且运行时为 Disabled → 自动执行 quectel callwaiting enable <dev>,解决模块偶发丢失呼叫等待、第二路来电无提示 / 打不进的问题
    • 配置 no 且运行时为 Enabled → 自动执行 quectel callwaiting disable <dev>
  • 轻量幂等命令,独立于既有防抖 / 冷却 / 日上限逻辑;驱动状态切换(scheduled / Stopped)期间保持托管不干预;只记日志、不推送
  • 背景:模块 call waiting 状态由驱动运行时决定,上游 chan-quectel 无法保证长期稳定,watchdog 作为兜底确保行为始终符合配置意图

变更

  • README(中 / 英)镜像拉取标签更新为 2.0

SimGo v1.7.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 12 Sep 14:42

v1.7.0

变更

  • 中英文 README 更新:镜像 pull 标签 1.6.1 → 1.7

修复

  • 修复录音文件名联系人命名不生效:拨号计划用 $[...] 表达式 + LEN()/IF 判断联系人姓名是否为空,但表达式引擎解析 UTF-8 中文时判定错乱,LEN(测试) 被当作 0,导致命中 CSV 的中文联系人名也被回退成号码;现移除该判断,命中联系人时姓名直接进入录音文件名(空格替换为 _)
  • 修正 REPLACE 调用方式:改为传裸变量名 REPLACE(REC_NAME, ,_)(原写法把值当变量名查询,恒空、会清空姓名)
  • 未收录号码时名字位留空(文件名形如 ..._in__号码),号码始终保留
  • 同步更新 DESIGN.md / PROMPT-RECORD.md 对应技术说明

SimGo v1.6.1 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 12 Sep 13:20

v1.6.1

变更

  • 中英文 README 更新:镜像 pull 标签 1.6 → 1.6.1

修复

  • 修复 v1.6.0 中 Call Waiting 修复未真正生效的问题

SimGo v1.6.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 12 Sep 11:09

v1.6.0

变更

  • 升级上游 chan-quectel 驱动(myleo1/asterisk-chan-quectel-lts):
    • 修复来电等待(Call Waiting)确定性应用:AT+CCWA 此前只在 quectel_update_registration() 的一次性 not-ready → ready 跃迁时下发,模块重启、静默重附着等无可见 0→1 跃迁的重初始化场景下 callwaiting=yes 不再生效;现改为在每次注册/重注册后幂等重应用——quectel_update_registration() 对比设备实际确认状态 has_call_waiting 与配置值,不一致才下发 CCWA 设置与状态查询,callwaiting=auto 时跳过;has_call_waiting 在断开/注销时清除,模块重启或命令丢失由下一次周期 AT+CEREG?(约 10s)在重注册后自动愈合(5c97bd1)
    • Dockerfile 构建时拉取上游最新 master,本次镜像已包含上述提交
  • 中英文 README 更新:镜像 pull 标签 1.5 → 1.6

SimGo v1.5.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 12 Sep 08:28

v1.5.0

变更

  • 升级上游 chan-quectel 驱动(myleo1/asterisk-chan-quectel-lts):
    • LTE 域 +CEREG 响应也作为模块就绪信号处理(55bf76d)
    • 初始化及运行期周期性查询 AT+CEREG?,保持 LTE 就绪状态新鲜(022323a)
    • Dockerfile 构建时拉取上游最新 master,本次镜像已包含上述两项提交
  • Telegram 告警推送正文由 <pre> 代码包裹改为纯文本(保留换行),与企微推送样式统一——手机端不再出现"复制 / </>"按钮
  • 中英文 README 更新:架构图重绘(graph TB → graph LR)、watchdog 原理与信号问题说明修正、项目结构更正

修复

  • 修复 Telegram 告警推送始终 404:sendMessage 接口地址 api.telegram.org/bot<token> 之前多带了一个斜杠,与 telegram_bot.py 对齐后恢复推送;Telegram 失败不再阻断企业微信,双通道独立 try/except,仅全失败才 exit 1
  • watchdog 与录音归档 cron 脚本执行权限:setup.sh 自动 chmod +x,并以可执行模式提交,git pull 后不再丢失执行位
  • 卸载说明补全:列出 setup.sh 可能安装的全部系统组件(inotify-tools、logrotate 包、nftables 规则、残留 Docker 镜像)

SimGo v1.4.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 12 Sep 05:58

v1.4.0

功能

  • 新增宿主侧 EC20 模块状态监控与自愈 watchdog:容器外每 2 分钟轮询 quectel show device state,异常自动分级恢复,无需人工干预
  • 状态全集识别:GSM not registered → 恢复链 A;Not initialized → 恢复链 B;Not connected → 恢复链 C;状态切换调度(scheduled 尾缀)或 Stopped → 静默让位,不与驱动自愈打架
  • 恢复链(轻→重,幂等):链 A = CEREG/CREG 探针 + quectel reset → 失败再 AT+CFUN=1,1;链 B/C 分别 reset / restart now;每步间隔 15 秒复查,命中 OK/SKIP 即视为恢复
  • 防抖与限流:同一设备连续 2 轮同类故障才触发;单次动作后冷却 30 分钟;每日动作上限 5 次,超限停止并通知人工
  • 通话保护:有活动通话时本轮跳过且不清计数,绝不打断通话
  • 双通道告警:异常触发 / 恢复 / 升级 / 状态切换均推送 Telegram + 企业微信(复用 bot.conf),WATCHDOG_NOTIFY 可一键关闭,无第三方依赖
  • 状态持久化 + 防重入:防抖计数/冷却/当日上限落盘 scripts/.watchdog-state/,flock 防并发重入

变更

  • 新增 notify_alarm.py 容器内双通道通知 CLI,经 ./scripts 只读挂载自动进容器,无需重建镜像
  • README 补充录音归档架构图与 DuckDNS 前置依赖说明

安装

  • setup.sh 新增 watchdog cron(*/2,# SimGo-watchdog 标记,幂等去重),卸载自动清理
  • 新增 logs/watchdog-quectel.log 轮询日志,已纳入 logrotate(保留 7 份,gzip)
  • .simgo-manifest 新增 watchdog/cli 文件与 cron 条目,卸载同步清理

SimGo v1.3.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 11 Sep 09:04

v1.3.0

修复

  • vCard 导入:兼容 Apple / iCloud 导出的属性组前缀(item1.TEL),此前这类号码全部被跳过
  • vCard 导入:去 +86 前缀仅限真实手机号段(1[3-9]),不再误伤区号类号码
  • NAS 归档:cp -p 在 NAS 不支持保留属主(Operation not permitted)时自动降级普通复制,改以 cmp 内容校验判定成败,不再误报归档失败
  • 归档扫描:录音扩展名改大小写不敏感匹配(wav49 落盘为 .WAV),兜底扫描与清理不再漏档

变更

  • 录音清理日志安静化:仅在实际删除文件时记录,空闲扫描不再每 5 分钟刷一条日志
  • 新增宿主机日志轮转(logrotate):logs/ 每日自动轮转——录音归档日志保留 7 份、Asterisk(messages.log / queue_log)保留 14 份,均 gzip 压缩;配置 /etc/logrotate.d/simgo,卸载时自动删除
  • setup.sh 自动安装 logrotate 并写入轮转配置
  • 此版本 logrotate 配置已在实际部署机(PVE)dry-run 验证通过

SimGo v1.2.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 11 Sep 09:02

v1.2.0

功能

  • 双向自动通话录音:去电/来电均自动录制,通话接通后才开始(不录振铃/等待音),挂机自动停止
  • 总开关控制:RECORDING_ENABLED 一键开启/关闭自动录音(默认开启),无需改动拨号计划
  • 录音格式可选:wav49(默认)/ ulaw
  • 联系人命名:录音自动用联系人姓名命名,未收录号码回退为号码(spool/contacts.csv)
  • vCard 通讯录导入:一条命令将 iPhone / 安卓导出的 vCard 转为联系人表(自动生成去 +86 手机号段变体行)
  • 持久化归档:宿主机守护(inotifywait)监听录音落盘,cp + 逐字节 cmp 校验后归档到 NAS 等持久化目录,按 YYYY-MM 分月子目录
  • 本地保留策略可选:归档即删(默认)/ 保留 N 天 / 大小上限,B+C 可组合
  • 本地中转 + 守护归档:录音永远先写本地,归档存储不可用(如 NAS 未启动)不影响通话,恢复后 5 分钟内自动补传

安装

  • setup.sh 新增录音交互:总开关、录音格式、持久化归档目录、本地保留策略
  • 自动安装 inotify-tools,配置 @reboot 常驻守护 + 每 5 分钟兜底扫描 cron
  • .simgo-manifest 同步记录新生成文件与 cron,卸载自动清理

SimGo v1.1.0 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 08 Sep 07:41

v1.1.0

变更

  • 中英文 README 新增法律风险声明
  • 中英文 README 新增 Mermaid 架构图
  • 镜像版本更新至 1.1.0
  • 升级 chan-quectel 驱动:适配 EC20 简化固件的 AT+CCWA 命令

修复

  • 修正 setup.sh 企业微信相关提示文字

清理

  • 移除 telegram_bot.py 中未使用的 reply_sms 死代码
  • 移除 docs/DESIGN.md 中过时的 asterisk_history 描述

SimGo v1.0.1 - Containerized EC20 Phone Relay

Choose a tag to compare

@myleo1 myleo1 released this 07 Sep 03:48

v1.0.1

变更

  • 项目从 CellBridge 更名为 SimGo
  • Docker 容器名:cellbridge → simgo
  • Manifest 文件:.cellbridge-manifest → .simgo-manifest
  • Cron 标记:# CellBridge → # SimGo
  • 新增英文版 README