·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

DiscuzQ系列(三)解决因微信公众号模板消息格式调整,导致DiscuzQ微信通知接口失效的问题 New

434 2
发表于 2023-11-3 07:58:21 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
官方关于规范公众号模板消息的再次公告
https://developers.weixin.qq.com/community/develop/doc/000a2ae286cdc0f41a8face4c51801?blocktype=1&page=1

DiscuzQ系列(三)解决因微信公众号模板消息格式调整,导致DiscuzQ微信通知接口失效的问题
New
 可可,西瓜,it618,点微

!!!也是就说现在官方已经取消模板消息。改成类目消息,原有的模板消息id无法使用!!!

问题
discuzq后台界面—全局—通知设置—任意一个通知—选项(我这里以内容回复通知为例)

在通知方式选中微信模板通知并配置了相关参数发现微信没有收到通知消息

排查原因
排查了半天。。。

查看模板消息接口文档:https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=299791505&lang=zh_CN

在类目模板消息中有这么一句话

对于类目模板消息,同样使用上述接口进行发送,各参数的含义与要求保持一致。 除此之外,类目模板的模板消息,对于不同参数类型,参数值的格式有相应的要求。

根据之前的文章,我们自行部署了后端源码,现在查看后端源码相关的代码部分

DiscuzQ系列(三)解决因微信公众号模板消息格式调整,导致DiscuzQ微信通知接口失效的问题
New
 可可,西瓜,it618,点微

解决问题的关键部分请到:https://www.abyssdawn.com/thread/7
我要说一句 收起回复

评论2

IT618发布Lv.8 发表于 2023-11-3 07:59:12 | 查看全部
效果图
DiscuzQ系列(三)解决因微信公众号模板消息格式调整,导致DiscuzQ微信通知接口失效的问题
New
 可可,西瓜,it618,点微


新注册的公众号会有影响,旧的公众没有使用到类目模板可以无视
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-18 05:50:52 | 查看全部
根据你提供的信息,微信公众号模板消息的格式已经调整,导致DiscuzQ的微信通知接口失效。为了解决这个问题,我们需要对DiscuzQ的后端代码进行相应的修改,以适配新的类目消息格式。

### 1. 了解新的类目消息格式
首先,你需要了解微信公众号新的类目消息格式。根据微信官方的文档,类目消息的发送接口与之前的模板消息接口相同,但参数值的格式有新的要求。具体可以参考微信官方文档:[微信类目模板消息文档](https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=299791505&lang=zh_CN)。

### 2. 修改DiscuzQ的后端代码
接下来,我们需要修改DiscuzQ的后端代码,以适配新的类目消息格式。以下是可能的修改步骤:

#### 2.1 找到微信通知相关的代码
首先,找到DiscuzQ后端代码中负责发送微信通知的部分。通常这部分代码会位于`src/notification/WechatNotification.php`或类似的文件中。

#### 2.2 修改模板消息的发送逻辑
在找到相关代码后,你需要修改发送模板消息的逻辑。以下是一个示例代码片段,展示如何修改:

  1. public function sendWechatTemplateMessage($openid, $templateId, $data, $url = '')
  2. {
  3.     $accessToken = $this->getAccessToken();
  4.     $apiUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$accessToken}";

  5.     $postData = [
  6.         'touser' => $openid,
  7.         'template_id' => $templateId,
  8.         'url' => $url,
  9.         'data' => $this->formatTemplateData($data), // 格式化数据
  10.     ];

  11.     $response = $this->httpPost($apiUrl, json_encode($postData));
  12.     return json_decode($response, true);
  13. }

  14. private function formatTemplateData($data)
  15. {
  16.     $formattedData = [];
  17.     foreach ($data as $key => $value) {
  18.         $formattedData[$key] = [
  19.             'value' => $value,
  20.             'color' => '#173177', // 可以根据需要调整颜色
  21.         ];
  22.     }
  23.     return $formattedData;
  24. }
复制代码


#### 2.3 适配新的类目消息格式
根据微信官方文档,类目消息的参数值格式有新的要求。你需要确保`$data`参数中的值符合新的格式要求。例如:

  1. $data = [
  2.     'first' => [
  3.         'value' => '您有一条新的回复',
  4.         'color' => '#173177',
  5.     ],
  6.     'keyword1' => [
  7.         'value' => '用户A',
  8.         'color' => '#173177',
  9.     ],
  10.     'keyword2' => [
  11.         'value' => '2023-10-01 12:00:00',
  12.         'color' => '#173177',
  13.     ],
  14.     'remark' => [
  15.         'value' => '请及时查看',
  16.         'color' => '#173177',
  17.     ],
  18. ];
复制代码


### 3. 测试修改后的代码
在修改完代码后,你需要进行测试,确保微信通知能够正常发送。你可以通过以下步骤进行测试:

1. 在DiscuzQ后台配置微信通知的相关参数。
2. 触发一个通知事件(例如内容回复通知)。
3. 检查微信是否收到通知消息。

### 4. 部署修改后的代码
如果测试通过,你可以将修改后的代码部署到生产环境中。确保在部署前备份原有代码,以防出现问题。

### 5. 进一步优化
如果你发现某些通知仍然无法正常发送,可以进一步检查微信官方文档,确保所有参数都符合新的格式要求。你也可以参考其他开发者的经验,例如你提到的[AbyssDawn论坛](https://www.abyssdawn.com/thread/7)中的讨论。

### 总结
通过以上步骤,你应该能够解决因微信公众号模板消息格式调整导致的DiscuzQ微信通知接口失效的问题。如果你在修改过程中遇到任何问题,欢迎继续提问,我会尽力帮助你解决。

希望这些信息对你有所帮助!如果你有其他问题,随时可以联系我。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:,GMT+8, 2025-5-14 04:34 , Processed in 0.547331 second(s), 82 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表