# 发送模板消息

调试工具

接口应在服务器端调用,不可在前端(小程序、网页、APP等)直接调用,具体可参考接口调用指南

接口英文名:sendTemplateMessage

本接口用于向用户发送模板消息

# 1. 调用方式

# HTTPS 调用

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

# 云调用

  • 调用方法:officialAccount.messageTemplate.send

  • 出入参和 HTTPS 调用相同,调用方式可查看 云调用 说明文档

# 第三方调用

  • 本接口支持第三方平台代商家调用。

  • 该接口所属的权限集 id 为:7、100-101

  • 服务商获得其中之一权限集授权后,可通过使用 authorizer_access_token 代商家进行调用,具体可查看 第三方调用 说明文档。

# 2. 请求参数

# 查询参数 Query String parameters

参数名类型必填示例说明
access_tokenstringACCESS_TOKEN接口调用凭证,可使用 access_tokenauthorizer_access_token

# 请求体 Request Payload

参数名类型必填说明
touserstring接收者(用户)的 openid
template_idstring所需下发的订阅模板id
urlstring模板跳转链接(海外账号没有跳转能力,url 和 miniprogram 同时不填,无跳转,url 和 miniprogram 同时填写,优先跳转小程序)
miniprogramobject跳转小程序时填写(url 和 miniprogram 同时不填,无跳转,page 和 miniprogram 同时填写,优先跳转小程序)
dataobject模板内容,需根据模板给定的格式给出(参考注意事项),格式形如 { "key1": { "value": any }, "key2": { "value": any } }
client_msg_idstring防重入id。对于同一个openid + client_msg_id, 只发送一条消息,10分钟有效,超过10分钟不保证效果。若无防重入需求,可不填

# Body.miniprogram Object Payload

跳转小程序时填写(url 和 miniprogram 同时不填,无跳转,page 和 miniprogram 同时填写,优先跳转小程序)

参数名类型必填说明
appidstring小程序appid
pagepathstring小程序跳转路径

# Body.data Object Payload

模板内容,需根据模板给定的格式给出(参考注意事项),格式形如 { "key1": { "value": any }, "key2": { "value": any } }

参数名类型必填说明
thing.DATAstring事物,可汉字、数字、字母或符号组合,20个以内字符

适用范围:供姓名关键词、地址关键词、机构/组织名关键词选择(如:单位名、银行名、医院名、科室、班级)、品名关键词选择(如:药品名、股票名、课程名、科目名、岗位名)

character_string.DATAstring字符串,可数字、字母或符号组合,32位以内数字、字母或符号

适用范围:供数字/编码/编号/单号/卡号/航班号关键词选择(如:证券编码、设备编号、快递单号、银行卡号、网址)

time.DATAstring时间,24小时制时间格式(支持+年月日),支持HH:MM:SS或者HH:MM,支持填时间段,两个时间点之间用“~”符号连接,例如:「15:01」或「2019年10月1日 15:01」

适用范围:供时间类关键词选择

amount.DATAstring金额,1个币种符号+10位以内纯数字,可带小数,结尾可带“元”

适用范围:供金额类关键词选择

phone_number.DATAstring电话号码,17位以内,数字、符号,例:+86-0766-66888866

适用范围:供电话号码类关键词选择

car_number.DATAstring车牌号码,8位以内,第一位与最后一位可为汉字,其余为字母或数字,如:粤A8Z888挂

适用范围:供车牌号码类关键词选择

const.DATAstring常量,20位以内字符,超过无法下发;另外需要枚举(需将内容提交平台审核,审核通过可下发)只能下发审核通过的字符串和空串

适用范围:供状态/方式/类型/提醒/说明/详情关键词选择(如:支付状态、排队状态、天气状态、物流状态、用药提醒、还款提醒)

# 3. 返回参数

# 返回体 Response Payload

参数名类型说明
msgidnumber消息id
errcodenumber错误码
errmsgstring错误描述

# 4. 注意事项

url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

各 DATA 注意事项:

  • 符号:表示除中文、英文、数字外的常见符号,不能带有换行等控制字符。
  • 时间:格式支持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,发送模版通知时,通知内容应于模板参数一致,每个模板参数都会以类型为前缀,例如第一个数字模板参数为number01.DATA,第二个为number02.DATA

例如,模板的内容为

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

则对应的json为

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "data": {
      "name01": {
          "value": "某某"
      },
      "amount01": {
          "value": "¥100"
      },
      "thing01": {
          "value": "广州至北京"
      },
      "date01": {
          "value": "2018-01-01"
      }
  }
}

如果参数不符合要求,会收到如下提示,并指明不符合要求的字段:

{
    "errcode":47003,
    "errmsg":"thing01.DATA is invalid"
}

# 5. 代码示例

请求示例

  {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",  
           "miniprogram":{
             "appid":"xiaochengxuappid12345",
             "pagepath":"index?foo=bar"
           },
           "client_msg_id":"MSG_000001",
           "data":{

                   "keyword1":{
                       "value":"巧克力"
                   },
                   "keyword2": {
                       "value":"39.8元"
                   },
                   "keyword3": {
                       "value":"2014年9月22日"
                   }
           }
       }

返回示例

{
  "errcode":0,
  "errmsg":"ok",
  "msgid":200228332
}

# 6. 错误码

以下是本接口的错误码列表,其他错误码可参考 通用错误码

错误码错误描述解决方案
-1system error系统繁忙,此时请开发者稍候再试
40001invalid credential  access_token isinvalid or not latest获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口
40003invalid openid不合法的 OpenID ,请开发者确认 OpenID (该用户)是否已关注公众号,或是否是其他公众号的 OpenID
40008invalid message type不合法的消息类型
40013invalid appid不合法的 AppID ,请开发者检查 AppID 的正确性,避免异常字符,注意大小写
40036invalid template_id size不合法的 template_id 长度
40037invalid template_id不合法的 template_id
40039invalid url size不合法的 URL 长度
40249禁止发送营销内容
43116模板被限制下发
47003参数格式错误

# 7. 适用范围

本接口支持「服务号(仅认证)」账号类型调用。其他账号类型如无特殊说明,均不可调用。