subscribeMessage.send

本接口应在服务器端调用,详细说明参见服务端API

本接口支持云调用。需开发者工具版本 >= 1.02.1904090(最新稳定版下载),wx-server-sdk >= 0.4.0

发送订阅消息

调用方式:

HTTPS 调用

请求地址

  1. POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN

请求参数

属性类型默认值必填说明
access_tokenstring接口调用凭证
touserstring接收者(用户)的 openid
template_idstring所需下发的订阅模板id
pagestring点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
dataObject模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }
miniprogram_statestring跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
langstring进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN

返回值

Object

返回的 JSON 数据包

属性类型说明
errcodenumber错误码
errmsgstring错误信息

errcode 的合法值

说明最低版本
40003touser字段openid为空或者不正确
40037订阅模板id为空不正确
43101用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系
47003模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错
41030page路径不正确,需要保证在现网版本小程序中存在,与app.json保持一致

接口限制

次数限制:开通支付能力的是3kw/日,没开通的是1kw/日。

请求示例

  1. {
  2. "touser": "OPENID",
  3. "template_id": "TEMPLATE_ID",
  4. "page": "index",
  5. "miniprogram_state":"developer",
  6. "lang":"zh_CN",
  7. "data": {
  8. "number01": {
  9. "value": "339208499"
  10. },
  11. "date01": {
  12. "value": "2015年01月05日"
  13. },
  14. "site01": {
  15. "value": "TIT创意园"
  16. } ,
  17. "site02": {
  18. "value": "广州市新港中路397号"
  19. }
  20. }
  21. }

订阅消息参数值内容限制说明

参数类别参数说明参数值限制说明
thing.DATA事物20个以内字符可汉字、数字、字母或符号组合
number.DATA数字32位以内数字只能数字,可带小数
letter.DATA字母32位以内字母只能字母
symbol.DATA符号5位以内符号只能符号
character_string.DATA字符串32位以内数字、字母或符号可数字、字母或符号组合
time.DATA时间24小时制时间格式(支持+年月日),支持填时间段,两个时间点之间用“~”符号连接例如:15:01,或:2019年10月1日 15:01
date.DATA日期年月日格式(支持+24小时制时间),支持填时间段,两个时间点之间用“~”符号连接例如:2019年10月1日,或:2019年10月1日 15:01
amount.DATA金额1个币种符号+10位以内纯数字,可带小数,结尾可带“元”可带小数
phone_number.DATA电话17位以内,数字、符号电话号码,例:+86-0766-66888866
car_number.DATA车牌8位以内,第一位与最后一位可为汉字,其余为字母或数字车牌号码:粤A8Z888挂
name.DATA姓名10个以内纯汉字或20个以内纯字母或符号中文名10个汉字内;纯英文名20个字母内;中文和字母混合按中文名算,10个字内
phrase.DATA汉字5个以内汉字5个以内纯汉字,例如:配送中

符号表示除中文、英文、数字外的常见符号,不能带有换行等控制字符。 时间格式支持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

例如,模板的内容为

  1. 姓名: {{name01.DATA}}
  2. 金额: {{amount01.DATA}}
  3. 行程: {{thing01.DATA}}
  4. 日期: {{date01.DATA}}

则对应的json为

  1. {
  2. "touser": "OPENID",
  3. "template_id": "TEMPLATE_ID",
  4. "page": "index",
  5. "data": {
  6. "name01": {
  7. "value": "某某"
  8. },
  9. "amount01": {
  10. "value": "¥100"
  11. },
  12. "thing01": {
  13. "value": "广州至北京"
  14. } ,
  15. "date01": {
  16. "value": "2018-01-01"
  17. }
  18. }
  19. }

云调用

云调用是小程序·云开发提供的在云函数中调用微信开放接口的能力,需要在云函数中通过 wx-server-sdk 使用。

接口方法

  1. openapi.subscribeMessage.send

需在 config.json 中配置 subscribeMessage.send API 的权限,详情

请求参数

属性类型默认值必填说明
touserstring接收者(用户)的 openid
templateIdstring所需下发的订阅模板id
pagestring点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
dataObject模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }
miniprogramStatestring跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
langstring进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN

返回值

Object

返回的 JSON 数据包

属性类型说明
errCodenumber错误码
errMsgstring错误信息

errCode 的合法值

说明最低版本
0成功

异常

Object

抛出的异常

属性类型说明
errCodenumber错误码
errMsgstring错误信息

errCode 的合法值

说明最低版本
40003touser字段openid为空或者不正确
40037订阅模板id为空不正确
43101用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系
47003模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错
41030page路径不正确,需要保证在现网版本小程序中存在,与app.json保持一致

请求示例

  1. const cloud = require('wx-server-sdk')
  2. cloud.init({
  3. env: cloud.DYNAMIC_CURRENT_ENV,
  4. })
  5. exports.main = async (event, context) => {
  6. try {
  7. const result = await cloud.openapi.subscribeMessage.send({
  8. touser: 'OPENID',
  9. page: 'index',
  10. lang: 'zh_CN',
  11. data: {
  12. number01: {
  13. value: '339208499'
  14. },
  15. date01: {
  16. value: '2015年01月05日'
  17. },
  18. site01: {
  19. value: 'TIT创意园'
  20. },
  21. site02: {
  22. value: '广州市新港中路397号'
  23. }
  24. },
  25. templateId: 'TEMPLATE_ID',
  26. miniprogramState: 'developer'
  27. })
  28. return result
  29. } catch (err) {
  30. return err
  31. }
  32. }