小程序的订阅消息,分为一次性订阅消息和长期订阅消息,长期订阅消息只对政务民生、医疗、交通、金融、教育等线下公共服务开放,一般情况下我们用不了。
一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
注意:授权一次,发送一条,多了发不了
下面是小程序中,点击在线咨询的时候,先让订阅一下通知,然后再加载客服系统的聊天链接
比如:wxml部分
<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去发送订阅消息
//咨询店铺客服 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) }) },
//订阅回复通知 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部分
<!--pages/index/kefu.wxml--> <view wx:if="{{url}}"> <web-view src="{{url}}"></web-view> </view>
js部分
/** * 生命周期函数--监听页面加载 */ onLoad(options) { console.log(options.url); this.setData({ url:decodeURIComponent(options.url), }); },