微信客服图片自动回复功能

1、创建数据库集合:service_num;更改集合权限设置

 

 
2、新建云函数 serviceNum  :处理数据库操作

exports.main = async (event, context) => {

  const wxContext = cloud.getWXContext();
  let openid = wxContext.OPENID;
  let sign = event.sign;  // 外部传入参数
  const db = cloud.database();
  let result = [];
  await db.collection('service_num').where({ // 必须加 awati 否则无法更新数据库
    _id: openid
  }).get().then(res =>{
    result = res.data;
  });
  if(result.length > 0){
    let _id = result[0]._id;
    await db.collection('service_num').doc(_id).set({  // 更新数据
      data: {
        service_num: sign
      }
    })
  }else{
    await db.collection('service_num').add({  // 新增数据
      data: {
        _id: openid,
        service_num: sign
      }
    })
  }

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

3、新建云函数 replayByImg :获取云存储照片,实现自动回复

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  let openid = wxContext.OPENID;
  const db = cloud.database();
  let sign = "";
  await db.collection('service_num').where({  // 必须用 await 才行
    _id: openid
  }).get().then(res =>{
    console.log(res.data);
    sign = res.data[0].service_num;
  })

  // 1、downloadFile:获取 Buffer 类型的图片内容
  // const fileID = event.fileID;
  const fileID = "云存储内图片fileID" + sign + ".png";
  const res = await cloud.downloadFile({ 
    fileID
  });
  // 2、uploadTempMedia:获取 mediaId 
  const uploadResult = await cloud.openapi.customerServiceMessage.uploadTempMedia({
    type: 'image',
    media: {
      contentType: 'image/jpg',
      value: res.fileContent
    }
  });
  // 3、客服消息自动回复
  const mediaId = uploadResult.mediaId;
  await cloud.openapi.customerServiceMessage.send({
    touser: wxContext.OPENID,
    msgtype: 'image',
    image: {
      mediaId: mediaId
    }
  })

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

4、全局设置:消息推送只能推到一个环境的一个云函数(无法区分测试、生产环境)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值