当前位置:首页 > 技术分析 > 正文内容

微信推送消息订阅,提示data.xxxxx.value is empty

ruisui884个月前 (03-06)技术分析12

在微信小程序或公众号中发送模板消息时,如果提示 Failed to send message: argument invalid! data.thing5.value is empty,通常是因为在推送消息模板中,data.thing5.value 字段的值为空或未正确传递。

以下是排查和解决该问题的步骤:


1. 检查模板消息格式

微信的模板消息要求严格遵循特定的 JSON 格式。每个字段(如 thing5)都必须提供有效的值。以下是一个模板消息的示例:

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "data": {
    "thing5": {
      "value": "这是一个有效值"
    },
    "thing6": {
      "value": "这是另一个值"
    }
  }
}

问题原因

  • data.thing5.value 字段为空(null 或空字符串,不按模板要求传相应的值类型,如字符串、日期等)。
  • 模板消息的格式不正确,缺少必要的字段。

2. 检查模板 ID 和字段

  • 确认模板 ID:确保你使用的模板 ID 是正确的,并且已经在小程序或公众号后台配置。
  • 检查字段名称:微信模板消息中的字段名称(如 thing5)必须与后台配置的模板一致。如果模板中没有 thing5 字段,或者字段名称拼写错误,也会导致该错误。

3. 确保字段值不为空

在发送模板消息时,确保 data.thing5.value 字段的值不为空。例如:

const message = {
  touser: 'OPENID',
  template_id: 'TEMPLATE_ID',
  data: {
    thing5: {
      value: '这是 thing5 的值' // 确保这里不为空
    },
    thing6: {
      value: '这是 thing6 的值'
    }
  }
};

wx.requestSubscribeMessage({
  tmplIds: [message.template_id],
  success(res) {
    wx.cloud.callFunction({
      name: 'sendMessage',
      data: message,
      success(res) {
        console.log('消息发送成功', res);
      },
      fail(err) {
        console.error('消息发送失败', err);
      }
    });
  },
  fail(err) {
    console.error('订阅失败', err);
  }
});

4. 示例代码

以下是一个完整的发送模板消息的示例:

const message = {
  touser: 'OPENID', // 用户的 OpenID
  template_id: 'TEMPLATE_ID', // 模板 ID
  page: 'index', // 跳转页面(可选)
  data: {
    thing5: {
      value: '这是 thing5 的值' // 确保字段值不为空
    },
    thing6: {
      value: '这是 thing6 的值'
    }
  }
};

// 发送模板消息
wx.cloud.callFunction({
  name: 'sendMessage',
  data: message,
  success(res) {
    console.log('消息发送成功', res);
  },
  fail(err) {
    console.error('消息发送失败', err);
  }
});

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2541.html

分享给朋友:

“微信推送消息订阅,提示data.xxxxx.value is empty” 的相关文章

Vue.js 组件通信的 3 大妙招

在 Vue.js 中,组件化是其核心概念之一,允许你将复杂的界面拆分成多个独立的、可复用的组件。在构建大型应用时,如何高效地在组件之间传递数据和触发事件是非常重要的。Vue.js 提供了多种方式来处理组件间的通信,下面是最常用的 3 种方式:1.父子组件通信:通过 Props 和 Events在 V...

Gitlab之间进行同步备份

目前,我们公司有两个研发团队,分别在北京和武汉,考虑到访问速度的问题,原有武汉的研发环境在近端部署。也就是北京和武汉分别有两套独立的研发管理环境,虽然这解决了近端访问速度的问题,但是管理上较为分散,比如研发环境备份和恢复就是最重要的问题之一。最近,处于对安全性和合规性的考虑,希望将北京和武汉的源代码...

el-table内容\n换行解决办法

问题请求到的数据带有换行符 '\n'但页面展示时不换行statusRemark: "\"1、按期完成计划且准确率100%,得100分;\n2、各项目每延误1天,扣1分;每失误1次或者员工投诉1次,扣3分,失误层面达到公司级影响较大的,该项绩效分数为0\"\n&...

Acustica Audio 发布模拟Roland Jupiter 双声道合成器插件 TH2

福利: Acustica Audio 发布模拟Roland Jupiter 风格的双声道合成器插件 TH2 免费下载 意大利 Acustica Audio 公司发布布模拟Roland Jupiter 风格的双声道合成器插件 TH2 ,灵感来源于Acustica Audio的THING-8系列,它是...

「干货」FPGA设计中深度约束技巧及调试经验总结

今天跟大家分享的内容很重要,也是我们调试FPGA经验的总结。随着FPGA对时序和性能的要求越来越高,高频率、大位宽的设计越来越多。在调试这些FPGA样机时,需要从写代码时就要小心谨慎,否则写出来的代码可能无法满足时序要求。另外,最近跟网友聊天时,有谈到公众号寿命的问题,我觉得网络交换FPGA公众号应...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...