WeChat Compte Officiel — le champ « notes » du message modèle ne s'affiche pas — diagnostic et solution
Problème
En envoyant des messages modèles depuis un compte de test (sandbox) d’un WeChat Compte Officiel, je suis tombé sur un comportement étrange : le modèle définit 6 champs, mais le champ notes (remarque) n’apparaît jamais. Les 5 autres champs s’affichent normalement.
Le contenu du modèle :
Nom : {{name.DATA}}Téléphone : {{phone.DATA}}Heure : {{time.DATA}}Service : {{services.DATA}}Employé : {{staff.DATA}}Remarque : {{notes.DATA}}L’appel API renvoie un succès (errcode = 0), mais dans le message WeChat reçu seules les 5 premières lignes apparaissent — la ligne « Remarque » a complètement disparu, étiquette comprise.
Diagnostic
1. Écarter une limite de nombre de champs
Première hypothèse : le compte sandbox limite à 5 champs. Test :
- Supprimer le champ « Employé » et n’envoyer que 5 champs → notes ne s’affiche toujours pas
- Pousser jusqu’à 9 champs → tous les champs, y compris notes, s’affichent
Conclusion : ce n’est pas une limite de nombre de champs.
2. Écarter une limite de longueur
Selon la documentation officielle, chaque ligne d’un message modèle est limitée à 20 caractères et le total à 200. Mes données de test étaient bien en dessous.
Conclusion : ce n’est pas un problème de longueur.
3. Identifier le vrai motif
À force de tests, un motif clair émerge :
| Nombre de champs | Position de notes | notes affiché ? |
|---|---|---|
| 6 champs | dernier | Non |
| 9 champs | 6e (pas dernier) | Oui |
| 7 champs | 6e (pas dernier) | Oui |
Autrement dit : tant que notes est la dernière ligne du modèle, il disparaît. Dès qu’un champ vient après, il réapparaît.
4. Tester le nom de champ lui-même
notes reste à la dernière position, seul le nom change :
| Nom de champ | Affiché ? |
|---|---|
| notes | Non |
| remark | Non |
| info | Oui |
| message | Oui |
notes et remark sont supprimés ; info et message s’affichent normalement.
Cause racine
L’API de message modèle de WeChat Official Account supportait à l’origine un paramètre remark de premier niveau, rendu comme une « remarque » en bas du message. Le 30 mars 2023, WeChat a publié l’annonce suivante :
Les messages modèles n’afficheront plus le champ remark.
Cette suppression ne touche pas que le paramètre remark de premier niveau. WeChat applique aussi un appariement sémantique sur les noms de champ comme notes et remark — quand un tel nom apparaît comme dernier champ du modèle, il est silencieusement supprimé via le chemin de compatibilité avec l’ancien remark.
En résumé :
notesetremarksont des noms de champ réservés dans les messages modèles WeChat- Placés en dernière position, ils déclenchent le code de compatibilité de l’ancien
remarket sont supprimés sans avertissement - Déplacés ailleurs, ou renommés, ils s’affichent normalement
Solutions
Option 1 : renommer le champ (recommandé)
La solution la plus propre : renommer notes avec un nom hors liste réservée, par exemple message, info, desc, etc.
Nom : {{name.DATA}}Téléphone : {{phone.DATA}}Heure : {{time.DATA}}Service : {{services.DATA}}Employé : {{staff.DATA}}Message : {{message.DATA}}Option 2 : ajouter un champ de remplissage après notes
Si renommer n’est pas envisageable (modèle déjà validé, en production, utilisé par plusieurs intégrations), ajoutez un champ « bouchon » après notes pour qu’il ne soit plus en dernière ligne :
Nom : {{name.DATA}}Téléphone : {{phone.DATA}}Heure : {{time.DATA}}Service : {{services.DATA}}Employé : {{staff.DATA}}Remarque : {{notes.DATA}}Autre : {{other.DATA}}Au moment de l’envoi, other peut contenir une chaîne vide ou un caractère de remplissage.
Modification du code
Côté backend, renommer le champ notes en message dans le payload :
// IMPORTANT : ne pas utiliser notes comme nom de champ.// WeChat le considère comme le champ « remark » réservé et le supprime silencieusement.return { name, phone, time: timeRange, services, staff, message // anciennement : notes};À retenir
- Les messages modèles WeChat Official Account possèdent des noms de champ réservés. Les noms à sémantique « remark » (
notes,remark, etc.) sont traités comme l’ancien emplacement de remarque et ne s’affichent pas. - C’est un effet de bord de la suppression du champ
remarkpar WeChat en 2023, et ce n’est pas mis en avant dans la documentation. - Le correctif : utiliser un nom neutre comme
message,infooudesc, ou ajouter un champ bouchon aprèsnotes. - Pour les bugs « pas d’erreur mais rien à l’écran », il vaut mieux faire varier le nombre de champs, leur position et leur nom une variable à la fois — on trouve le motif plus vite que la doc.