小程序客服自动回复图片,云开发的实现

203 阅读1分钟

小程序先开通云开发,创建一个文件夹,并配置为云函数的目录

小程序客服自动回复图片实现步骤:

1.云函数接收消息推送

第一步:开发者工具云开发控制台中增加配置

打开云开发控制台,到设置 tab 中选择全局设置 - 添加消息推送配置。消息类型对应收包的 MsgType,事件类型对应收包的 Event,同一个 <消息类型, 事件类型> 二元组只能推到一个环境的一个云函数。例如客服消息文本消息对应的就是消息类型为 text,事件类型为空。具体值请查看各个消息的消息格式。

第二步:云函数中处理消息

云函数被触发时,其 event 参数即是接口所定义的 JSON 结构的对象(统一 JSON 格式,不支持 XML 格式)。

以客服消息为例,接收到客服消息推送时,event 结构如下:

{
  "FromUserName": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0",
  "ToUserName": "wx3d289323f5900f8e",
  "Content": "测试",
  "CreateTime": 1555684067,
  "MsgId": "49d72d67b16d115e7935ac386f2f0fa41535298877_1555684067",
  "MsgType": "text"
}

此时调用客服消息发送接口回复消息,示例如下:

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  var openId = wxContext.OPENID;
  try {
    const result = await cloud.openapi.customerServiceMessage.send({
        touser: openId ,
        msgtype: 'image',
        image: {
          mediaId: 'MEDIA_ID'
        }
      })
    return result
  } catch (err) {
    return err
  }
}

这里自动回复的图片,需要上传图片素材给微信,获得 mediaID 。

上传图片素材获取 mediaID 详见

// cloud = require('wx-server-sdk')
// ...
// 方法返回 Promise
cloud.openapi.customerServiceMessage.uploadTempMedia({
  type: 'image',
  media: {
    contentType: 'image/png',
    value: Buffer
  }
})