溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用C#開發(fā)公眾號模板消息管理

發(fā)布時間:2021-09-13 09:47:03 來源:億速云 閱讀:139 作者:小新 欄目:移動開發(fā)

這篇文章主要介紹了如何使用C#開發(fā)公眾號模板消息管理 ,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

通過模板消息接口,公眾號能向關注其賬號的用戶發(fā)送預設模板的消息。模板消息僅用于公眾號向用戶發(fā)送重要的服務通知,只能用于符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。不支持廣告等營銷類消息以及其它所有可能對用戶造成騷擾的消息。本文主要介紹基于C#開發(fā)實現公眾號模板消息的管理功能。

“模板消息功能的推出,將極大地增強服務號的服務通知能力”,在一些一直期待微信模板消息功能開放的公眾號運營者看來,微信一對一溝通的社交屬性,讓信息推送的觸達率更加精準,這也讓企業(yè)在成本、服務效率、性能上有了不少優(yōu)勢,不僅豐富了企業(yè)的服務形式,增強用戶的互動和粘性,還能為用戶帶來更多元、豐富、及時的服務體驗。

1、模板的行業(yè)分類管理及說明

模版信息依行業(yè)進行劃分,并根據使用場景不同設計了不同的模版,如軟件行業(yè)下就有報名成功通知、看房提醒、訂單提醒、會員充值、會員消費通知等各種場景下可能使用到的模版。

如何使用C#開發(fā)公眾號模板消息管理

如果我們公眾號需要使用模板,那么我們需要從模板庫里面添加所需的模板(目前數量上限為15個)。模板添加到我的模板后,每個模板就生成了一個隨機值,也就是【模板ID】,我們發(fā)送信息,就是依照這個模板ID進行發(fā)送的。

如何使用C#開發(fā)公眾號模板消息管理

每個模板里面有詳細的參數說明,以及示例效果。

如何使用C#開發(fā)公眾號模板消息管理

微信團隊相關負責人表示:模板消息的開放主要是為了幫助公眾號完成閉環(huán)服務,現有的公眾號,主動發(fā)消息能力有限(每月可群發(fā)四條消息),這讓許多企業(yè)無法向用戶推送服務結果等消息的主動通知。模板消息開放后,企業(yè)可以借助微信平臺,運用模板消息,在外部服務和內部管理過程中,讓信息的觸達更為迅捷,為用戶提供更加周到的服務。

微信一直在不斷優(yōu)化用戶體驗,模板消息的開放,為企業(yè)提供了更多的基礎能力,比如更豐富的雙向互動,更精準的信息提醒等,這些都提升了企業(yè)精品化、個性化服務的深度和廣度,這也是為什么金融、民航、政務等多領域的機構、企業(yè)都期待微信開放模板消息功能的原因。未來,隨著模板消息功能的進一步完善,或許企業(yè)員工工資明細、住戶每月用電量、電費等用電詳單,甚至是駕駛證到期需更換等,都能通過企業(yè)、部門機構微信公眾帳號的模板消息即時傳遞給相應用戶。

2、使用模板消息進行開發(fā)

前面介紹了模板的相關信息以及單個模板的介紹,我們如果需要在后臺程序中集成模板消息發(fā)送的話,那么我們需要了解模板消息的API有那些?如何利用模板消息的API進行消息發(fā)送?

我們先來看看模板消息使用的說明:

1、所有服務號都可以在功能->添加功能插件處看到申請模板消息功能的入口,但只有認證后的服務號才可以申請模板消息的使用權限并獲得該權限;
2、需要選擇公眾賬號服務所處的2個行業(yè),每月可更改1次所選行業(yè);
3、在所選擇行業(yè)的模板庫中選用已有的模板進行調用;
4、每個賬號可以同時使用15個模板。
5、當前每個模板的日調用上限為10萬次【2014年11月18日將接口調用頻率從默認的日1萬次提升為日10萬次,可在MP登錄后的開發(fā)者中心查看】。

模板消息的管理功能有:

  1 設置所屬行業(yè)
  2 獲得模板ID
  3 發(fā)送模板消息
  4 事件推送

2.1設置所屬行業(yè)

設置行業(yè)可在MP中完成,每月可修改行業(yè)1次,賬號僅可使用所屬行業(yè)中相關的模板,為方便第三方開發(fā)者,提供通過接口調用的方式來修改賬號所屬行業(yè),具體如下:

接口調用請求說明

http請求方式: POST
https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN

POST數據說明

POST數據示例如下:

      {
          "industry_id1":"1",
          "industry_id2":"4"
       }

根據說明,我們可以定義一個接口類ITemplateMessageApi,然后定義設置所屬行業(yè)的接口函數如下所示:

        /// <summary>
        /// 設置所屬行業(yè)        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="industry_id1">公眾號模板消息所屬行業(yè)編號(主營行業(yè))</param>
        /// <param name="industry_id2">公眾號模板消息所屬行業(yè)編號(副營行業(yè))</param>
        /// <returns></returns>
        CommonResult SetIndustry(string accessToken, IndustryCode industry_id1, IndustryCode industry_id2);

而為了方便,我們定義IndustryCode為一個枚舉對象,里面列出了系統(tǒng)支持的所有行業(yè)代碼,如下所示。

如何使用C#開發(fā)公眾號模板消息管理

而實現代碼和之前的函數處理類似,都是POST數據到一個連接即可,并解析返回的結果就可以了,具體實現代碼如下所示。

/// <summary>
        /// 設置所屬行業(yè)
        /// </summary>
        /// <param name="accessToken">訪問憑證</param>
        /// <param name="industry_id1">公眾號模板消息所屬行業(yè)編號(主營行業(yè))</param>
        /// <param name="industry_id2">公眾號模板消息所屬行業(yè)編號(副營行業(yè))</param>
        /// <returns></returns>
        public CommonResult SetIndustry(string accessToken, IndustryCode industry_id1, IndustryCode industry_id2)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token={0}", accessToken);
            var data = new
            {
                industry_id1 = (int)industry_id1,
                industry_id2 = (int)industry_id2
            };
            string postData = data.ToJson();

            return Helper.GetExecuteResult(url, postData);
        }
2.2 獲得模板ID

獲得模板ID,也就是從模板庫里面添加對應的模板消息到我的模板里面。

從行業(yè)模板庫選擇模板到賬號后臺,獲得模板ID的過程可在MP中完成。為方便第三方開發(fā)者,提供通過接口調用的方式來修改賬號所屬行業(yè),具體如下:

接口調用請求說明

http請求方式: POST
https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN

POST數據說明

POST數據示例如下:

      {
           "template_id_short":"TM00015"
       }

C#函數實現代碼如下所示:

/// <summary>
        /// 獲得模板ID.
        /// 從行業(yè)模板庫選擇模板到賬號后臺,獲得模板ID的過程可在MP中完成。
        /// </summary>
        /// <param name="accessToken">訪問憑證</param>
        /// <param name="template_id_short">模板庫中模板的編號,有“TM**”和“OPENTMTM**”等形式</param>
        /// <returns></returns>
        public AddTemplateResult AddTemplate(string accessToken, string template_id_short)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token={0}", accessToken);
            var data = new
            {
                template_id_short = template_id_short
            };
            string postData = data.ToJson();

            return JsonHelper<AddTemplateResult>.ConvertJson(url, postData);
        }
2.3 發(fā)送模板消息

根據上面小節(jié)處理,添加到我的模板里面的操作得到的模板ID,我們就可以調用發(fā)送模板消息的API進行模板消息發(fā)送了。

接口調用請求說明

http請求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

POST數據說明

POST數據示例如下:

      {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",
           "topcolor":"#FF0000",
           "data":{
                   "first": {
                       "value":"恭喜你購買成功!",
                       "color":"#173177"
                   },
                   "keynote1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keynote2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keynote3": {
                       "value":"2014年9月16日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"歡迎再次購買!",
                       "color":"#173177"
                   }
           }
       }

根據上面的JSON參數,我們可以看到,有部分是模板消息公共的部分,有部分則是模板消息的具體參數,這些參數需要根據不同的模板進行不同的賦值。

如這部分是共同的:

   touser":"OPENID",
   "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
   "url":"http://weixin.qq.com/download",
   "topcolor":"#FF0000",

根據這個特點,我們定義發(fā)送模板消息的接口如下所示:

/// <summary>
        /// 模板消息僅用于公眾號向用戶發(fā)送重要的服務通知,只能用于符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。
        /// 不支持廣告等營銷類消息以及其它所有可能對用戶造成騷擾的消息。
        /// </summary>
        /// <param name="accessToken">訪問憑證</param>
        /// <param name="openId">賬號的openID</param>
        /// <param name="templateId">在公眾平臺線上模板庫中選用模板獲得ID</param>
        /// <param name="data">模板的變化參數數據</param>
        /// <param name="url">,URL置空,則在發(fā)送后,點擊模板消息會進入一個空白頁面(ios),或無法點擊(android)。</param>
        /// <param name="topcolor">頂部顏色,默認為#173177</param>
        /// <returns></returns>
        SendMassMessageResult SendTemplateMessage(string accessToken, string openId, string templateId, object data, string url, string topcolor = "#173177");

我們用object data來定義模板的變化參數數據。

具體的實現還是和前面的方法提交數據處理差不多,代碼如下所示。

/// <summary>
        /// 模板消息僅用于公眾號向用戶發(fā)送重要的服務通知,只能用于符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。
        /// 不支持廣告等營銷類消息以及其它所有可能對用戶造成騷擾的消息。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="accessToken">訪問憑證</param>
        /// <param name="openId"></param>
        /// <param name="templateId">在公眾平臺線上模板庫中選用模板獲得ID</param>
        /// <param name="data"></param>
        /// <param name="url">,URL置空,則在發(fā)送后,點擊模板消息會進入一個空白頁面(ios),或無法點擊(android)。</param>
        /// <param name="topcolor"></param>
        /// <returns></returns>
        public SendMassMessageResult SendTemplateMessage(string accessToken, string openId, string templateId, object data, string url, string topcolor = "#173177")
        {
            var postUrl = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", accessToken);
            var msgData = new TemplateData()
            {
                touser = openId,
                template_id = templateId,
                topcolor = topcolor,
                url = url,
                data = data
            };
            string postData = msgData.ToJson();

            SendMassMessageResult result = JsonHelper<SendMassMessageResult>.ConvertJson(postUrl, postData);
            return result;
        }

發(fā)送模板的消息相對其他兩個接口的使用復雜一些,例如我以一個會員通知的模板消息為例,模板的詳細情況如下:

如何使用C#開發(fā)公眾號模板消息管理

具體的測試代碼如下所示。

#region 發(fā)送模板消息

            var data = new
            {
                //使用TemplateDataItem簡單創(chuàng)建數據。
                first = new TemplateDataItem("您好,您已成為微信【廣州愛奇迪】會員。"),
                type = new TemplateDataItem("18620292076"),
                address = new TemplateDataItem("廣州市白云區(qū)廣州大道北"),
                VIPName = new
                {
                    //使用new 方式,構建數據,包括value, color兩個固定屬性。
                    value = "伍華聰",
                    color = "#173177"
                },
                VIPPhone = new TemplateDataItem("18620292076"),
                expDate = new TemplateDataItem("2016年4月18日"),
                remark = new TemplateDataItem("如有疑問,請咨詢18620292076。", "#173177"),
            };

            #endregion
            string url = "http://www.iqidi.com";
            string topColor = "#173177";

            string templateId = "-5LbClAa9KUlEmr5bCSS0rxU_I2iT16iYBDxCVU1iJg";
            SendMassMessageResult sendResult = api.SendTemplateMessage(token, openId, templateId, data, url, topColor);
            if(sendResult != null)
            {
                Console.WriteLine(sendResult.msg_id);
            }

微信模板消息,能夠讓我們與客戶之間溝通不受每月幾條數量的限制,同時也能夠利用微信模板庫豐富的內容,實現強大的應用場景。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用C#開發(fā)公眾號模板消息管理 ”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI