# 使用云调用接收、发送微信消息

# 概述

开发者可能会使用微信客服消息功能,接收小程序用户的客服对话消息,以及发送消息给用户。

小程序·云开发的云调用功能天然打通微信消息推送接口,开发者只需要调用相应的函数即可简单完成消息推送流程。

# 方案对比

# 接收消息

# 发送消息

# 代码示例

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

参考:使用云函数接受消息推送 (opens new window)

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

打开云开发控制台,到设置 Tab 中选择「全局设置」-「添加消息推送配置」,添加接收消息的云函数。

消息类型对应收包的 MsgType,事件类型对应收包的 Event,同一个 <消息类型, 事件类型> 二元组只能推到一个环境的一个云函数。例如客服消息文本消息对应的就是消息类型为 text,事件类型为空。具体值请查看各个消息的消息格式。

# 第二步:云函数中接收、处理消息

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

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

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

# 第三步:发送客服消息

此时可调用客服消息发送接口 (opens new window)回复消息,一个简单的接收到消息后统一回复 “收到” 的示例如下:

// 云函数入口文件
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";
};

# 相关文档