Notes techniques de zhaoJian

WeChat Compte Officiel — le champ « notes » du message modèle ne s'affiche pas — diagnostic et solution

Technologie ~5088 mots · 13 min de lecture - vues

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 champsPosition de notesnotes affiché ?
6 champsdernierNon
9 champs6e (pas dernier)Oui
7 champs6e (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 champAffiché ?
notesNon
remarkNon
infoOui
messageOui

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é :

  • notes et remark sont 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 remark et 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

  1. 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.
  2. C’est un effet de bord de la suppression du champ remark par WeChat en 2023, et ce n’est pas mis en avant dans la documentation.
  3. Le correctif : utiliser un nom neutre comme message, info ou desc, ou ajouter un champ bouchon après notes.
  4. 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.

Références

Partager :

Commentaires