wangxinleo / wechat-public-account-push

✨微信公众号推送-给女朋友的浪漫
MIT License
1.68k stars 5.29k forks source link

📌 如何修复因2023-05-04微信推送服务规范整改,导致推送服务异常? #326

Open wangxinleo opened 1 year ago

wangxinleo commented 1 year ago

❓我需要查看本教程嘛?

只涉及到【微信测试号】推送的用户,其他方式不受影响。

❓修复了什么?

  1. 微信测试号不再支持【birthday_message.DATA(生日消息和节日消息)】与【course_schedule.DATA(每日的课表)】
  2. 新增【生日消息和节日消息】的替代方案 - 【wxbirthday{index}.DATA】
  3. 新增【每日的课表】的替代方案 - 【wx_courseschedule{index}.DATA】

❓微信测试号模板应该如何修改才能支持新版本?

  1. 一行文字不能仅使用 {{xxxx.Data}} , {{xxxx.Data}}前必须加可读文字。如:1. {{xxxx.Data}}
  2. 不能再使用特殊字符了。如\n 空格 °等都会被屏蔽,甚至直接整行不显示

❓可以给一个示例模板嘛(有哪些字段是需要这样处理的)?

城市:{{city.DATA}} 
天气:{{weather.DATA}} 
最低气温:{{min_temperature.DATA}}度
最高气温:{{max_temperature.DATA}}度 

今天是我们恋爱的第{{love_day.DATA}}天 
今天是我们结婚的第{{marry_day.DATA}}天 

提醒:
提醒:{{wx_birthday_0.DATA}} 
提醒:{{wx_birthday_1.DATA}} 
提醒:{{wx_birthday_2.DATA}} 
提醒:{{wx_birthday_3.DATA}} 

课表:
课表:{{wx_course_schedule_0.DATA}} 
课表:{{wx_course_schedule_1.DATA}} 
课表:{{wx_course_schedule_2.DATA}} 
课表:{{wx_course_schedule_3.DATA}} 
课表:{{wx_course_schedule_4.DATA}}   

假期提醒:
🗓️ {{wx_holidaytts_0}}{{wx_holidaytts_1}}{{wx_holidaytts_2}}

金山每日一句:
英文:{{wx_note_en_0.DATA}}{{wx_note_en_1.DATA}}{{wx_note_en_2.DATA}}
中文:{{wx_note_ch_0.DATA}}{{wx_note_ch_1.DATA}}{{wx_note_ch_2.DATA}}

每日一言:
* {{wx_one_talk_0.DATA}}{{wx_one_talk_1.DATA}}{{wx_one_talk_2.DATA}}

土味情话(彩虹屁):
* {{wx_earthy_love_words_0.DATA}}{{wx_earthy_love_words_1.DATA}}{{wx_earthy_love_words_2.DATA}}

朋友圈文案:
* {{wx_moment_copyrighting_0.DATA}}{{wx_moment_copyrighting_1.DATA}}{{wx_moment_copyrighting_2.DATA}}

毒鸡汤:
* {{wx_poison_chicken_soup_0.DATA}}{{wx_poison_chicken_soup_1.DATA}}{{wx_poison_chicken_soup_2.DATA}}

古诗古文-内容:
* {{wx_poetry_content_0.DATA}}{{wx_poetry_content_1.DATA}}{{wx_poetry_content_2.DATA}}
jojotong commented 1 year ago

星座运势,例如 {{comprehensive_horoscope.DATA}} 这样的长文本也不能换行显示了。 即使只有一行也会在当前行末尾显示省略号

确实

jojotong commented 1 year ago

总结一下我发现的问题:

  1. {{xxxx.Data}}前面必须加字符(emoji也行),否则不仅当前行不显示,后面的几行也可能不显示
  2. emoji仍然部分支持,有些emoji表情不支持的话,需要重新挑选支持的emoji,可以前往 https://emojipedia.org 挑选并逐个测试
  3. 长文本不能换行显示

下面是我调试好的模板,供大家参考:

🗓️{{date.DATA}}

今天是我们在一起的第{{love_day.DATA}}天,爱你❤️

今日{{city.DATA}}天气☁️:{{tian_api_weather_weather_0.DATA}}
温度🌡️: {{tian_api_weather_lowest_0.DATA}}-{{tian_api_weather_highest_0.DATA}}
紫外线强度指数☀️: {{tian_api_weather_uv_index_0.DATA}}
穿衣指数👚: {{tian_api_weather_tips_0.DATA}}

💌{{earthy_love_words.DATA}}
ligu99 commented 1 year ago

\r 是可以换行的

vuexiao commented 1 year ago

怎么了,怎么了,啊!发生什么了

WenRou-Pan commented 1 year ago

在java中使用

String[] splits = StrUtil.split(longText, 20); //longText为长文本
for (int i = 0; i < splits.length; i++) {
  templateMessage.addData(new WxMpTemplateData("rain_" + i, splits[i], (String) colors.get(14))); //这个颜色属性无关紧要
}

将长文本分割成多个字符串,我这里是固定为20的长度 配合模板拼接

小情书:{{rain_0.DATA}} {{rain_1.DATA}} {{rain_2.DATA}} {{rain_3.DATA}} {{rain_4.DATA}}

可以绕过长文本限制

aefa6 commented 1 year ago

在java中使用

String[] splits = StrUtil.split(longText, 20); //longText为长文本
for (int i = 0; i < splits.length; i++) {
  templateMessage.addData(new WxMpTemplateData("rain_" + i, splits[i], (String) colors.get(14))); //这个颜色属性无关紧要
}

将长文本分割成多个字符串,我这里是固定为20的长度 配合模板拼接

小情书:{{rain_0.DATA}} {{rain_1.DATA}} {{rain_2.DATA}} {{rain_3.DATA}} {{rain_4.DATA}}

可以绕过长文本限制

不懂就问,具体应该怎么填写,你说的java中使用要在哪里写入你的语句