微信客服圖片自動回覆功能

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、全局設置:消息推送只能推到一個環境的一個雲函數(無法區分測試、生產環境)

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