WeChat Cuenta Oficial — el campo «notes» del mensaje plantilla no se muestra — diagnóstico y solución
Problema
Enviando mensajes plantilla desde la cuenta de pruebas (sandbox) de un WeChat Cuenta Oficial, me encontré con un comportamiento extraño: la plantilla define 6 campos, pero el campo notes (observación) nunca aparece. Los otros 5 campos se muestran con normalidad.
El contenido de la plantilla:
Nombre: {{name.DATA}}Teléfono: {{phone.DATA}}Hora: {{time.DATA}}Servicio: {{services.DATA}}Empleado: {{staff.DATA}}Observación: {{notes.DATA}}La llamada a la API devuelve éxito (errcode = 0), pero en el mensaje recibido en WeChat solo aparecen las primeras 5 líneas: la línea de observación desaparece por completo, incluida la etiqueta «Observación».
Diagnóstico
1. Descartar un límite de número de campos
La primera hipótesis fue que la cuenta sandbox tiene un límite de 5 campos. Prueba:
- Quitar el campo «Empleado» y enviar solo 5 → notes sigue sin mostrarse
- Subir hasta 9 campos → todos los campos, incluido notes, se muestran
Conclusión: no es un límite de número de campos.
2. Descartar un límite de longitud
Según la documentación oficial, cada línea de un mensaje plantilla está limitada a 20 caracteres y el total a 200. Mis datos de prueba estaban muy por debajo.
Conclusión: tampoco es un problema de longitud.
3. Encontrar el patrón real
Tras varias pruebas surge un patrón claro:
| Número de campos | Posición de notes | ¿notes visible? |
|---|---|---|
| 6 campos | última | No |
| 9 campos | 6.º (no último) | Sí |
| 7 campos | 6.º (no último) | Sí |
Es decir: mientras notes sea la última línea de la plantilla, desaparece. Si hay otro campo después, vuelve a verse.
4. Probar el nombre del campo
Manteniendo notes en la última posición, cambiamos solo el nombre:
| Nombre del campo | ¿Visible? |
|---|---|
| notes | No |
| remark | No |
| info | Sí |
| message | Sí |
notes y remark desaparecen; info y message se muestran sin problemas.
Causa raíz
La API de mensajes plantilla de WeChat Cuenta Oficial admitía originalmente un parámetro remark de nivel superior que se renderizaba como una «observación» al final del mensaje. El 30 de marzo de 2023, WeChat publicó este aviso:
Los mensajes plantilla dejarán de mostrar el campo remark.
Esa retirada no solo afecta al parámetro remark de nivel superior. WeChat también realiza un emparejamiento semántico sobre nombres de campo como notes y remark: cuando un nombre así aparece como último campo de la plantilla, se descarta de forma silenciosa por la ruta de compatibilidad con el antiguo remark.
En resumen:
notesyremarkson nombres de campo reservados en los mensajes plantilla de WeChat.- En la última posición activan la lógica de compatibilidad del antiguo
remarky se eliminan sin aviso. - En otra posición, o con otro nombre, se muestran sin problemas.
Soluciones
Opción 1: renombrar el campo (recomendada)
La solución más limpia: renombrar notes a un nombre fuera del conjunto reservado, como message, info, desc, etc.
Nombre: {{name.DATA}}Teléfono: {{phone.DATA}}Hora: {{time.DATA}}Servicio: {{services.DATA}}Empleado: {{staff.DATA}}Mensaje: {{message.DATA}}Opción 2: añadir un campo de relleno detrás de notes
Si renombrar no es viable (plantilla ya auditada, en producción y usada por varias integraciones), añade un campo «relleno» detrás de notes para que ya no sea la última línea:
Nombre: {{name.DATA}}Teléfono: {{phone.DATA}}Hora: {{time.DATA}}Servicio: {{services.DATA}}Empleado: {{staff.DATA}}Observación: {{notes.DATA}}Otro: {{other.DATA}}Al enviar, other puede ser una cadena vacía o un valor placeholder.
Cambio de código
En el backend, renombra el campo notes a message en el payload:
// IMPORTANTE: no uses notes como nombre de campo.// WeChat lo trata como el campo "remark" reservado y lo descarta sin avisar.return { name, phone, time: timeRange, services, staff, message // antes: notes};Conclusiones
- Los mensajes plantilla de WeChat Cuenta Oficial tienen nombres de campo reservados. Los nombres con semántica «remark» (
notes,remark, etc.) se interpretan como la antigua casilla de observación y no se muestran. - Es un efecto colateral de la retirada del campo
remarkpor parte de WeChat en 2023, no documentada de forma destacada. - La solución es usar un nombre neutro como
message,infoodesc, o añadir un campo de relleno trasnotes. - Para incidencias del tipo «sin error pero sin salida», conviene variar número de campos, posición y nombre uno cada vez — encuentras el patrón antes que la documentación.