1.需求背景
小程序里不能直接下载app(下载api没有进度显示,对于较大的文件太不友好)
2.实现思路
考虑从增加一个h5页面作为下载引导页,类似qq下载页,如下图。
但是小程序不能知己跳转到h5页面,所以考虑进入到客服会话窗口,发送 '下载' 返回下载app的链接。
3.开始实现
根据面向百度变成的基本思想,得知 云函数接收消息推送,其中讲到 —— "开通了云开发的小程序可以使用云函数接收消息推送"
通过云函数监听用户发来的消息,根据消息内容来自定义自动回复的内容 —— 这不就是传说中的人工智能吗(如下图)。
(1) 开通小程序云函数(开发者工具点击开通 测试号不支持云开发)
(2)创建一个云函数
或者
两个地方新建都是可以的,创建完之后记得同步本地和云端的函数列表。
(3)前往路径“「云开发」-「设置」-「其他设置」-「消息推送」”,选择推送模式为云函数;
(4)添加消息推送配置。消息类型可以选择 文本 事件 图片 或者小程序类型。根据自己的需求添加。
选择的云函数 即 监听到推送消息后调用的云函数
(5)云函数的具体实现(两种 一种是文本消息 一种是图文消息)
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
console.log('自动回复',event,wxContext)
let sendData = {}
// 消息类型是文本 && 是下载
if((event.MsgType === 'text' && event.Content === '下载') || event.MsgType === 'miniprogrampage'){
sendData = {
"touser": event.userInfo.openId,
"msgtype": "link",
"link": {
"title": "点击开始app",
"description": "这是app的简介",
"url": "这个是下载地址",
"thumb_url": "这是图文信息的封面url"
}
}
}else if(event.MsgType === 'text'){ // 收到意见反馈消息
sendData = {
touser: wxContext.OPENID,
msgtype: 'text',
text: {
content: '意见反馈已收到',
},
}
}
await cloud.openapi.customerServiceMessage.send(sendData)
return 'success'
}
(6)实现效果