微信小程序云函数处理客服消息

上传配置 temp-cloud-callback-config.json 已经废弃 后续会推出新的方式 --此路不通了 [20190620更]

需开发者工具版本:现在最新版本是RC v1.02.1905151

基础库:2.7.0

开通了云开发的小程序可以使用云函数接收消息推送,目前仅支持客服消息推送。

接入步骤如下:

1、开发者工具中填写配置并上传

2、云函数中处理消息

第一步:开发者工具中填写配置并上传

在项目根目录下新建消息推送配置文件 temp-cloud-callback-config.json 并在填写完成后右键该文件选择上传配置。

配置文件格式如下(以客服消息推送配置为例):

{
  "enable": true,
  "callbacks": [
    {
      "msgType": 1,
      "functionName": "云函数名",
      "env": "环境ID"
    }
  ]
}

字段说明:

  • enable: 只有为 true 时云函数消息推送才会启用,否则所有云函数消息推送都不会生效
  • callbacks: 接收推送的所有云函数配置
  • callbacks.msgType: 消息的 msgType,客服消息的 msgType 为 1
  • callbacks.functionName: 接收消息推送的云函数名称
  • callbacks.env: 云函数所在环境

写好后,右键该文件,选择上传配置。

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

云函数被触发时,其 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()
  await cloud.openapi.customerServiceMessage.send({
    touser: wxContext.OPENID,
    msgtype: \'text\',
    text: {
      content: \'收到\',
    },
  })
  return \'success\'
}