rid: 6304ae55-45a9eba3-3503d985
推送消息时一直报错,确定订阅时的 sn / model_id 推送时的sn / model_id 是相同的
请求信息
https://api.weixin.qq.com/cgi-bin/message/device/subscribe/send?access_token=xxx
{
"to_openid_list": ["xxxxx"],
"template_id": "SBoDtnsyGkl4DyyYCoivVGGNkQUzT6T9CqVSahYLG28",
"sn": "sn",
"model_id": "xxxxx",
"data": {
"time1": { "value": "发生时间" },
"enum_string3": { "value": "提示说明" },
"enum_string2": { "value": "告警等级" }
}
}

这里需要保证同个用户在订阅消息、触发消息时的model_id和设备sn对应关系保持一致
一般来说,出现错误可能有以下原因,可以先自查:
1、sn格式写错了 (sn是你自己编辑的序列号,要按格式要求来编写)
2、model_id和设备sn位置写反了(model_id是平台分配给你的编号,一个model_id可对应N个sn)
3、model_id和设备sn没对应上 (不能把A设备的model_id和B设备的sn去对应)
4、订阅的设备sn要和发送的sn没对应(不能混用不同设备的sn)
5、模板id没对应(模板id是跟着设备走的,不能混用模板id)
6、接口调错了(用错了接口文档,可查清楚)
7、是传json字符串,不是json
8、设备模板内的字段为限定枚举值,或限定字符,请查看模板示例
这个报错其实不是很明确,我确定我的model_id和sn都是对的,但还是报错9800006。看了很多提问者,说解决了但又没说怎么解决的。
其实根本原因是小程序用户没有订阅成功。订阅没成功又分为两种情况。
第一种,用户连消息的授权都还没有做,比如一个全新的小程序用户,给这种用户发消息会报错:
{"errcode":9800006,"errmsg":"订阅model_id和sn关系检查失败,请确认发送消息时传入的model_id和sn与订阅时传入的是否一致 rid: xxxxxxxxxxx"}
第二种,用户已授权订阅,但没开启接收通知,给这种用户发消息会报错:
{"errcode":43101,"errmsg":"user refuse to accept the msg rid: xxxxxxxx"}
一句话总结:微信对第一种情况的报错提示不合理,会误导开发者,并不是我们的代码有问题。管理员也没明确回答。
遇到一样的问题了 楼主解决了吗?只有一个设备 但是A用户能收到。B用户就提示这个错误
遇到一样的问题了,楼主解决了嘛
{
"to_openid_list": ["xxx"],
"data": {
"time1": {
"value": "2022-09-27 10:59:41"
},
"enum_string3": {
"value": "设备水位过低,为确保正常使用,请及时加水"
},
"enum_string2": {
"value": "客厅"
}
},
"template_id": "xxx",
"miniprogram_state": "formal",
"sn": "xx",
"model_id": "WBF49BPuuqbE8djvSR-1_w",
"page": "pages/index/index",
"lang": "zh_CN"
}