# 云函数接收消息推送

需开发者工具版本至少 1.02.1906252

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

接入步骤如下:

  1. 云开发控制台中填写配置并上传
  2. 云函数中处理消息

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

前往路径“「云开发」-「设置」-「其他设置」-「消息推送」”,选择推送模式为云函数; 添加消息推送配置。消息类型对应收包的 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()
  
  await cloud.openapi.customerServiceMessage.send({
    touser: wxContext.OPENID,
    msgtype: 'text',
    text: {
      content: '收到',
    },
  })

  return 'success'
}

# 云函数消息推送列表

# 消息

text 公众号文本消息 小程序客服文本消息

image 公众号图片消息 小程序客服图片消息

miniprogrampage 小程序客服卡片消息

# 事件

user_enter_tempsession 进入会话事件

express_add_path 运单轨迹更新事件

wxa_media_check 异步安全校验事件

subscribe_and_unsubscribe 关注与取消关注

qr_scan_scene 扫描带参数二维码事件

subscribe_msg_event 小程序订阅消息