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

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

ruisui882个月前 (03-06)技术分析7

在微信小程序或公众号中发送模板消息时,如果提示 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” 的相关文章

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

雅马哈TMAX 560 TECH MAX 外媒深度测评

应雅马哈(Yamaha)的邀请,在葡萄牙埃斯托里尔对全新的Yamaha TMAX 560 Tech Max踏板车进行了测试,在这里TMAX 560 Tech Max售价为11649英镑。雅马哈TMAX长期以来一直站在踏板车的顶端,就声誉和知名度而言,它是当之无愧的大踏板界NO.1。2020 TMAX...

学前端,这30个CSS选择器,你必须熟记

你学会了基本的id,class类选择器和descendant后代选择器,然后就觉得完事了吗?如果这样,你就会错过许多灵活运用CSS的机会。虽然本文提到的许多选择器都属于CSS3,并且只能在现代的浏览器中使用,但学会这些是大有好处的。什么是CSS选择器呢?每一条css样式定义由两部分组成,形式如下:[...

12种JavaScript中最常用的数组操作整理汇总

数组是最常见的数据结构之一,我们需要绝对自信地使用它。在这里,我将列出 JavaScript 中最重要的几个数组常用操作片段,包括数组长度、替换元素、去重以及许多其他内容。1、数组长度大多数人都知道可以像这样得到数组的长度:const arr = [1, 2, 3]; console.log(a...

Vue从入门到实践 丨Vue-router基本使用

1. 什么是 vue-routervue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。vue-router 的官方文档地址:https://router.vuejs.org/zh/2. vue-router 安装...

Vue进阶(二十六):详解router.push()

在Vue2.0路由跳转中,除了使用 <router-link> 声明式创建 a 标签来定义导航链接,还可以借助 router 的实例方法,通过编码式编写代码来实现。router.push(location)想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 hi...