链接
简书博主示例:https://www.jianshu.com/p/d90f22dac001
官方文档:
官方文档1
文档2
云调用
使用方法demo
假如这是一个点餐系统,想让顾客下单以后,派件员能够收到消息内容包括订单号与电话号码
首先,挑选适用的模板
进入官方文档1
![在这里插入图片描述](https://img-blog.csdnimg.cn/b50625ef1cbc40bfa34579969bf417ec.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
我这里挑选的是这个
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c8620b16c104ffe88b4f93b70ffe82b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
点击详情,后面要用到这两个 一个是模板id一个是发送内容的格式
![在这里插入图片描述](https://img-blog.csdnimg.cn/59191b9cf0aa4914b53a56950a257965.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
小程序页面获取下发权限
获取用户权限 具体文档文档2
这里就用到了刚刚的模板ID
正常的逻辑应该是在 小程序初始化完成时,onLaunch钩子函数里用wx.getSetting来判断有没有授权,如果没有就跳出来让授权 wx.getSetting接口文档
![在这里插入图片描述](https://img-blog.csdnimg.cn/5af2dc2abc5a47569172ea8a192e196e.png)
有个要注意的地方
![在这里插入图片描述](https://img-blog.csdnimg.cn/077147f9cdf84e6ebab8f8a589a1c2ac.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/396251fc3e1143f485c3899f2d8b1a17.png)
这个地方如果不勾选的话,wx.getSetting是拿不到有没有授权过的
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ae3fce7d3de4fc68b1c72e1d8e1c499.png)
勾选的话
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e2db783642345d49d96e48580ba7433.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_12,color_FFFFFF,t_70,g_se,x_16)
现在为了演示方便,就做了个按钮 点击以后执行test方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/4b02e5aa9a3348aba42455895cec1edf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_13,color_FFFFFF,t_70,g_se,x_16)
之后需要操作云函数了,用云函数调用模板消息接口
那模板消息是需要传入一些参数的,所以我们要在小程序端传入一些参数给云函数,这时候就需要知道模板消息都需要哪些参数
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html#method-cloud
必填的几项
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ed0f4b691c044399bda4e670ccdf50c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
因为是给接单人员用的,所以openId就可以固定成某人个的openid了,
模板id的话就是一开始申请给的模板id,这两个参数我都放到一个文件里面了,需要用到的时候引入就ok
![在这里插入图片描述](https://img-blog.csdnimg.cn/d072a2b63cbf4eca9d06ea96f1abed7a.png)
data的格式是什么呢
![在这里插入图片描述](https://img-blog.csdnimg.cn/fdfa2bdb13b746caa82b0cb2ff74d9c5.png)
key是什么呢 申请模板的时候也给了
![在这里插入图片描述](https://img-blog.csdnimg.cn/64f357585d08420db0dcfab8c4f1bd28.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/379b4aa29d8649468527d67f0f5c8663.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_12,color_FFFFFF,t_70,g_se,x_16)
所以我们需要传入这三个参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a308d8ed67843538c9a6cc7dec05351.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_10,color_FFFFFF,t_70,g_se,x_16)
云函数名为test
编写云函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/3669657234ed429f8e000441245e5141.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lyk5b-D5bCP546L5a2Q,size_19,color_FFFFFF,t_70,g_se,x_16)
保存 右键增量上传
点击按钮 授权订阅消息以后
对应接单人的微信就能收到消息了
![请添加图片描述](https://img-blog.csdnimg.cn/2a47a709cbf34fd9b44342f7c0a4979f.jpg)
代码
SubscribeMessage.js
import {
tmplId,
sendPeopleOpenId
} from './constant'
function isSubscribe() {
return new Promise((resolve, reject) => {
wx.getSetting({
withSubscriptions: true,
success(e) {
if (e.subscriptionsSetting[tmplId]) {
wx.showToast({
title: '已经永久授权',
})
resolve(e)
} else {
reject("未永久授权")
}
},
fail(err) {
console.log(err);
reject(err)
}
})
})
}
function requesetSubscribe() {
return new Promise((resolve, reject) => {
wx.requestSubscribeMessage({
tmplIds: [tmplId],
success(res) {
resolve(res)
},
fail(err) {
reject(err)
}
})
})
}
export function authtmpl() {
isSubscribe().then((res) => {
wx.showToast({
title: '已经永久授权',
})
console.log("已经永久授权了");
}).catch((err) => {
console.log(err);
requesetSubscribe().then((res) => {
isSubscribe().then((res) => {
wx.showToast({
title: '已经永久授权',
})
}).catch(err => {
wx.showToast({
title: '请勾选“总保持以上选择,不再询问”',
})
})
})
})
}
export function sendMessage(out_trade_no, phone) {
const data = {
"character_string1": {
"value": out_trade_no
},
"phone_number8": {
"value": phone
}
}
return new Promise((resolve, reject) => {
wx.cloud.callFunction({
name: 'subscribeMessage',
data: {
data,
tmplId,
sendPeopleOpenId
}
}).then((res) => {
console.log(res);
resolve(res)
}).catch((err) => {
console.log(err);
reject(err)
})
})
}
云函数
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.subscribeMessage.send({
"touser": event.sendPeopleOpenId,
"lang": 'zh_CN',
"data": event.data,
"templateId": event.tmplId,
})
return result
} catch (err) {
return err
}
}
注意 报43101错误
确定用户没有取消订阅 但是依然报这个错误
这是为什么呢 ?
虽然是长期授权了,但是但是!!!! 订阅次数是默认一次的
https://developers.weixin.qq.com/community/develop/doc/000aca915645284919dc3814b51c00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)