微信公众号开发之消息的自动回复

专栏目录请点击

  • 因为我们需要回复不同类型的消息,这里我们在wechat文件夹下,新建一个reply.js,他专门用于消息的自动回复
  • reply.js暴露出一个函数,这个函数接收一个参数message,就是我们需要发送的消息,函数返回对应的模板,并发送给微信服务器

代码

代码

const template = require('./template');
module.exports = async message => {
    //定义options 
    let options = {
        toUserName: message.FromUserName,
        fromUserName: message.ToUserName,
        createTime: Date.now(),
        msgType: 'text'
    }
    //设置回复用户消息的具体内容
    let content = '';
    // 判断用户发送消息的类型和内容,决定返回什么消息给用户
    if (message.MsgType === 'text') {
        if (message.Content === '1') {
            content = '大吉大利,今晚吃鸡'
        } else if (message.Content === '2') {
            content = '落地成盒'
        } else if (message.Content === '3') {
            // 回复图文消息
            content = [
                {
                    title: 'Nodejs开发',
                    description: '微信公众号开发',
                    picUrl: 'https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1841004364,244945169&fm=58&bpow=121&bpoh=75',
                    url: 'http://nodejs.cn/'
                }, {
                    title: 'web前端',
                    description: '这里有最新、最强的技术',
                    picUrl: 'https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1981851186,10620031&fm=58&s=6183FE1ECDA569015C69A554030010F3&bpow=121&bpoh=75',
                    url: 'http://www.atguigu.com/'
                }];
            options.msgType = 'news'
        } else if (message.Content.match('爱')) {
            //模糊匹配,只要包含爱
            content = '我爱你~'
        } else {
            content = '您在说啥,我听不懂'
        }
    } else if (message.MsgType === 'image') {
        content = '您的图片地址为:' + message.PicUrl
    } else if (message.MsgType === 'voice') {
        content = '语音识别结果:' + message.Recognition
    } else if (message.MsgType === 'video') {
        content = '接受了视频消息'
    } else if (message.MsgType === 'shortvideo') {
        content = '接受了小视频消息'
    } else if (message.MsgType === 'location') {
        content = '纬度:' + message.Location_X + '经度:' + message.Location_Y + '缩放大小:' + message.Scale + '详情:' + message.Label
    } else if (message.MsgType === 'link') {
        content = '标题:' + message.Title + '描述:' + message.Description + '网址:' + message.Url
    } else if (message.MsgType === 'event') {
        if (message.Event === 'subscribe') {
            //用户订阅事件
            content = '欢迎您的订阅~';
            if (message.EventKey) {
                //扫描带参数的二维码的订阅事件
                content = '欢迎您扫二维码的关注'
            }
        } else if (message.Event === 'SCAN') {
            //已经关注了公众号,在扫描带参数二维码进入公众号
            content = '已经关注了公众号,在扫描带参数二维码进入公众号'
        } else if (message.Event === 'unsubscribe') {
            // 用户取消关注
            console.log('无情取关~')
        } else if (message.Event === 'LOCATION') {
            // 用户进行会话时,上报一次地理位置消息
            content = '纬度:' + message.Latitude + '经度:' + message.Longitude + '精度:' + message.Precision
        } else if (message.Event === 'CLICK') {
            content = '点击了菜单~~~'
        } else if (message.Event === 'VIEW') {
            // 用户点击菜单,跳转到其他链接
            console.log('用户点击菜单,跳转到其他链接')
        }
    }
    //将最终回复消息内容添加到options中
    options.content = content;
    //将最终的xml数据返回出去
    return template(options)
}

对于代码的解释

  • 这里我们使用了引入的模板template点击
  1. 定义了options变量,这个变量就是所有种类的回复消息的共同内容
  2. 不同的内容,用if判断语句来进行判断了
  3. 他是一个函数,会根据不同的类型的消息返回不同的模板

事件的消息模板

使用恢复函数

这里就是使用reply.js暴露出的函数

我们打卡auth.js这个文件,删除不需要的结构,写上如下的代码

user_data = formatMsg(user_data)
// 使用reply.js
const replyMessage = await reply(user_data)
console.log(replyMessage)
// 将消息结构发送到微信服务器
res.send(replyMessage)   

这个时候,我们再测试一下,就会发现,成功了在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值