微信小程序 调云函数 信息推送失败,提示errcode":45015,"errmsg":"response out of time limit or subscription is canceled hint
查了很多资料都说是, 由于长时间用户OpenId未和微信公众号做互动消息,微信公众号会停止对用户进行消息推送,但没说如何操作,决定写一下详细的操作步骤,希望对你有帮助。
打开, https://mp.weixin.qq.com/, 扫描登录
具体操作是 左边菜单 找到 功能 > 客服,进入后, 开启收发信息 和 增加客服的微信帐号。
如果你之前已经配置好云函数和推送配置了,这时你可以调云函数进行信息推送了,否则请继续。
在 uniapp 的文件夹cloudfunctions 新建一个pushMessage函数(名称命名看你的习惯)。
主要代码下:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
});
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
await cloud.openapi.customerServiceMessage.send({
touser: wxContext.OPENID,
msgtype: 'text',
text: {
content: event.content
},
})
return 'success'
}
打开微信开发者工具的云开发,设置 > 其他设置,点击添加信息推送
信息类型选择 text, 云函数选择刚才上传的pushMessage的方法。
页面执行调用云函数试一下。
wx.cloud.callFunction({
name: "pushMessage",
data: {
content: '收到了吗?'
},
}).then((res) => {
console.log("pushMessage.res", res);
})
.catch((err) => {
console.log("pushMessage.err", err);
});
完整代码在这里
https://github.com/ssttm169/wechat_push_message
1.修改微信小程序的appid, manifest.json的mp-weixin里边的appid
"mp-weixin" : {
"appid" : "你的小程序AppID",
"setting" : {
"urlCheck" : false,
"minified" : true
},
"usingComponents" : true,
"cloudfunctionRoot" : "cloudfunctions/",
"lazyCodeLoading" : "requiredComponents"
}
2.修改微信云开发的环境ID, 在App.vue文件里边
wx.cloud.init({
env: "你的云开发环境ID",
});
vue.config.js 这个文件里的CopyWebpackPlugin 配置的作用, 是uniapp 开发的时候, 会自动把cloudfunctions云函数文件夹自动复制到微信小程序的项目里边。
new CopyWebpackPlugin([{
from: path.join(__dirname, 'cloudfunctions'),
to: path.join(__dirname, 'unpackage/dist', process.env.NODE_ENV === 'development' ?
'dev' : 'build', process.env.UNI_PLATFORM, 'cloudfunctions')
}])
原始路径
./cloudfunctions
自动复制的路径
./unpackage\dist\dev\mp-weixin\cloudfunctions
注:不要动这个路径做内容修改,因为它会原始路径自动生成