订阅消息
来源:6-6 云调用实现模板消息推送
慕粉2138437036
2020-04-24
订阅消息的提示为什么只有自己这里能收到提示呀,如果评论完不是应该提示楼主吗,还是我代码有问题呀
js:
onSend() {
const templateId = '0UJj5EVXsdAZ7QKdmBUVSe63BgQUk7azzxwmJu4LGk4’
wx.requestSubscribeMessage({
tmplIds: [templateId],
success(res) {
if (res[templateId] == ‘accept’) {
//用户同意了订阅,允许订阅消息
wx.showToast({
title: ‘订阅成功’
})
} else {
//用户拒绝了订阅,禁用订阅消息
wx.showToast({
title: ‘订阅失败’
})
}
},
fail(err) {
console.error(err)
}
})
//插入数据库
let content = this.data.content
if (content.trim() == ‘’) {
wx.showModal({
title: ‘评论内容不能为空’,
content: ‘’,
})
return
}
wx.showLoading({
title: ‘评价中’,
mask: true,
})
db.collection(‘blog-comment’).add({
data: {
content,
createTime: db.serverDate(),
blogId: this.properties.blogId,
nickName: userInfo.nickName,
avatarUrl: userInfo.avatarUrl
}
}).then((res) => {
wx.cloud.callFunction({
name: 'sendMessage',
data: {
content,
blogId: this.properties.blogId
}
}).then((res) => {
// console.log(res)
wx.hideLoading()
wx.showToast({
title: '评论成功',
})
this.setData({
modalShow: false,
content: ''
})
//父元素刷新评论页面
this.triggerEvent('refreshCommentList')
})
})
},
云函数:
// 云函数入口文件
const cloud = require(‘wx-server-sdk’)
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
try {
const wxContext = cloud.getWXContext()
const templateId = ‘0UJj5EVXsdAZ7QKdmBUVSe63BgQUk7azzxwmJu4LGk4’
return await cloud.openapi.subscribeMessage.send({
touser: wxContext.OPENID,
page: `/pages/blog-comment/blog-comment?blogId=${event.blogId}`,
lang: 'zh_CN',
data: {
thing4: {
value: '您有新的评论'
},
thing1: {
value: event.content
}
},
templateId: templateId,
miniprogramState: 'developer'
})
console.log(result)
return result
} catch (err) {
console.log(err)
return err
}
}
订阅消息:
模板ID 0UJj5EVXsdAZ7QKdmBUVSe63BgQUk7azzxwmJu4LGk4
模板编号 5104
标题 留言评论提醒
类目 教育信息服务
详细内容
评论结果 {{thing4.DATA}}
评论内容 {{thing1.DATA}}
2回答
-
你这里填的是自己的openid,肯定就是自己收到了。
032020-04-25 -
谢成
2020-04-25
从问的问题上看,我觉得现在的主要问题,是还没有真的明白订阅消息的意思,应该没有明白课程中的模板消息的意思。两种消息推送方式道理是一样的,都是谁订阅或者谁产生formid就给谁推送消息,不能随便给无关的人推送消息。模板消息我们就先不提了,现在也不让使用了。
订阅消息文档: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
1、这个是要谁订阅了这个消息,才能给谁推送,你这里应该是评论人订阅了,那么只能给评论人推送。不可能说评论人订阅的,去给作者去推送,这样会骚扰用户因为作者没有订阅,这是小程序不能允许的。
2、模板中配置的一次订阅:
也就是说订阅一次只能推送一次消息。
所以如果你认真使用过其他小程序的话就会发现,如果是给别人推送,一般都是小程序结合公众号来推送,因为这种推送限制更宽松,这种需要企业账号来完成。
而小程序直接推送更适合比如我去订票了或者我去定外卖了,我预定成功了,给我推送。注意这里的主角都是我,不是别人。因为订票一次,相当于订阅一次,如果是模板消息的话就相当于产生了一个formid,所以可以给我推送一次,注意只是一次。
其实多看看官方文档就能清楚小程序这么限制的初衷了,就是小程序不能随意骚扰用户,所以订阅权都是在用户手里,一定要在用户授权同意的情况下才能推送。
希望通过上面的回答,可以帮助到你。
212020-04-25
相似问题