【在线工具】一封传话推送服务
网站做到一定阶段,总会有几件事需要马上告诉用户:新文章上线、商品补货、订单发货、会员快到期。短信贵,邮件打开率低,站内信要用户回站才看得到;想推到微信、钉钉、飞书,又得逐家申请机器人、研究各自的签名和模板。今天介绍的一封传话(push-server)把这些差异收进一个通道码里:你只维护「什么时候推、推给谁、推什么」,投递、重试、多端适配交给它。下面说明它是什么、能用在哪些场景,以及如何用 push-sdk.js 在五分钟内接进自己的网站。
不用注册官网也能先体验:打开一封传话的分享页,用邮箱开通一条通道,新增、修改、测试推送都能在页面上完成,理解清楚之后再把接口接进项目。
在线体验:https://push.phprm.com/message/share.html
一、一封传话是什么
它是一个聚合推送服务:企业微信群机器人、钉钉群机器人、飞书群机器人、企业微信应用、Bark(iOS)、Telegram、Discord、自定义 Webhook、浏览器通知,以及 QQ / 163 / 126 / 搜狐 / 139 / 189 / 新浪 / 阿里云邮箱和官方邮件,都在同一套接口后面。用户选哪个工具接收,就配哪条通道;你只拿一串 32 位通道码 去推送。
对网站站长来说,最省事的一点是用户不需要在你的网站注册:他只要填写邮箱,收一次验证码,就能拿到属于自己的通道码。新用户会自动开通一条通道;已经注册过一封传话的用户,登录后直接复用他账号下已有的通道,不会重复开通。
二、这些场景值得推送
内容更新:新文章、新视频、新版本发布,订阅用户第一时间收到标题和链接;
订阅关注:用户订阅作者、栏目、标签或话题,只推他真正关心的内容;
商品到货与价格变动:缺货登记、降价提醒、限时折扣开始,入库或变价时自动通知;
公告与维护:停机维护、服务恢复、规则调整,一次推送覆盖所有订阅用户;
订单与物流:已支付、已发货、派送中、已签收,关键节点送到用户手机上;
互动提醒:有人回复帖子、评论被点赞、被 @,不必守在站内刷新;
到期与续费:会员、证书、域名、试用到期,提前几天提醒;
活动与开售:预约的直播、课程、限量商品开始,准时通知;
安全提醒:异地登录、密码变更、绑定信息修改,第一时间告知账号主人;
审批与工单:工单有回复、审批通过或被驳回,直接推给发起人;
网盘内容更新:订阅的文件夹或分享链接有新文件、新版本时自动提醒。
三、为什么用统一 SDK
多通道聚合:一个组合通道背后可以挂多条子通道,一次调用同时送到值班手机、团队群和邮箱,调用方只存一个通道码;
不用重复开发:不用逐家申请机器人、研究签名与模板、处理令牌过期,各家平台的差异由一封传话消化;
一个 SDK 统一集成:push-sdk.js 支持浏览器 <script>、CommonJS 和 ES Module,前端后台都能用;
用户自助管理:加通道、换绑接收工具由用户自己在页面上操作,你的网站不用改代码;
推送记录可查:每次推送都有记录,方便确认某条通知到底有没有送达。
四、五分钟接入
整个过程四步:引入 SDK、给用户开通道码、把通道码存进用户资料、事件发生时推送一次。
1. 引入并初始化
<script src="https://push.phprm.com/static/js/push-sdk.js"></script>
<script>
var pushSdk = YfPush.create({
apiBase: 'https://www.phprm.com', // 默认就是这个地址,可以省略
mcpSource: 'my-website' // 你的站点标识,便于后台区分调用来源
});
</script>2. 用邮箱换通道码:挂一张授权卡片
SDK 自带完整的「一键开通」卡片,包含登录方式下拉、邮箱输入、验证码引导和轮询,你只需要给一个容器:
<div id="auth-slot"></div>
<script src="https://push.phprm.com/static/js/push-sdk.js"></script>
<script>
YfPush.create({ mcpSource: 'my-website' }).mountAuthCard('#auth-slot', {
title: '订阅更新通知',
desc: '用邮箱接收验证码,开通后新内容会推送到你常用的聊天工具。',
onSuccess: function (result) {
// result.channelCode 就是这位用户的推送通道码
saveChannelCode(result.channelCode); // 存进你自己的用户资料
}
});
</script>想自己画界面时,用 createEmailSession(email) 拿到授权链接,再按返回的间隔轮询 pollSession(sessionId):pending 继续等,success 立刻保存 channelCode,expired / consumed / failed 则提示用户重新发起。会话有效期 10 分钟,通道码只返回一次。
落地建议:在用户表里加一个 push_channel_code 字段,每个用户一条自己的通道码,后续停用、重置、查推送记录互不干扰。
3. 发一条推送
拿到通道码后,最简单的推送就是请求一个网址,把 head、body、url、avatar 带上:
https://www.phprm.com/services/push/trigger/你的通道码?head=你订阅的栏目更新了&body=新文章已发布&url=https://your-site.com/post/123&avatar=https://your-site.com/logo.png
参数值里带中文、空格或 & 时先做 URL 编码。服务端定时任务用 POST 更方便,但只接受 application/json;已经在用 SDK 的项目也可以直接调 pushSdk.sendPushMessage(通道码, { head, body, url, avatar })。其中 head 必填,body 支持 Markdown,太长时改用 POST。
五、通道管理:API 与页面按钮对照
下面这些方法,和分享页上的按钮一一对应。不写代码也可以先在页面上点一遍,理解每条通道在管什么。
| 页面功能 | SDK 方法 | 说明 |
|---|---|---|
| 刷新 / 通道列表 | listChannels(code) | 返回父通道和子通道列表(名称、类型、通道码、状态、二维码地址)。 |
| + 新增推送通道 | addChannel(code, params) | 选推送类型、填通道名;群机器人填 Webhook,邮箱类型填发信人、地址、授权码。 |
| 修改 | editChannel(code, params) | 改名、改配置、启用或停用(status 0/1)。 |
| 删除 | deleteChannel(code, targetCode) | 删除指定子通道;页面当前绑定的那条,服务端会拒绝删除。 |
| 重置通道码 | resetChannel(code, targetCode) | 换一个新码并返回,旧码立即失效,适合怀疑泄露时使用。 |
| 测试 | sendPushMessage(code, message) | 向指定通道发一条测试消息,确认用户那边能收到。 |
| 推送记录 | recordsUrl(qrCodeUrl) | 把通道的二维码地址换成该通道的推送记录页。 |
通道码是什么:一串 32 位十六进制字符,就是一封传话里「往哪个通道发」的凭证。父通道码能推给组内所有子通道,子通道码只推到那一个接收端。
六、几条安全建议
通道码等同于推送凭证,不要展示给无关的人,也不要写进公开仓库;
组合通道码能触达所有子通道,只放在服务端;前端只使用当前用户自己的子通道码;
怀疑泄露时调用 resetChannel 换码,旧码立即失效;
给每个用户单独开子通道,停用、重置、查记录都互不影响。
七、常见问题
用户没收到验证码邮件?
先让用户检查垃圾邮件和推广邮件目录,确认邮箱拼写无误。授权会话只有 10 分钟,过期就重新调一次创建会话的方法。
轮询返回 expired / consumed / failed?
说明这次会话已经不能用了:停止轮询,让用户重新发起授权。不要复用旧的 sessionId。
需要自己的服务器做中转吗?
不需要。trigger 网址从浏览器、服务端、定时任务请求都能用;SDK 从浏览器直连官方服务,已开启跨域。
用户想换接收方式怎么办?
让用户在一封传话的通道管理页新增或修改通道即可,你的网站代码不用动,他的通道码保持不变。
八、结语
值得让用户马上知道的事,不该埋在站内信里。把事件交给一封传话,用户选自己常用的接收工具,你只维护一条通道码和一次 trigger 请求,推送这件事就接完了。除了网站推送,官方还开源了 AI 弹幕组件(一行代码给页面加实时弹幕)和 push-server Agent Skill(让 AI 助手按规范主动汇报推送),可以按需选用。
在线体验通道管理:https://push.phprm.com/message/share.html
控制台与注册:https://push.phprm.com/mcp.html
Agent 接入说明:https://push.phprm.com/skill.md
文章链接:https://www.phprm.com/develop/push.html
随便收藏,请保留本文地址!