小程序的订阅消息,分为一次性订阅消息和长期订阅消息,长期订阅消息只对政务民生、医疗、交通、金融、教育等线下公共服务开放,一般情况下我们用不了。
一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
注意:授权一次,发送一条,多了发不了
下面是小程序中,点击在线咨询的时候,先让订阅一下通知,然后再加载客服系统的聊天链接
比如:wxml部分
代码语言:javascript复制 <view class="listItem">
<view class="left">店铺客服</view>
<view class="right"><button type="primary" size="mini" bindtap="callKefu">在线咨询</button>
</view>
</view>
js部分。这里面就是拼接我的客服系统聊天界面链接,重要的是visitor_id参数部分,按照我的要求是 mini|商户ID|openid ,这样我在客服系统那里,好拿到openid去发送订阅消息
代码语言:javascript复制 //咨询店铺客服
callKefu(){
this.subReplyNotice();
var url=app.globalData.apiUrl "/chatIndex?kefu_id=" this.data.kefu_name "&ent_id=" this.data.ent_id "&visitor_name=" this.data.nickname "&avator=" this.data.avatar "&visitor_id=mini|" this.data.ent_id "|" this.data.openid;
wx.navigateTo({
url: "/pages/index/kefu?url=" encodeURIComponent(url)
})
},
代码语言:javascript复制 //订阅回复通知
subReplyNotice(){
wx.requestSubscribeMessage({
tmplIds: ['Hk0zWtbgl0aci6b0UIWSUBywYzaglNqkw0KhzkbEuN4'],
success (res) {
console.log(res)
// res包含模板id,值包括'accept'、'reject'、'ban'、'filter'。
// 'accept'表示用户同意订阅该条id对应的模板消息
// 'reject'表示用户拒绝订阅该条id对应的模板消息
// 'ban'表示已被后台封禁
// 'filter'表示该模板因为模板标题同名被后台过滤。
}
})
},
pages/index/kefu
wxml部分
代码语言:javascript复制<!--pages/index/kefu.wxml-->
<view wx:if="{{url}}">
<web-view src="{{url}}"></web-view>
</view>
js部分
代码语言:javascript复制 /**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
console.log(options.url);
this.setData({
url:decodeURIComponent(options.url),
});
},