使用微信公众平台接口向用户发送模板消息
获取已添加至帐号下所有模板列表,可在微信公众平台后台中查看模板列表信息。为方便第三方开发者,提供通过接口调用的方式来获取帐号下所有模板信息,具体如下:
官方文档地址
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 { ////// 发送模板消息结果 /// public class SendTemplateMessageResponse:ErrorMessage { /// /// 消息ID /// public string msgid { get; set; } } }
定义一个SendTemplateMessage方法类继承WeiXinRequest 和接口IWeiXin
namespace YuanTK.WeiXin { ////// 发送模板消息请求参数 /// public class SendTemplateMessageRequest { /// /// 接收者openid /// public string touser { get; set; } /// /// 模板ID /// public string template_id { get; set; } /// /// 模板跳转链接(海外帐号没有跳转能力) /// public string url { get; set; } /// /// 跳小程序所需数据,不需跳小程序可不用传该数据 /// public Miniprogram miniprogram { get; set; } /// /// 模板填充字段数据 /// public Dictionary<string, TemplateDataItem> data { get; set; } } /// /// 小程序配置信息 /// 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; } } /// /// 发送模板消息 /// public class SendTemplateMessage : WeiXinRequest , IWeiXin { /// /// 接口地址 /// 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}"; } /// /// 调用接口获取结果 /// /// 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 api = new SendTemplateMessage(access_token, request);
SendTemplateMessageResponse response = api.GetResponse();
调用成功返回的结果
可以看到这里的模板ID就是上上篇文章里在后台添加的测试模板
微信端收到消息效果