微信公众号
微信公众号是企业或个人在微信里开设的官方账号,用户关注后可以收到它的消息、点它的菜单、和它对话。关注了公众号的用户叫粉丝。栖梧的公众号模块让你在自己的后台里管理一个或多个公众号:接入账号、接收和回复粉丝的消息、设置自动回复和菜单、管理粉丝和素材,以及发文章、群发和看统计。
几个常见的名词:
- 服务号、订阅号:公众号的两种类型。服务号能用的接口更多;订阅号现在在公众平台上叫“公众号(原订阅号)”。
- 认证:向微信提交资料、确认运营主体的身份。没有认证的账号很多接口没有权限。
- 测试号:微信给开发者的免费测试账号,扫码即可得到,用来在正式上线前试功能。
- AppID、AppSecret:微信给每个公众号的身份编号和密钥,在公众平台的开发配置里查看。
打开开关
开关是服务端的环境变量 APP_WXOA,默认 false。它只在启动时读取,改完要重启全部服务端实例。
| 地方 | 关闭(默认) | 打开 |
|---|---|---|
| 接口 | /api/wxoa/* 全部返回 404,包括接收微信推送的回调地址 | 正常使用 |
| 菜单 | 侧栏和角色授权树里看不到 公众号 分组(菜单管理里照常列出) | 按权限显示 |
| 微信 | 不访问微信,公众号的定时任务也不运行 | 按需调用 |
| 数据表 | 照常由数据库迁移创建,保持为空 | 正常写入 |
打开后在侧栏的 公众号 分组里使用。开关的完整说明见仓库的公众号管理 · 启用,部署时的注意事项见部署 · 公众号模块。
接入与互动
这一组功能已经用微信测试号在真机上验证过。
接入账号
在 公众号 → 账号管理 里新建账号,填 AppID、AppSecret、Token(自己定的一串字符,和微信那边填的一致)等。一个后台可以接入多个公众号,页面顶部可以切换当前账号。
- 密钥只写不读:AppSecret、Token 和 EncodingAESKey(加密用的密钥)加密保存,详情里只显示“已设置”,编辑时留空表示不变;
- AppID 不能修改:粉丝、素材、菜单都只对原来的公众号有效,换公众号请新建账号;
- 测试连接:检查能不能取到调用微信接口用的令牌,正式号还会检查 IP 白名单(公众平台只接受白名单里的服务器调用接口);
- 接口配额:查看常用接口今天的调用次数。
测试号和正式号的接入步骤见仓库的配置项、测试号、正式号和 IP 白名单。
接收微信推送
粉丝发消息、关注、点菜单时,微信会把这件事推送到你填的服务器地址(也叫回调地址)。保存账号后页面上会显示这个地址,复制后填到公众平台。
- 支持三种消息加解密方式:明文(不加密,只建议测试号用)、兼容和安全;
- 每个推送都要验证签名,过期或重放的请求被拒绝;
- 微信只等约 5 秒,收到推送后先回复,其余工作在回复之后处理;重复的推送只处理一次。
见仓库的回调地址、加密方式(含切换加密方式的顺序)和 5 秒、重试与排重。
消息与会话
- 公众号 → 消息记录:查看粉丝发来的消息和事件;
- 公众号 → 会话:按粉丝查看对话并回复(客服消息)。微信只允许在粉丝最近互动后的一段时间内回复,超出时间会提示;
- 粉丝发来的图片、语音和视频缩略图默认复制到本地存储,因为微信只保留 3 天;
- 消息默认保留 180 天,过期的由定时任务清理。
见仓库的消息与会话。
自动回复
在 公众号 → 自动回复 里设置规则:关注时回复、按关键词回复、点菜单时回复、没有命中时的默认回复,以及粉丝扫渠道二维码时的回复。改完立即生效。见仓库的自动回复。
自定义菜单
在 公众号 → 自定义菜单 里编辑公众号底部的菜单,编辑区是一个手机预览,所见即所得,编辑好再发布到微信。除了所有人看到的默认菜单,还可以建个性化菜单:按粉丝标签或手机平台显示不同的菜单。
启用服务器配置之后
按微信的规则,正式号在公众平台启用服务器配置后,公众平台后台设置的自动回复和自定义菜单不再生效,改由本系统管理。
粉丝、标签与黑名单
公众号 → 粉丝管理 列出关注过公众号的粉丝,可以从微信同步、给粉丝打标签(分组)、拉入或移出黑名单,并导出 Excel。微信自 2021 年 12 月 27 日起不再返回粉丝的昵称和头像。见仓库的同步与多实例。
素材、模板消息与渠道二维码
- 公众号 → 素材管理:上传和同步永久素材(长期保存在微信上的图片、语音、视频),回复和群发都用它;
- 公众号 → 模板消息:用公众号的消息模板给粉丝发通知;
- 公众号 → 渠道二维码:给不同渠道(比如门店、海报)各生成一个二维码,统计扫码次数;粉丝通过它关注时,可以自动打上指定的标签。
内容与运营
这一组功能按微信的规则需要已认证的服务号。到目前为止,它们只在模拟微信接口的测试环境里验证过,还没有在真实的认证服务号上核对。见仓库的验证情况。
- 公众号 → 图文草稿:写文章草稿(每份 1–8 篇),用富文本编辑器编辑,同步到微信草稿箱,也可以从微信拉取;正文图片只上传本站存储里的图片。见仓库的图文草稿与发表;
- 公众号 → 发表记录:把已同步的草稿发表出去,查看发表状态和文章链接;
- 公众号 → 群发消息:向全部粉丝、某个标签或指定粉丝群发文字、图片、语音、视频或图文,可以先预览给一个粉丝。网络超时等原因导致提交结果不明时,可以在微信 24 小时防重复的期限内“重发”,不会让粉丝收到两次;超过期限就不再提供重发。图文群发的记录里还能管理文章的留言。见仓库的群发;
- 公众号 → 数据统计:用户增减、消息、接口和图文的图表,一次最多查 90 天;
- 公众号 → 订阅通知:管理订阅通知模板,并发送给已经授权的粉丝。
统计、留言和订阅通知的细节见仓库的数据统计、留言与订阅通知。
权限
每个页面有各自的按钮权限,权限点以 wxoa. 开头。权限只按功能划分:有某项权限,就能操作全部账号。完整的权限表见仓库的权限。
多租户
打开多租户时:
- 每个租户管理自己的公众号,看不到别的租户的账号和数据;
- 一个 AppID 只能接入一个租户;
- 新建账号时先用填写的 AppSecret 向微信验证一次,证明添加的人确实拥有这个公众号,验证失败就不建账号;
- 平台人员可以在 系统管理 → 租户管理 里按 AppID 查出是哪个租户占用了它;
- 租户的套餐里要勾上 公众号 分组,这个租户才能使用。
在演示站体验
在线演示打开了公众号模块,运行在演示模式下:保存等写入操作和对微信的调用都会被拒绝。演示站准备了一个虚构的样例服务号,以及样例粉丝、标签、消息、菜单、回复规则和二维码,可以随意浏览。见仓库的演示模式。
已知限制
- 不包含微信支付、卡券、第三方平台代授权、客服账号分配、网页授权和 JS-SDK;
- 订阅通知只能发给已经通过其他途径完成授权的粉丝;
- 删除渠道二维码只删本系统的记录,永久二维码在微信那边仍然有效。
完整清单见仓库的其它限制。
相关功能: