小程序业务需求要用到模板消息推送,在此记录。
在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com ,功能->订阅消息->获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
小程序端消息订阅接口 wx.requestSubscribeMessage
调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。
示例代码:
wx.requestSubscribeMessage({
tmplIds: [''],// 需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息
success (res) {
errMsg //String 接口调用成功时errMsg值为'requestSubscribeMessage:ok'
TEMPLATE_ID
//String [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'。
//'accept'表示用户同意订阅该条id对应的模板消息,
//'reject'表示用户拒绝订阅该条id对应的模板消息,
//'ban'表示已被后台封禁。
//例如{ errMsg: "requestSubscribeMessage:ok",
//zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"}
//表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息
}
})
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
复制
只有在用户点击允许发送订阅消息后才能顺利将订阅消息发送给用户。
且如果用户未选择“总是保持以上选择,不再询问”,则只能发送一次订阅消息。
服务端消息发送接口 subscribeMessage.send
请求地址(POST)
https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
获取接口调用凭据
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
access_token | string | 是 | 接口调用凭证 |
touser | string | 是 | 接收者(用户)的 openid |
template_id | string | 是 | 所需下发的订阅模板id |
page | string | 否 | 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板 无跳转。 |
data | Object | 是 | 模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } } |
miniprogram_state | string | 否 | 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 |
返回值
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
发送成功返回:{errcode: 0, errmsg: "ok"}
订阅消息参数值内容限制说明:
模板中每个字段都有其对应的参数值限制,详见小程序开发文档
符号表示除中文、英文、数字外的常见符号,不能带有换行等控制字符。 时间格式支持HH:MM:SS或者HH:MM。 日期包含年月日,为y年m月d日,y年m月、m月d日格式,或者用‘-’、‘/’、‘.’符号连接, 如2018-01-01,2018/01/01,2018.01.01,2018-01,01-01。 每个模板参数都会以类型为前缀,例如第一个数字模板参数为number01.DATA,第二个为number02.DATA
例如,模板的内容为
姓名: {{name01.DATA}}
金额: {{amount01.DATA}}
行程: {{thing01.DATA}}
日期: {{date01.DATA}}
1 2 3 4 5 6 7
复制
则对应的json为
{
"touser": "OPENID", //接收者(用户)的 openid
"template_id": "TEMPLATE_ID", //所需下发的订阅模板id
"page": "index", //点击模板卡片后的跳转页面
"data": { //模板内容
"name01": {
"value": "某某"
},
"amount01": {
"value": "¥100"
},
"thing01": {
"value": "广州至北京"
} ,
"date01": {
"value": "2018-01-01"
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
复制