## 發送訂閱消息
# 步驟一:獲取模板 ID
在微信公眾平臺手動配置獲取模板 ID:
登錄 [https://mp.weixin.qq.com](https://mp.weixin.qq.com/) 獲取模板,如果沒有合適的模板,可以申請添加新模板,審核通過后可使用。

# 步驟二:后臺配置模板消息

## 模板數據
~~~
{
"thing1": {
"value": "申請成為分銷商",
"color": "#173177"
},
"phrase2": {
"value": "未通過審核",
"color": "#FF0000"
},
"thing4": {
"value": "${saleDistributionApply.remark}",
"color": "#173177"
}
}
~~~
1. 上述模板數據中的 thing1、phrase2、thing4 具體請按照你選用的模板的具體關鍵詞修改
2. color 變量僅針對服務號模板消息有效;小程序訂閱消息無效,可不用設置;
## 模板數據中支持的變量
### 訂單
同[《**云打印機模板變量詳細說明**》](https://www.it120.cc/help/wtviya.html)
### 分銷商申請
${saleDistributionApply.XXX}
~~~
mobile:手機號碼
name: 姓名
status: 0 審核中 1 不通過 2 通過
remark: 備注
dateAdd: 申請時間
~~~
### 留言評論
${comment.XXX} 具體字段可以查看后臺評論留言返回數據結構字段
### CMS文章
${cmsnews.XXX} 具體字段可以查看后臺cms文章管理列表返回數據結構字段
## 觸發狀態
### 訂單
\-1 關閉訂單 0 待支付 1 已支付待發貨 2 已發貨待確認 3 確認收貨待評價 4 已評價
### 分銷商申請
1 不通過 2 通過
# 步驟三:獲取下發權限
詳見小程序端消息訂閱接口 [wx.requestSubscribeMessage](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html)
必須要按鈕的 bindTab 事件才能獲得授權,其他方式都無法彈出授權窗口
# 一次性訂閱和長期訂閱
[https://tech.qq.com/a/20191015/009298.htm](https://tech.qq.com/a/20191015/009298.htm)
`一次性訂閱消息可滿足小程序的大部分服務場景需求,但線下公共服務領域存在一次性訂閱無法滿足的場景,如航班延誤,需根據航班實時動態來多次發送消息提醒。為便于服務,平臺提供了長期性訂閱消息,用戶訂閱一次后,開發者可長期下發多條消息。目前長期性訂閱消息向政務、醫療、交通、金融、教育等線下公共服務開放,后續將綜合評估行業需求和用戶體驗持續完善。`
# 為什么沒有收到推送消息?
## 小程序端檢測
小程序端是否已經彈出如下授權信息,并且用戶是否已經點擊“允許”:

## 確定是“訂閱消息”還是“模版消息”
確認你添加的是訂閱消息模版,不要誤操作成模版消息模版
## 變量先寫死,排除變量錯誤導致的發送異常
在 “api工廠” 配置訂閱消息的時候,暫時先不用變量,變量的地方就用微信官方的例子寫死做測試,如果寫死變量可以收到,那么問題就是變量導致的,我們再進行下一步排查
如果變量寫死了,還是收不到,那么,說明你配置的 json 數據有問題,請仔細排查
例:

這個模版,有3個變量,那么測試的時候,就把這3個變量,用左側的示例內容寫死,看看能否收到消息,如:
~~~
{
"character_string1": {
"value": "2019103115382541014"
},
"character_string5": {
"value": "YT2018315450862"
},
"time9": {
"value": "2019-11-05 11:11:11"
},
}
~~~
確認變量的內容直接使用官方的示例,這樣肯定是可以收到消息的,再下一步排查變量導致的問題
## 變量使用不當
### 變量的限制
微信的變量,并非可以使用任意的字符的,具體可查看官方說明:
[https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html)
### 時間日期必須指定格式
所有的日期類的變量,必須指定日期顯示格式,例如當前時間:
~~~
${.now?string('yyyy-MM-dd HH:mm:ss')}
~~~
這里的**?string('yyyy-MM-dd HH:mm:ss')** 是不能省略的