微信公众平台C#开发系列(十六)模板消息-发送消息模板

微信公众平台开发
124
补充展位
Pages_Weblog_Get#fcfb1131-2483-469d-b941-ad42010ebd1c
文章摘要
此内容由人工摘要内容,并由AI根据文章内容进行润色
微信公众平台模板消息接口,支持认证服务号向用户发送合规服务通知,可通过接口获取模板列表、获取模板ID及发送消息。本文提供完整C#开发示例,包含类定义、调用代码及access_token获取指引,适配开发者快速对接,助力高效实现模板消息推送功能,满足各类服务场景需求。

使用微信公众平台接口向用户发送模板消息

获取已添加至帐号下所有模板列表,可在微信公众平台后台中查看模板列表信息。为方便第三方开发者,提供通过接口调用的方式来获取帐号下所有模板信息,具体如下:

官方文档地址

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

获得模板ID

参考 微信公众平台C#开发系列(十三): 模板消息-获得模板ID 根据文档我们先定义一个SendTemplateMessageResponse类继承 ErrorMessage 用于解析接口结果

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

namespace YuanTK.WeiXin.Wrapper
{
    ///<summary>
    /// 发送模板消息结果
    ///</summary>
    public class SendTemplateMessageResponse:ErrorMessage
    {
        ///<summary>
        /// 消息ID
        ///</summary>
        public string msgid { get; set; }
    }
}

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

namespace YuanTK.WeiXin
{
    ///<summary>
    /// 发送模板消息请求参数
    ///</summary>
    public class SendTemplateMessageRequest
    {
        ///<summary>
        /// 接收者openid
        ///</summary>
        public string touser { get; set; }
        ///<summary>
        /// 模板ID
        ///</summary>
        public string template_id { get; set; }
        ///<summary>
        /// 模板跳转链接(海外帐号没有跳转能力)
        ///</summary>
        public string url { get; set; }
        ///<summary>
        /// 跳小程序所需数据,不需跳小程序可不用传该数据
        ///</summary>
        public Miniprogram miniprogram { get; set; }

        ///<summary>
        /// 模板填充字段数据
        ///</summary>
        public Dictionary <string, TemplateDataItem> data { get; set; }
    }

    ///<summary>
    /// 小程序配置信息
    ///</summary>
    public class Miniprogram
    {
        public string appid { get; set; }
        public string pagepath { get; set; }
    }

    public class TemplateDataItem
    {
        public string value { get; set; }

        public string color { get; set; }
    }

    ///<summary>
    /// 发送模板消息
    ///</summary>
    public class SendTemplateMessage : WeiXinRequest<SendTemplateMessageResponse>, IWeiXin<SendTemplateMessageResponse>
    {
        ///<summary>
        /// 接口地址
        ///</summary>
        String api;
        dynamic _RequestData;
        public SendTemplateMessage(string access_token, SendTemplateMessageRequest request)
        {
            _RequestData = request;
            //_RequestData.data = request.data as dynamic;
            this.api = $"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={access_token}";
        }

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

调用代码例子

SendTemplateMessageRequest request = new SendTemplateMessageRequest()
{
    template_id = "jijmFDVnEoLakQPhRM-JOx3frbUUcYhAP7g6yObVKc8",
    touser = "osupU6********************XYLAbmc",
    url = "http://www.yuantk.com",
    data = new Dictionary<string, TemplateDataItem>()
    {
                    { "result",new TemplateDataItem(){ value="哎呀 居然中奖了",color="#F80"} },
                    { "withdrawMoney",new TemplateDataItem(){ value="0.01",color="#F80"} },
                    { "withdrawTime",new TemplateDataItem(){ value="2021-06-09",color="#F80"}},
                    { "cardInfo",new TemplateDataItem(){ value="邮政银行",color="#F80"}},
                    { "arrivedTime",new TemplateDataItem(){ value="2021-06-09",color="#F80"}},
                    { "remark",new TemplateDataItem(){ value="下次中奖还内定你",color="#F80"}}
    }
};

string access_token = token.access_token;
IWeiXin<SendTemplateMessageResponse>
api = new SendTemplateMessage(access_token, request);
SendTemplateMessageResponse response = api.GetResponse();

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

调用成功返回的结果

使用微信公众平台接口向用户发送模板消息

可以看到这里的模板ID就是上上篇文章里在后台添加的测试模板

使用微信公众平台接口向用户发送模板消息

微信端收到消息效果

使用微信公众平台接口向用户发送模板消息

补充展位 Pages_Weblog_Get#0
补充展位 Pages_Weblog_Get#1