Catatan Teknis zhaoJian

WeChat Akun Resmi — Field «notes» di Template Message Tidak Muncul — Analisis dan Solusi

Teknologi ~4744 kata · 12 menit baca - dilihat

Masalah

Saat mengirim template message dari akun uji coba (sandbox) WeChat Akun Resmi, saya menemui kasus aneh: template mendefinisikan 6 field, tetapi field notes (catatan) selalu tidak ditampilkan. Lima field lainnya tampil normal.

Isi template:

Nama: {{name.DATA}}
Telepon: {{phone.DATA}}
Waktu: {{time.DATA}}
Layanan: {{services.DATA}}
Staf: {{staff.DATA}}
Catatan: {{notes.DATA}}

Pemanggilan API mengembalikan sukses (errcode = 0), namun di pesan WeChat yang diterima hanya 5 baris pertama yang muncul — baris catatan hilang seluruhnya, termasuk label “Catatan”.

Proses Investigasi

1. Mengeliminasi batas jumlah field

Hipotesis pertama: akun sandbox dibatasi maksimum 5 field. Diuji:

  • Hilangkan field “Staf” dan kirim hanya 5 field → notes tetap tidak muncul
  • Tambah hingga 9 field → semua field, termasuk notes, muncul

Kesimpulan: bukan batas jumlah field.

2. Mengeliminasi batas panjang karakter

Menurut dokumentasi resmi, setiap baris template message dibatasi 20 karakter dan total 200 karakter. Data uji jauh di bawah batas tersebut.

Kesimpulan: bukan masalah panjang karakter.

3. Menemukan pola sebenarnya

Setelah pengujian berulang, muncul pola yang jelas:

Jumlah fieldPosisi notesnotes muncul?
6 fieldterakhirTidak
9 fieldke-6 (bukan terakhir)Ya
7 fieldke-6 (bukan terakhir)Ya

Artinya: selama notes adalah baris terakhir template, ia menghilang. Begitu ada field setelahnya, ia muncul kembali.

4. Menguji nama field

notes tetap pada posisi terakhir, hanya namanya yang diganti:

Nama fieldMuncul?
notesTidak
remarkTidak
infoYa
messageYa

notes dan remark sama-sama tidak muncul; info dan message tampil normal.

Analisis Penyebab

API template message WeChat Akun Resmi awalnya mendukung parameter remark di level paling atas yang dirender sebagai “catatan” di bagian bawah pesan. Pada 30 Maret 2023, WeChat merilis pengumuman:

Template message tidak akan lagi menampilkan field remark.

Pencabutan ini bukan hanya menyasar parameter remark di level atas. WeChat juga melakukan pencocokan semantik pada nama field seperti notes dan remark — ketika nama tersebut muncul sebagai field terakhir dalam template, ia akan dibuang diam-diam melalui jalur kompatibilitas remark lama.

Singkatnya:

  • notes dan remark adalah nama field yang dipesan (reserved) di template message WeChat.
  • Di posisi terakhir, mereka memicu logika kompatibilitas remark lama dan dihapus tanpa peringatan.
  • Di posisi lain atau dengan nama lain, mereka tampil normal.

Solusi

Cara 1: Ganti nama field (disarankan)

Solusi paling bersih: ganti notes ke nama yang tidak masuk daftar reserved, misalnya message, info, desc, dll.

Nama: {{name.DATA}}
Telepon: {{phone.DATA}}
Waktu: {{time.DATA}}
Layanan: {{services.DATA}}
Staf: {{staff.DATA}}
Pesan: {{message.DATA}}

Cara 2: Tambahkan field pengisi setelah notes

Jika mengganti nama tidak memungkinkan (template sudah lolos audit, di produksi, dipakai banyak integrasi), tambahkan field “pengisi” setelah notes agar bukan baris terakhir lagi:

Nama: {{name.DATA}}
Telepon: {{phone.DATA}}
Waktu: {{time.DATA}}
Layanan: {{services.DATA}}
Staf: {{staff.DATA}}
Catatan: {{notes.DATA}}
Lainnya: {{other.DATA}}

Saat pengiriman, field other boleh dikirim dengan string kosong atau placeholder.

Perubahan Kode

Pada backend, ganti nama field notes menjadi message di payload:

// PENTING: jangan gunakan notes sebagai nama field.
// WeChat memperlakukannya sebagai field "remark" yang dipesan dan menghapusnya tanpa peringatan.
return {
name,
phone,
time: timeRange,
services,
staff,
message // sebelumnya: notes
};

Kesimpulan

  1. Template message WeChat Akun Resmi memiliki nama field yang dipesan. Nama-nama dengan semantik “remark” (notes, remark, dll.) diinterpretasikan sebagai slot catatan lama dan tidak ditampilkan.
  2. Ini efek samping dari pencabutan field remark oleh WeChat pada 2023 — dan tidak didokumentasikan secara jelas.
  3. Perbaikannya: gunakan nama netral seperti message, info, atau desc, atau tambahkan field pengisi setelah notes.
  4. Untuk masalah “tidak ada error tapi tidak tampil”, mengubah jumlah field, posisi, dan nama satu per satu lebih cepat daripada mencari di dokumentasi.

Referensi

Bagikan:

Komentar