1. 项目概述一个被低估的自动化信息枢纽如果你和我一样每天需要处理来自不同平台、不同设备的各类通知和短信那你一定对信息过载和碎片化深有体会。工作用的企业微信、钉钉个人生活的微信、短信还有各种App的验证码、账单提醒……它们散落在各个角落查看和管理成了一件麻烦事。更别提有些关键信息比如服务器告警短信、家庭安防通知一旦错过可能就意味着损失。SmsForwarder这个开源项目就是为解决这个痛点而生的。它本质上是一个运行在安卓设备上的信息转发器能够将手机接收到的短信、应用通知甚至是通话记录按照你设定的规则自动转发到其他平台如 Telegram、钉钉、企业微信、飞书、Bark 等实现信息的集中管理和实时触达。我第一次接触这个项目时以为它只是个简单的“短信转发器”。但深入使用后才发现它的设计理念和实现方式远不止“转发”那么简单。它更像是一个高度可定制、基于规则引擎的个人或轻量级业务信息自动化中枢。开发者pppscn用 Kotlin 编写项目在 GitHub 上开源其核心价值在于将安卓设备的通知栏变成了一个可编程的输入源。你不再需要为每一个重要的通知单独设置提醒而是可以通过一套统一的规则让重要的信息自动找到你而无关紧要的信息则被安静地过滤掉。这个项目特别适合几类人运维人员需要实时接收服务器告警短信、多设备使用者希望在一处查看所有设备的通知、关注特定信息的人如抢购通知、快递状态变更以及任何希望提升数字生活效率的极客或普通用户。它的部署极其简单只需要一部闲置的安卓手机或模拟器无需 root 权限通过直观的图形界面配置即可。接下来我将从设计思路、核心配置、实战场景到深度优化为你完整拆解这个强大的工具。2. 核心设计思路与架构解析2.1 为什么是安卓设备作为信息源在讨论具体功能前必须先理解项目的一个基本前提为什么选择安卓设备作为信息采集端这背后有深刻的现实考量。首先短信和大部分应用通知的接收在操作系统层面具有最高的权限和最原始的访问能力。iOS 系统由于其严格的沙盒和安全策略第三方应用几乎无法实时、可靠地获取系统级短信和其他应用的通知内容。而安卓系统尽管版本迭代也在收紧权限但通过辅助功能Accessibility Service和通知监听服务Notification Listener Service应用仍然可以在用户授权下合法、稳定地读取通知栏内容。其次成本与普及度。一部闲置的安卓旧手机甚至百元机是成本最低、最可靠的“硬件传感器”。它拥有独立的 SIM 卡槽、完整的网络功能Wi-Fi/移动数据和持久的电源供应插电即可。相比于自建一套接收短信的硬件模块如 GSM Modem或者依赖某些不稳定的云短信 API使用实体手机方案在可靠性、隐私性和零成本方面具有压倒性优势。SmsForwarder 正是巧妙地利用了这一点将每部安卓手机变成了一个强大的信息网关。2.2 核心工作流与规则引擎SmsForwarder 的核心是一个事件驱动的规则引擎。它的工作流可以简化为四个步骤捕获 - 过滤 - 处理 - 发送。捕获应用通过安卓的NotificationListenerService捕获所有到达通知栏的消息包括短信和应用通知。对于短信它还会通过ContentObserver监听短信数据库的变化实现双保险。捕获到的原始信息包含了发送方号码或应用包名、内容、时间等元数据。过滤这是项目的灵魂所在。所有捕获到的事件并不会全部转发而是进入规则过滤器。你可以在 App 内定义多条规则每条规则由“触发条件”和“执行动作”构成。触发条件支持对信息的多个字段进行匹配。例如手机号包含10086或95588。发送方对于通知是应用包名如com.taobao.taobao等于指定值。内容包含关键词 “验证码”、“告警”、“派件”。支持正则表达式实现更复杂的模式匹配如匹配所有格式为【XX公司】开头的短信。执行动作当一条信息满足某条规则的所有条件时则触发该规则对应的动作。动作主要是将信息按特定格式发送到指定的“转发渠道”。处理在发送前信息会经过模板处理。SmsForwarder 允许你自定义消息模板你可以决定最终发送出去的消息长什么样。例如你可以将模板设置为【{{来源}}】{{时间}}{{内容}}那么一条来自 10086 的短信 “您的余额已不足10元” 就会被格式化为【短信-10086】2023-10-27 14:30:15您的余额已不足10元这种处理极大地提升了消息的可读性和后续自动化处理的便利性例如方便在 Telegram 中设置关键词高亮。发送将格式化后的消息通过配置好的发送器Sender投递到目标平台。项目支持多达十几种发送通道每种通道都有其特定的配置和使用场景。这个“规则引擎”的设计使得 SmsForwarder 从简单的转发工具进化成了一个声明式的信息自动化系统。你只需要告诉它“当遇到什么样的信息时把它发到哪里、变成什么样子”剩下的全部自动完成。2.3 多渠道发送器选型与对比SmsForwarder 支持丰富的发送渠道理解它们的特点和适用场景是高效配置的关键。下面是一个核心渠道的对比分析发送渠道类型核心优势适用场景配置关键点Telegram Bot即时通讯推送能力强支持 Markdown 格式化API 稳定适合个人或小团队。个人信息汇总、服务器告警、自动化脚本通知。需要创建 Bot 并获取bot_token和chat_id。钉钉群机器人企业通讯与企业工作流深度集成支持签名安全校验消息格式丰富。运维告警、业务监控、团队任务通知。需在钉钉群添加“自定义机器人”并获取Webhook和Secret。企业微信机器人企业通讯与微信生态互通在国内访问稳定同样支持多种消息类型。国内团队协作、内部系统通知。需在企业微信群添加“群机器人”并获取Webhook Key。飞书群机器人企业通讯界面现代API 功能强大文档友好适合互联网团队。项目进度同步、系统状态监控。需在飞书群添加“自定义机器人”并获取Webhook URL。Bark推送服务专为 iOS 设备设计送达率极高配置极其简单无复杂概念。苹果用户接收个人重要通知验证码、快递。只需在 iPhone 上安装 Bark App获取其提供的唯一推送 URL。Webhook通用协议最灵活可以将消息转发到任何能处理 HTTP 请求的服务如自建服务器、自动化平台如 n8n, IFTTT。二次开发、与复杂业务系统集成、触发其他自动化流程。需提供一个可公网访问的 URL并可自定义请求头Header和请求体Body。电子邮件邮件通用性强适合归档或通知不常看即时通讯软件的人。重要信息的邮件备份、周报类汇总信息发送。需配置 SMTP 服务器信息如 QQ 邮箱、163 邮箱或企业邮箱。注意在选择渠道时首要考虑可达性和可靠性。对于关键告警建议至少配置两个不同原理的通道如“Telegram Bot 钉钉机器人”作为互备。个人使用Telegram 和 Bark 是体验最佳的选择团队办公场景则优先选用钉钉、企业微信或飞书。3. 从零开始的详细配置实战假设我们手头有一部闲置的安卓手机系统版本建议 Android 8.0 及以上希望实现1. 将所有银行短信转发到 Telegram 供存档2. 将淘宝的物流通知转发到 Bark 提醒自己3. 将服务器监控宝的告警短信转发到钉钉工作群。3.1 基础环境准备与安装设备准备将闲置手机恢复出厂设置插入一张能正常接收短信的 SIM 卡可以是月租最低的保号套餐卡。连接上稳定的 Wi-Fi 网络并设置为“永不休眠”。在电源设置中关闭所有省电优化选项防止应用后台被杀死。安装应用在手机浏览器中访问 SmsForwarder 的 GitHub Releases 页面下载最新的 APK 安装包并安装。或者通过 Google Play 搜索 “SmsForwarder” 安装如果可用。授予必要权限打开 SmsForwarder App它会逐步引导你开启所需权限这是最关键的一步通知读取权限在系统设置 - 应用 - SmsForwarder - 通知访问或“允许通知监听”中开启权限。这是读取所有应用通知的钥匙。短信读取权限同样在应用权限管理中开启“短信”读取权限。电池优化忽略在系统电池优化设置中找到 SmsForwarder选择“不优化”确保其能长期后台运行。自启动权限在手机管家中允许 SmsForwarder 自启动。实操心得不同品牌手机小米、华为、OPPO、vivo 等的权限名称和设置路径差异很大。如果遇到转发失败第一个排查点就是检查以上权限是否真正开启。特别是国内定制系统可能还有“应用锁”、“后台弹出界面”等额外限制需要一并允许。3.2 配置第一个转发渠道Telegram Bot我们的目标是将银行短信归档到 Telegram。创建 Telegram Bot在 Telegram 中搜索BotFather并对话。发送/newbot指令按提示设置机器人名字如MySmsBankBot和用户名必须以bot结尾如my_sms_bank_bot。创建成功后BotFather会返回一个HTTP API令牌形如1234567890:ABCDEFGhijklmnopQRSTUVWXYZ。妥善保存这个token它就是机器人的钥匙。获取你的 Chat ID在 Telegram 中找到你刚刚创建的 Bot向它发送任意一条消息比如/start。打开浏览器访问这个 URL将bot_token替换为你的 tokenhttps://api.telegram.org/botbot_token/getUpdates在返回的 JSON 数据中找到chat:{id:xxxxxx}字段其中的xxxxxx可能为负数就是你的私人chat_id。如果是群组需要先将 Bot 拉入群组然后在群组里发条消息再用同样方法获取群组的chat_id。在 SmsForwarder 中添加发送器打开 SmsForwarder App进入“发送通道”页面点击右上角 “”。选择 “Telegram” 填写名称TG-银行归档bot_token: 粘贴刚才获取的 token。chat_id: 粘贴你的私人 chat_id。代理可选如果你的网络环境无法直接访问 Telegram API可以在这里配置 HTTP 或 SOCKS5 代理。点击“测试”按钮。如果配置正确你的 Telegram 会立即收到一条来自 Bot 的测试消息。这步测试至关重要能避免后续规则失效时问题定位复杂化。3.3 配置规则抓取所有银行短信现在有了发送渠道我们需要创建规则来告诉 App什么样的信息该通过这个渠道发送。进入“转发规则”页面点击 “”。规则设置规则名转发银行短信匹配字段选择“发送方号码”。操作符选择“正则匹配”。匹配值填写(95588|95599|95566|95533|95555)。这是一个简单的正则表达式匹配工、农、中、建、招五大行的客服号码。你可以根据需要添加更多如(95588|95599|95566|95533|95555|10086)。重要勾选下方的“短信”作为消息来源。动作设置点击“动作”区域的 “”。选择发送通道为刚才创建的TG-银行归档。消息模板可以自定义。例如银行通知 时间{{time}} 来源{{from}} 内容 {{content}}点击保存。至此一条完整的规则就配置好了。当手机收到来自 95588 等号码的短信时App 会将其内容按照模板格式化然后通过你配置的 Telegram Bot 发送到你的私人聊天窗口。3.4 进阶配置区分通知类型与多动作触发接下来配置淘宝物流通知到 Bark以及服务器告警到钉钉。这涉及到对“应用通知”的识别和多动作配置。配置 Bark 发送器在 iPhone 上安装 Bark App打开后即可看到你的专属推送 URL类似https://api.day.app/your_device_key/。在 SmsForwarder 中添加发送器类型选“Bark”名称填“Bark-物流提醒”URL 填你获取到的完整地址。点击测试iPhone 应收到一条测试推送。创建淘宝物流规则难点在于如何确定淘宝通知的“发送方”。在 SmsForwarder 的“日志”页面先手动触发一次淘宝的物流通知比如在淘宝里查看物流。然后查看最新日志找到对应条目其中的“发送方”字段就是淘宝的包名通常是com.taobao.taobao。新建规则规则名“淘宝物流”。匹配字段选“发送方”操作符“等于”匹配值填com.taobao.taobao。同时为了更精确可以添加第二个匹配条件点击“添加匹配”匹配字段选“内容”操作符“包含”匹配值填“签收”或“派件”。这样只有物流状态变化的通知才会被触发。在动作中选择 Bark 发送器模板可以简单设为 淘宝物流{{content}}。配置钉钉机器人并处理告警短信在钉钉工作群点击“群设置” - “智能群助手” - “添加机器人” - “自定义机器人”。设置机器人名字如“服务器告警”安全设置选择“加签”记录下生成的WebhookURL 和Secret。在 SmsForwarder 中添加发送器类型“钉钉机器人”填入 Webhook 和 Secret测试连通。新建规则“服务器告警”。由于监控宝等服务的告警短信通常来自固定的特服号如1069xxxx我们可以用“发送方号码”匹配。更通用的做法是匹配“内容”中的关键词如“告警”、“异常”、“Error”、“CPU”、“内存”。在动作中选择钉钉机器人。钉钉支持 Markdown因此可以设计更清晰的模板** 服务器告警** 时间{{time}} 来源{{from}} 详情 {{content}}多动作配置对于核心告警你可以在同一条规则下添加第二个动作选择另一个发送器如企业微信实现双重保险。通过以上步骤一个功能清晰、各司其职的自动化信息转发系统就搭建完成了。闲置手机变成了一个 7x24 小时在线的信息过滤与路由中枢。4. 高阶技巧与深度优化方案基础功能用起来后我们可以追求更高效、更稳定的方案。以下是几个提升使用体验的关键技巧。4.1 利用“变量”与“模板”实现动态消息SmsForwarder 的模板引擎支持变量除了内置的{{from}}、{{content}}、{{time}}你还可以在规则中自定义变量并在模板中使用。场景转发验证码短信时我们可能只关心那 6 位数字希望把它提取出来并高亮显示。实现创建一条匹配验证码短信的规则匹配内容包含“验证码”。在规则的高级设置中使用正则表达式提取组。例如匹配值可以设为验证码是(\d{6})。这个正则表达式中的(\d{6})就是一个捕获组。在动作的模板中你可以用{{1}}来引用第一个捕获组的内容。模板可以写成验证码**{{1}}** 来自 {{from}}请勿泄露。这样最终推送的消息就会清晰地突出那 6 位数字极大提升了阅读效率。4.2 通过“Webhook”触发更复杂的自动化流程Webhook 发送器是 SmsForwarder 连接外部世界的万能接口。你可以将消息转发到任何支持 HTTP 请求的服务。场景一消息入库与数据分析。你可以搭建一个简单的 Flask 或 Node.js 服务接收 SmsForwarder 发来的 Webhook 请求将短信内容如消费记录解析后存入数据库如 MySQL 或 SQLite后续可以生成月度消费报表。SmsForwarder 的 Webhook 配置URL 填你的服务地址如http://your-server:5000/sms请求体可以设置为 JSON 格式{sender: {{from}}, message: {{content}}, time: {{time}}}。场景二联动智能家居。如果你使用 Home Assistant 等平台可以设置一个自动化当收到特定短信如“我快到家了”时Webhook 触发 Home Assistant 的接口执行打开空调、亮起客厅灯等操作。场景三消息聚合与去重。有些通知可能会在短时间内重复发送如连续的服务器 ping 超时告警。你可以在自建服务端实现一个简单的逻辑对相同内容的消息在 5 分钟内只记录一次或者将多条合并为一条摘要再发送到最终渠道避免信息轰炸。4.3 保障系统稳定性的关键设置让一个 App 在安卓后台长期稳定运行是个挑战尤其是国内各厂商定制系统。网络策略在 SmsForwarder 的设置中开启“Wi-Fi 和移动数据”同时使用。并建议在手机系统设置中为 SmsForwarder 应用**禁用“流量节省程序”和“智能省流量”**功能防止其在后台被断网。心跳与日志开启 SmsForwarder 内置的“定期心跳”功能。它可以配置一个周期如每 6 小时向某个发送器如 Telegram发送一条“我还活着”的消息。这是监控应用是否存活最直接的方式。同时定期查看应用内的“日志”页面能帮助你快速定位转发失败的原因如网络错误、渠道配置失效。设备级保活谨慎使用如果经过以上设置应用仍频繁被系统清理可以考虑一些温和的保活方案例如使用系统“小部件”如果支持将 SmsForwarder 固定在桌面或使用其他工具如“黑阈”的“充电时忽略”模式进行协同管理。不推荐使用过于激进的保活手段以免过度耗电或导致系统卡顿。5. 常见问题排查与实战心得即使配置再仔细在实际运行中也可能遇到问题。下面是我在长期使用中总结的“排错清单”。问题现象可能原因排查步骤与解决方案收不到任何转发消息1. 权限未正确授予。2. 应用被系统杀后台。3. 规则匹配条件设置错误。1. 重新检查“通知读取”、“短信读取”权限是否开启。2. 检查电池优化设置确保 SmsForwarder 为“不优化”。重启手机后观察。3. 查看“日志”页面看是否有捕获到通知/短信的记录。如果没有是权限或后台问题如果有记录但未触发转发检查规则匹配条件。特定App通知无法转发1. 该App的通知样式特殊。2. 通知内容在展开前为空。1. 在 SmsForwarder 的“通知监听”设置中尝试开启“捕获通知详情”。2. 在手机系统设置中找到该App的通知设置确保“锁屏通知”、“悬浮通知”等是开启状态让通知完整显示。Telegram/Bot 测试成功但收不到转发1.chat_id填写错误或已失效。2. 机器人被禁言或踢出群组。1. 重新访问getUpdatesAPI 确认当前的chat_id。2. 在 Telegram 中检查与 Bot 的对话或所在群组确保 Bot 有发送消息的权限。钉钉/企业微信机器人收不到消息1. Webhook URL 或 Secret 填写错误。2. 安全设置如 IP 白名单、关键词限制。1. 重新从群机器人设置页面复制完整的 Webhook URL注意不要遗漏或添加空格。2. 检查机器人安全设置如果是“自定义关键词”确保发送的消息模板中包含至少一个关键词如果是“加签”确保 Secret 填写正确。消息转发延迟大1. 手机网络状况差。2. 系统处于深度休眠。1. 确保手机连接信号良好的 Wi-Fi。2. 关闭手机的“睡眠模式”或“超级省电模式”并确认 SmsForwarder 已在后台运行白名单中。转发内容乱码或不全1. 模板配置有误。2. 源通知内容本身包含特殊字符或换行。1. 检查消息模板变量如{{content}}是否拼写正确。2. 查看“日志”中捕获的原始内容如果这里就不全是捕获问题如果这里完整但转发后不全可能是发送渠道对消息长度或格式有限制需调整模板。我的几点核心心得始于日志终于日志遇到任何问题第一个动作就是打开 SmsForwarder 的“日志”页面。它能告诉你应用是否收到了通知、规则是否匹配成功、发送器是否执行以及具体的错误信息。这是定位问题的黄金入口。测试驱动配置每配置好一个发送器务必点“测试”每创建一条重要规则可以手动触发一次符合条件的通知比如给自己发条测试短信观察整个链路是否通畅。不要等所有配置都做完再测试。规则宜精不宜多避免创建大量宽泛的规则这会影响匹配效率并可能产生意料之外的消息轰炸。尽量让规则具体化多用“与”条件进行组合过滤。隐私安全红线这部手机将接收你所有的短信和通知。务必将其视为一个受信任的私有设备。不要安装来源不明的应用定期更新系统和 SmsForwarder 版本。切勿将用于转发的 Token、Webhook、Secret 等信息泄露出去。SmsForwarder 的强大在于它用简单的逻辑解决了信息碎片化的复杂问题。它不需要你懂编程但通过巧妙的规则配置却能实现堪比脚本的自动化效果。花上半天时间搭建并调校好这个系统它将在未来很长一段时间里默默为你守护信息流让重要的声音第一时间被听到让无用的噪音自动消弭于无形。这或许就是数字时代一种优雅的减法智慧。