『QQ:1353814576』

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


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

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

官方文档地址

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就是上上篇文章里在后台添加的测试模板

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

微信端收到消息效果

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