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

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、全局设置:消息推送只能推到一个环境的一个云函数(无法区分测试、生产环境)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章