在web系统中和微信小程序中,对于十分重要的消息,可以通过微信公众号模板消息通知到客户的微信会话列表中,来做到实时提醒的目的。
怎么做呢?简单, 不用您自己集成公众号模板消息的API,GoEasy的接口上加上对应的参数就可以通过您自己的公众号来推送模板消息了。
公众号模板消息只有认证后的服务号才可以申请模板消息的使⽤权限并获得该权限。模板消息仅 用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通 知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。 使⽤规则详⻅:
微信官方文档
接⼊前准备
- 在微信公众平台注册服务号,并完成微信认证
- 开通模板消息:+新的功能->⼴告与服务->模板消息->点击申请开通模板消息,填写申请理由,申请成功后需要1-2个⼯作⽇的审核
- 获取appid:设置与开发->基本配置->公众号开发信息->开发者ID。
- 获取openid:这个openid是微信小程序用户关注该公众号的openid。注意:不是微信一键登录的openid!需要您的服务端去接入微信公众平台,接收官方转过来的公众号事件消息。通过官方转过来的微信用户关注公众号的消息获取openid,否则无法收到推送,正确的openid格式例如:otG261UISGxu8wz-bOLX2t-g-z7Y
服务端详见文档配置:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
参考:https://developers.weixin.qq.com/community/develop/doc/0006029d28c6c07e3ddb3e6d651400
- 获取模板ID:广告与服务->模板消息->我的模板->从模板库中添加,添加您需要的模板后,在“我的模板”中可以获取对应的模板ID。
GoEasy控制台完成微信公众号授权
- 登陆GoEasy控制台- > 我的应用 ->应用详情
- 微信公众号模板消息 - >公众号授权
- 使用公众平台绑定的管理员个人微信号扫描公众平台帐号授权二维码
初始化GoEasy对象时允许通知栏提醒
SDK 2.5.2+
在初始化GoEasy对象时,增加参数allowNotification:true即可
const goEasy = GoEasy.getInstance({
host:'hangzhou.goeasy.io',//应用所在的区域地址: 【hangzhou.goeasy.io |singapore.goeasy.io】
appkey:'您的common key', // common key,
modules:['im'],//根据需要,传入‘pubsub’或'im’,或数组方式同时传入
allowNotification: true
});
建立连接时,传入公众号appid和openid
goEasy.connect({
id:"001", //公众模板消息推送下id必填,最大长度60字符
data:{"avatar":"/www/xxx.png","nickname":"Neo"}, //必须是一个对象,pubsub选填,im必填,最大长度300字符,用于上下线提醒和查询在线用户列表时,扩展更多的属性
wxmpId: {
appid: '', //公众号id
openid: '' //微信用户关注微信公众号后的openid
},
onSuccess: function () { //连接成功
console.log("GoEasy connect successfully.") //连接成功
},
onFailed: function (error) { //连接失败
console.log("Failed to connect GoEasy, code:"+error.code+ ",error:"+error.content);
},
onProgress:function(attempts) { //连接或自动重连中
console.log("GoEasy is connecting", attempts);
}
});
pubsub发送模板消息
客户端
使用同样openid来建立连接的用户,所有订阅了该channel的客户端全部下线后,将会推送模板消息。模板消息数据示例及说明可以参照数据示例
pubsub.publish({
channel: "my_channel",//替换为您自己的channel
message: "Hello GoEasy!",//替换为您想要发送的消息内容
wxmpTemplateMsg: { //公众号模板消息
template_id:'', //模板id,必须字符串
data:{}, //模板消息数据
url:'', //点击消息要跳转的网页,字符串或空
miniprogram:{ //点击消息要跳转的小程序,空或者两个字段都是字符串
appid:'', //小程序id
pagepath:'' //小程序页面路径,必须是已上线能访问的路径
}
},
onSuccess:function(){
console.log("消息发布成功。");
},
onFailed: function (error) {
console.log("消息发送失败,错误编码:"+error.code+" 错误信息:"+error.content);
}
});
服务端
URL:
POST http://{rest-host}/v2/pubsub/publish
rest-host:
杭州: rest-hz.goeasy.io
新加坡: rest-singapore.goeasy.io
JSON格式请求体:
{
"appkey": "您的appkey",
"channel": "my_channel",
"content": "Hello GoEasy!",
"wxmpTemplateMsg":{
"template_id":"",
"data":{},
"url":"",
"miniprogram":{
"appid":"",
"pagepath":""
}
}
}
IM发送模板消息
客户端
使用同样openid来建立连接的用户全部下线后,发送给该用户的消息,将会推送模板消息。模板消息数据示例及说明可以参照数据示例
let textMessage = im.createTextMessage({
text:'Hello, GoEasyIM', //消息内容
to : {
type : GoEasy.IM_SCENE.PRIVATE, //私聊还是群聊,群聊为GoEasy.IM_SCENE.GROUP
id : 'user002',
data:{"avatar":"/www/xxx.png","nickname":"Neo"} //好友扩展数据, 任意格式的字符串或者对象,用于更新会话列表conversation.data
},
wxmpTemplateMsg: { //公众号模板消息
template_id:'', //模板id,必须字符串
data:{}, //根据模板给出的详细内容填写对应的字段
url:'', //点击消息要跳转的网页,字符串或空
miniprogram:{ //点击消息要跳转的小程序,空或者两个字段都是字符串
appid:'', //小程序id
pagepath:'' //小程序页面路径,必须是已上线能访问的路径
}
},
});
服务端
URL:
POST http://{rest-host}/v2/im/message
rest-host:
杭州: rest-hz.goeasy.io
新加坡: rest-singapore.goeasy.io
JSON格式请求体:
{
"appkey": "您的appkey",
"senderId": "user002",
"senderData": {'avatar':'/www/xxx.png','nickname':'Neo'},
"to": {
"type": "private/group",
"id": "userId/groupId",
"data": {"avatar":"/images/Avatar-2.png","name":"Wallace"}
},
"type": "text/[自定义类型]",
"payload":"Hello,GoEasy",
"wxmpTemplateMsg":{
"template_id":"",
"data":{},
"url":"",
"miniprogram":{
"appid":"",
"pagepath":""
}
}
}
模板消息示例
示例模板:
示例模板数据:
wxmpTemplateMsg: {
template_id:'EG1cbpvmMJfb_62mgqRT8JuLUTWElfDF97zcpCt2w8U',
data:{
first: {
value: "您的咨询,有新的回复~",
color: "#D02129"
},
keyword1: {
value: "2022-12-28",
color: ""
},
keyword2: {
value: "点击我,进入小程序查看回复详情~",
color: ""
},
remark: {
value: "您也可以通过电脑访问GoEasy官网与我们更高效的沟通~",
color: "#D02129"
},
},
url: 'https://www.baidu.com',
miniprogram:{
appid:'wx0aaxxxxxx', // 小程序appid
pagepath:'' // 例如:pages/index,必须是已上线能访问的路径
}
}
模板使用效果:
测试第一条模板消息
- 将小程序运行到手机后退出,并将与之openid相同的所有客户端离线 (web页面也是同理,只要使用过对应的openid成功连接过GoEasy后,再关掉页面即可)
- 用另一用户向该用户/channel推送一条消息
收不到通知栏提醒?
常见的原因:
- 接收方未离线状态
- openid不正确,格式例如:otG261UISGxu8wz-bOLX2t-g-z7Y
- 模版消息data格式不正确
- 模版消息跳转的pagepath不正确,未上线的可以先不填
有什么问题,大家可以通过GoEasy官网客服进行留言。或者添加GoEasy微信跟我们取得联系。