ソースを参照

feat: support displaying title & content in template message (close #74)

JustSong 2 年 前
コミット
030c5e0f8f
2 ファイル変更16 行追加6 行削除
  1. 12 3
      channel/wechat-test-account.go
  2. 4 3
      web/src/pages/Channel/EditChannel.js

+ 12 - 3
channel/wechat-test-account.go

@@ -74,14 +74,19 @@ func (i *WeChatTestAccountTokenStoreItem) Refresh() {
 	common.SysLog("access token refreshed")
 }
 
+type wechatTestAccountRequestValue struct {
+	Value string `json:"value"`
+}
+
 type wechatTestMessageRequest struct {
 	ToUser     string `json:"touser"`
 	TemplateId string `json:"template_id"`
 	URL        string `json:"url"`
 	Data       struct {
-		Text struct {
-			Value string `json:"value"`
-		} `json:"text"`
+		Text        wechatTestAccountRequestValue `json:"text"` // alias for description, for compatibility
+		Title       wechatTestAccountRequestValue `json:"title"`
+		Description wechatTestAccountRequestValue `json:"description"`
+		Content     wechatTestAccountRequestValue `json:"content"`
 	} `json:"data"`
 }
 
@@ -91,6 +96,7 @@ type wechatTestMessageResponse struct {
 }
 
 func SendWeChatTestMessage(message *model.Message, user *model.User, channel_ *model.Channel) error {
+	// https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
 	values := wechatTestMessageRequest{
 		ToUser:     channel_.AccountId,
 		TemplateId: channel_.Other,
@@ -100,6 +106,9 @@ func SendWeChatTestMessage(message *model.Message, user *model.User, channel_ *m
 		values.ToUser = message.To
 	}
 	values.Data.Text.Value = message.Description
+	values.Data.Title.Value = message.Title
+	values.Data.Description.Value = message.Description
+	values.Data.Content.Value = message.Content
 	values.URL = message.URL
 	jsonData, err := json.Marshal(values)
 	if err != nil {

+ 4 - 3
web/src/pages/Channel/EditChannel.js

@@ -152,9 +152,10 @@ const EditChannel = () => {
               </a>
               <br />
-              <br />
-              需要新增测试模板,模板标题推荐填写为「消息推送」,模板内容必须填写为
-              {' {{'}text.DATA{'}}'}。
+              需要新增测试模板,模板标题推荐填写为「消息推送」,模板内容填写为:
+              <br/>标题:{' {{'}title.DATA{'}}'}
+              <br/>描述:{' {{'}description.DATA{'}}'}
+              <br/>内容:{' {{'}content.DATA{'}}'}
             </Message>
             <Form.Group widths={3}>
               <Form.Input