微信小程序——给用户发送通知

参考文档:

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html#%E6%A8%A1%E6%9D%BF%E6%B6%88%E6%81%AF%E7%AE%A1%E7%90%86

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/template-message/templateMessage.send.html

模板消息

微信6.5.2及以上版本支持

基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。

模板下发条件:用户本人在微信体系内与页面有交互行为后触发,

步骤一:获取模板 ID

有两个方法可以获取模板 ID:

  1. 通过模板消息管理接口获取模板 ID
  2. 在微信公众平台手动配置获取模板 ID

登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用

步骤二:页面的 form 组件,属性 report-submittrue 时,可以声明为需要发送模板消息,此时点击按钮提交表单可以获取 formId,用于发送模板消息。或者当用户完成 支付行为,可以获取 prepay_id 用于发送模板消息。

步骤三:调用接口下发模板消息

使用效果

下发条件说明

1. 支付

当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)

2. 提交表单

当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)

 

templateMessage.send

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

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

发送模板消息

调用方式:

HTTPS 调用

请求地址

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

请求参数

属性类型默认值必填说明
access_tokenstring 接口调用凭证
touserstring 接收者(用户)的 openid
template_idstring 所需下发的模板消息的id
pagestring 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
form_idstring 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
dataObject 模板内容,不填则下发空模板。具体格式请参考示例。
emphasis_keywordstring 模板需要放大的关键词,不填则默认无放大

返回值

Object

返回的 JSON 数据包

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

errcode 的合法值

说明最低版本
40037template_id不正确 
41028form_id不正确,或者过期 
41029form_id已被使用 
41030page不正确 
45009接口调用超过限额(目前默认每个帐号日调用限额为100万) 

请求示例

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "form_id": "FORMID",
  "data": {
      "keyword1": {
          "value": "339208499"
      },
      "keyword2": {
          "value": "2015年01月05日 12:30"
      },
      "keyword3": {
          "value": "腾讯微信总部"
      } ,
      "keyword4": {
          "value": "广州市海珠区新港中路397号"
      }
  },
  "emphasis_keyword": "keyword1.DATA"
}

返回示例

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

云调用

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

接口方法

openapi.templateMessage.send

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

请求参数

属性类型默认值必填说明
touserstring 接收者(用户)的 openid
templateIdstring 所需下发的模板消息的id
pagestring 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
formIdstring 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
dataObject 模板内容,不填则下发空模板。具体格式请参考示例。
emphasisKeywordstring 模板需要放大的关键词,不填则默认无放大

返回值

Object

返回的 JSON 数据包

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

errCode 的合法值

说明最低版本
0成功 

异常

Object

抛出的异常

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

errCode 的合法值

说明最低版本
40037template_id不正确 
41028form_id不正确,或者过期 
41029form_id已被使用 
41030page不正确 
45009接口调用超过限额(目前默认每个帐号日调用限额为100万) 

请求示例

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.templateMessage.send({
        touser: 'OPENID',
        page: 'index',
        data: {
          keyword1: {
            value: '339208499'
          },
          keyword2: {
            value: '2015年01月05日 12:30'
          },
          keyword3: {
            value: '腾讯微信总部'
          },
          keyword4: {
            value: '广州市海珠区新港中路397号'
          }
        },
        templateId: 'TEMPLATE_ID',
        formId: 'FORMID',
        emphasisKeyword: 'keyword1.DATA'
      })
    console.log(result)
    return result
  } catch (err) {
    console.log(err)
    return err
  }
}

返回示例

{
  "errCode": 0,
  "errMsg": "openapi.templateMessage.send:ok"
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值