小程序消息订阅实现
消息订阅介绍
有关微信小程序消息订阅可参考官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
消息订阅实现步骤
- 获取消息订阅的模板ID
登录https://mp.weixin.qq.com/微信公众平台添加模板,如果没有合适
的模板可以手动添加模板,然后获取模板ID。
- 获取下发权限(弹出授权框需用户操作同意)
一次性订阅消息、长期订阅消息详见接口subscribeMessage.send
设备订阅消息详见接口wx.requestSubscribeDeviceMessage
- 调用接口下发订阅消息(此步骤由后端调用)
一次性订阅消息、长期订阅消息详见服务端接口subscribeMessage.send
设备订阅消息详见服务端接口hardwareDevice.send
- websocket监听处理订阅消息推送(后端发送websocket,前端监听)
当后端调用下发订阅消息API后,在小程序中会触发消息订阅通知下达给用户,另外当需要在小程序中查看订阅消息或者对消息订阅进行处理时(比如语音处理)还需要结合websocket来下发订阅消息的具体内容,以及监听新的订阅消息。
小程序订阅消息语音提醒实现
订阅消息语音提醒介绍
订阅消息语音提醒目前官方给出的订阅模板仅能支持银行类目的收款到账通知订阅,官方具体介绍见下图:
那么其他类型的订阅模板要想支持语音播放提醒需要结合第三方插件来实现,下面介绍使用微信同声传译插件来实现订阅消息语音提醒。
微信同声传译插件接入小程序
- 实现思路
使用微信消息订阅功能,当后端发送消息订阅推送时,同时进行websocket推送相关内容(由于前端无法监听官方的推送消息,故采取此种方法)。前端监听websocket,当用户登录小程序时调用websocket监听方法,监听到有订阅消息发来时就调用同声翻译插件的语音合成textToSpeech方法播放相关内容。这样也可以实现订阅消息语音播放。 - 在公众平台添加插件
打开微信公众平台---设置---第三方设置---添加插件---搜索微信同声传译插件---添加该插件 - 在小程序项目的app.json配置插件
{
"plugins": {
"WechatSI": {
"version": "0.3.5",
"provider": "wx069ba97219f66d99"
}
},
}
注意:Provider属性值为微信同声传译插件的APPID,在公众平台插件的详情里面可查看,version版本号一般为最新版本号
- 在监听消息订阅推送的地方调用插件的文字播放语音方法
(1)在使用插件方法的js文件中引入依赖
const plugin = requirePlugin("WechatSI")
const manager = plugin.getRecordRecognitionManager()
(2)调用语音合成textToSpeech方法
plugin.textToSpeech({
lang: "zh_CN",
tts: true,
content: "您有新的未读消息",
success: function(res) {
console.log("succ tts", res.filename)
wx.playBackgroundAudio({
dataUrl: res.filename
})
},
fail: function(res) {
console.log("fail tts", res)
}
})
(3)使用真机调试在手机中查看效果
(4)配置小程序退出后台声音的播放
当小程序进入后台时语音不能进行播放,此时需要向app.json中添加一项配置,如下:
{
pages:[],
"sitemapLocation": "sitemap.json"
}
上述实现方式只能在某些业务中使用,大多情况无法适用,由于要结合websocket,当设备进入息屏状态websocket是断开的,因此也就无法实现实时播放语音!
参考资源
- 微信面对面翻译小程序开源地址:https://github.com/Tencent/Face2FaceTranslator
- 语音识别+语音合成+同声传译 微信小程序案例:https://blog.csdn.net/Resulte/article/details/122545279