微信小程序推送消息,基本参数为接受用户openId, 消息模板id, formId表单提交id。
对于formId来讲,微信小程序只允许用户有提交表单后,才可以对用户推送消息。
表单属性通过report-submit=true设置,将会返回表单的id,微信文档上说要保存该id,方便后续推送操作使用。
但是需要注意,此时返回的formId还不能立即使用(辣鸡,开发者工具也辣鸡,?吐槽好爽),也就是说不能再catchSubmit的事件里使用该formId作为推送参数formId(可以通过report-submit-timeout参数来检测formId是否有效,说是网络不好情况下会无效,但是发现很多情况下都返回requestFormId:fail timeout无效没法使用). 所以此时如果要推送消息只能使用以前保存的formId并且每个formId只能用一次.
cloud.openapi.templateMessage.send({
touser: toOpenId[0],
templateId: template,
formId: formId, //以前提交过表单的formId,不能直接使用catchSubmit中返回的那个
page: 'pages/detail/detail?id=' + event.blogId,
data: {
keyword1: {
value: event.nickName
},
keyword2: {
value: event.message
},
keyword3: {
value: new Date().toFormat("YYYY-MM-DD HH24:MI:SS")
}
},
})