PushMsg 使用公众号服务端接口发送模板通知和客服文本。公众号权限、模板内容与接收人身份都属于微信侧配置;应用密钥由 PushMsg 单独管理。
准备公众号
| 项目 | 配置说明 |
|---|---|
| 账号与权限 | 普通服务号模板消息需要对应的微信认证与接口权限,以账号后台显示为准 |
| AppID / AppSecret | 在公众号开发配置中获取,填写到 PushMsg 的公众号通道中 |
| 接口 IP 白名单 | 将实际发起微信接口请求的应用服务器出口 IP 加入白名单 |
| 接收人 OpenID | 必须属于当前公众号;普通模板通知还需满足关注与消息接收条件 |
| 可用模板 | 将符合业务场景的模板添加到该公众号的“我的模板” |
当前应用服务器为 14.103.113.229,生产文档和管理后台也部署于该服务器的独立站点目录。192.168.0.21 仅保留为局域网文档预览服务器,不是业务推送出口。
开通并添加模板
- 管理员登录微信公众平台,选择目标服务号。
- 在“新的功能”或“添加功能插件”中查找“模板消息”,按后台要求申请开通;已经开通的账号进入对应功能即可。菜单名称可能随后台版本调整。
- 按真实业务选择服务类目,并按页面要求提交资质。
- 进入公共模板库,查询符合业务场景的模板,检查其字段后添加到“我的模板”。
- 使用“我的模板”中生成的完整模板 ID。公共模板编号用于检索,不能直接代替发送接口的模板 ID。
正式服务号通常从公共模板库选择模板,发送时填写既定字段。模板消息、订阅通知和一次性订阅消息是不同能力,不能仅凭模板标题判断应调用哪种接口。
PushMsg 的普通 TEMPLATE 消息使用 /cgi-bin/message/template/send。当前 CRM 封装使用已验证的“新客户跟进通知”,由服务端保存其模板 ID;CRM 不需要自己组装微信字段名。字段对照见模板与字段。
在 PushMsg 创建通道
在管理控制台的“公众号通道”中填写:
| 字段 | 示例或含义 |
|---|---|
| 通道标识 | xianbao,由业务系统引用,创建后不可修改 |
| 公众号名称 | 管理界面与 OpenID 页面展示的名称 |
| AppID | 当前公众号的 AppID,创建后不可修改 |
| AppSecret | 创建时必填,加密保存;后续编辑留空保留原值 |
| 回调 Token | 仅用于可选的公众号服务器回调,与业务 API Key 分开 |
| 启用状态 | 停用后不接受该通道的新任务,尚未发送的任务也会被工作线程阻止 |
管理后台使用可信 HTTPS 入口 https://pmsg.admin.xianboss.com/admin/。CRM 接口和 OpenID 页面使用 openid.xianboss.com 的可信 HTTPS。
保存后可在“推送测试”中读取微信模板,核对模板标题与字段。读取模板或关注用户列表本身不会发送消息。详细操作见管理控制台。
配置网页授权域名
获取用户 OpenID 的页面使用微信网页授权。请在该公众号后台的“网页授权域名”中填写:
openid.xianboss.com
填写域名,不填写协议、端口或完整页面 URL。若平台要求文件校验,将其提供的 MP_verify_*.txt 原文件放在该域名对应站点根目录,保证微信能读取。
当前授权页面的站点目录为 /www/wwwroot/openid.xianboss.com,与文档站目录不同。完整获取流程见获取 OpenID。
可选的服务器回调
主动推送和当前 OpenID 获取流程不要求开启公众号服务器消息回调。PushMsg 提供的可选回调路由为:
/wechat/{channelId}/callback
当前实现支持明文模式:GET 校验签名后返回 echostr;POST 校验签名后仅返回 success。它不处理聊天会话、不记录模板送达事件,也不支持安全或兼容加密模式。
回调示例地址应使用具有可信证书且已正确反向代理的域名:
https://YOUR_CALLBACK_DOMAIN/wechat/xianbao/callback
该地址是部署示例。当前 openid.xianboss.com 站点仅开放 OpenID、CRM 接口与对应静态页面,并未开放上述普通回调路由;IP 自签名证书入口也不适合作为微信回调地址。已有其他系统接管公众号回调时,保留其配置即可。
核对配置
- 模板 ID 来自当前 AppID 对应账号的“我的模板”。
- 接收人的 OpenID 来自当前公众号,不能跨公众号复用。
data中的字段名与当前模板完全一致。- 微信返回
40164时检查应用服务器出口白名单;返回40037时重新核对账号下的模板。
平台权限和接收规则以当前公众号后台及微信官方模板消息文档为准。