趙健的技術筆記

微信公眾號範本訊息 notes 欄位不顯示問題排查與解決

技術 約 2032 字 · 6 分鐘 - 次閱讀

問題描述

在使用微信公眾號測試號發送範本訊息時,遇到一個奇怪的問題:範本中定義了6個欄位,但 notes(備註)欄位始終不顯示,其他5個欄位都能正常顯示。

範本內容如下:

姓名:{{name.DATA}}
電話:{{phone.DATA}}
時間:{{time.DATA}}
項目:{{services.DATA}}
員工:{{staff.DATA}}
備註:{{notes.DATA}}

API 呼叫返回成功,但微信訊息中只顯示前5行,備註始終不出現。

排查過程

1. 排除欄位數量限制

最初懷疑是微信測試號有欄位數量限制(最多5個欄位)。透過測試發現:

  • 去掉「員工」欄位,只發5個欄位 → 備註仍然不顯示
  • 添加更多欄位到9個 → 所有欄位包括備註都顯示了

結論:不是欄位數量限制。

2. 排除字元長度限制

根據微信官方文件,範本訊息每行內容不超過20字元,總內容不超過200字元。測試資料遠未超過限制。

結論:不是字元長度問題。

3. 發現關鍵規律

透過反覆測試發現一個規律:

範本欄位數notes 位置notes 是否顯示
6個欄位最後一個不顯示
9個欄位第6個(非最後)顯示
7個欄位第6個(非最後)顯示

notes 是範本的最後一個欄位時,它不會顯示。

4. 驗證 notes 欄位名問題

notes 替換為其他欄位名測試:

欄位名是否顯示
notes不顯示
remark不顯示
info顯示
message顯示

notesremark 都不顯示,而 infomessage 可以正常顯示。

原因分析

微信公眾號範本訊息 API 原本支援一個 remark 參數,用於在訊息底部顯示備註資訊。但從 2023年3月30日 起,微信官方發布公告:

範本訊息不再展示備註(remark)欄位

微信對 notesremark 等欄位名進行了特殊處理,將其識別為「備註」類欄位,因此不予顯示。這是微信的保留欄位名限制。

解決方案

方案一:更換欄位名(推薦)

notes 改為其他名稱,如 messageinfodesc 等:

姓名:{{name.DATA}}
電話:{{phone.DATA}}
時間:{{time.DATA}}
項目:{{services.DATA}}
員工:{{staff.DATA}}
留言:{{message.DATA}}

方案二:在 notes 後添加佔位欄位

notes 後面添加一個佔位欄位,使其不再是最後一個欄位:

姓名:{{name.DATA}}
電話:{{phone.DATA}}
時間:{{time.DATA}}
項目:{{services.DATA}}
員工:{{staff.DATA}}
備註:{{notes.DATA}}
其他:{{other.DATA}}

發送時 other 欄位可以不傳值或傳空值。

程式碼修改

後端發送通知資料時,將欄位名從 notes 改為 message

// 注意:不能使用 notes 作為欄位名,微信會將其識別為保留的「備註」欄位而不顯示
return {
name,
phone,
time: timeRange,
services,
staff,
message // 原來是 notes
};

總結

  1. 微信公眾號範本訊息有保留欄位名限制,notesremark 等會被識別為「備註」欄位而不顯示
  2. 這是 2023 年微信政策調整的結果,範本訊息不再展示備註內容
  3. 解決方案是避免使用這些保留欄位名,改用 messageinfo 等普通名稱
  4. 排查此類問題時,可以透過添加/刪除欄位、更換欄位名等方式逐步定位

參考資料

分享:

評論