『QQ:1353814576』

微信公众平台C#开发系列(十三): 模板消息-获得模板ID


使用微信公众平台接口获取推送模板消息的模板ID

从行业模板库选择模板到帐号后台,获得模板ID的过程可在微信公众平台后台完成。为方便第三方开发者,提供通过接口调用的方式来获取模板ID,具体如下:

官方文档地址

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#

首先先去微信公众测试号 管理后台添加 测试消息模板

微信公众测试号 管理后台添加 测试消息模板

填写模板内容 这里以文档里的例子为例(注意参数{{}}大括号之间不能有空格)

微信公众测试号 管理后台添加 测试消息模板

添加完成后

微信公众测试号 管理后台添加 测试消息模板

获得模板ID

根据文档我们先定义一个MessageTemplateIdResponse类继承 ErrorMessage 用于解析接口结果

ErrorMessage 公共类参考 : 微信公众平台C#开发系列(四):获取access token凭证

namespace YuanTK.WeiXin.Wrapper
{
    /// <summary>
    /// 获取消息模板Id结果
    /// </summary>
    public class MessageTemplateIdResponse : ErrorMessage
    {
        /// <summary>
        /// 模板Id
        /// </summary>
        public string template_id { get; set; }
    }
}

定义一个MessageTemplateId方法类继承WeiXinRequest 和接口IWeiXin

namespace YuanTK.WeiXin
{
    /// <summary>
    /// 获取消息模板ID
    /// </summary>
    public class MessageTemplateId: WeiXinRequest<MessageTemplateIdResponse>, IWeiXin<MessageTemplateIdResponse> 
    {
        /// <summary>
        /// 接口地址
        /// </summary>
        String api;


        object _RequestData;

        /// <summary>
        /// 接口调用凭证
        /// </summary>
        /// <param name="access_token"></param>
        /// <param name="template_id_short">模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式</param>
        public MessageTemplateId(string access_token,string template_id_short)
        {
            _RequestData = new { template_id_short = template_id_short };
            ///初始化接口地址
            api = $"https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token={access_token}";
        }

        /// <summary>
        /// 调用接口获取结果
        /// </summary>
        /// <returns></returns>
        public MessageTemplateIdResponse GetResponse()
        {
            var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
            string poststr = Newtonsoft.Json.JsonConvert.SerializeObject(this._RequestData, Formatting.Indented, jSetting);
            return this.Post(api, poststr);
        }
    }
}

调用代码例子

string access_token = token.access_token;
IWeiXin<MessageTemplateIdResponse> api = new MessageTemplateId(access_token, "1");
MessageTemplateIdResponse response = api.GetResponse();

微信公众号凭证access_token如何获取?

调用成功返回的结果

由于template_id_short 这个参数测试号没找到 所以接口都是错误返回 实际好像也没怎么用到这个参数 这里就不截取运行图了