首页 微信小程序 微信开发 .net微信公众号开发

.net微信公众号开发

Mar 25, 2017 pm 01:47 PM

作者:王先荣
   本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介;(2)设置所属行业;(3)获得模板id;(4)发送模板消息;(5)接收推送模板消息发送结果事件。

1 TemplateMessage类简介
    TemplateMessage静态类封装了跟模板消息相关的方法,见下表:

方法名 功能
SetIndustry 设置行业
GetId 获取模板id
Send 发送模板消息

2 设置所属行业

    TemplateMessage类的SetIndustry方法用于设置公众号所属的行业,该方法的定义如下:


        /// <summary>
        /// 设置行业        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="code1">行业代码1</param>
        /// <param name="code2">行业代码2</param>
        /// <returns>返回设置是否成功</returns>
        public static ErrorMessage SetIndustry(string userName, string code1, string code2)        //或者

        /// <summary>
        /// 设置行业        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="industry1">行业1</param>
        /// <param name="industry2">行业2</param>
        /// <returns>返回设置是否成功</returns>
        public static ErrorMessage SetIndustry(string userName, Industry industry1, Industry industry2)
登录后复制

其中,Industry为行业类,类中的静态成员包含了已知的所有行业,例如:Industry.OnlineGame代表了网络游戏这一行业;Industry类有三个属性,分别为:Code——行业代码,Name——行业名称,PrimaryIndustry——主行业。

设置所属行业的示例:

/// <summary>
    /// 设置所属行业
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnSetIndustry_Click(object sender, EventArgs e)
    {
        string userName = lbPublicAccount.SelectedValue;
        string industryCode1 = "", industryCode2 = "";
        int count = 0;
        foreach (ListItem item in cblIndustry.Items)
        {
            if (item.Selected)
            {
                count++;
                if (count == 1)
                    industryCode1 = item.Value;
                else if (count == 2)
                {
                    industryCode2 = item.Value;
                    break;
                }
            }
        }
        if (count != 2)
            ltrMessage.Text = "请选择两个行业。";
        else
        {
            ErrorMessage errorMessage = TemplateMessage.SetIndustry(userName, industryCode1, industryCode2);
            ltrMessage.Text = string.Format("设置所属行业{0}。{1}",
                errorMessage.IsSuccess ? "成功" : "失败",
                errorMessage.IsSuccess ? "" : errorMessage.ToString());
        }
    }

设置所属行业示例
登录后复制

设置所属行业示例

3 获得模板id

TemplateMessage类的GetId方法用于获取模板id,该方法定义如下:

        /// <summary>
        /// 获取模板ID        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="shortTemplateId">模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式</param>
        /// <param name="errorMessage">返回获取是否成功</param>
        /// <returns>返回模板ID;如果获取失败,返回空字符串。</returns>
        public static string GetId(string userName, string shortTemplateId, out ErrorMessage errorMessage)
登录后复制

注意:(1)如果尚未添加模板,该方法会先添加模板,然后返回模板id;(2)如果已经添加了模板,再次调用该方法,会返回一个新的不同于上次获取到的模板id。

获得模板id的示例:

    /// <summary>
    /// 添加并模板id    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnGetTemplateId_Click(object sender, EventArgs e)
    {        string userName = lbPublicAccount.SelectedValue;
        ErrorMessage errorMessage;        string templateId = TemplateMessage.GetId(userName, txtTemplateIdShort.Text, out errorMessage);        if (errorMessage.IsSuccess)
            ltrMessage.Text = string.Format("添加并获取模板id成功。模板id:{0}", templateId);        else
            ltrMessage.Text = string.Format("添加并获取模板id失败。{0}", errorMessage.ToString());
    }
登录后复制

获得模板id示例

4 发送模板消息
TemplateMessage类的Send方法用于发送模板消息,该方法定义如下:


        /// <summary>
        /// 发送模板消息        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="touser">接收消息的账号</param>
        /// <param name="templateId">模板id</param>
        /// <param name="detailUrl">详情地址</param>
        /// <param name="topColor">顶端颜色</param>
        /// <param name="data">数据</param>
        /// <param name="errorMessage">返回发送是否成功</param>
        /// <returns>返回消息id;如果发送失败,返回-1。</returns>
        public static long Send(string userName, string touser, string templateId, string detailUrl, Color topColor,
            Tuple<string, string, Color>[] data, out ErrorMessage errorMessage)
登录后复制

其中,data参数为Tuple类型,包含模板所用的数据,data.Item1为数据键,data.Item2为数据值,data.Item3为显示数据的颜色。

发送模板消息的示例:

/// <summary>
        /// 发送模板消息
        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="touser">接收消息的账号</param>
        /// <param name="templateId">模板id</param>
        /// <param name="detailUrl">详情地址</param>
        /// <param name="topColor">顶端颜色</param>
        /// <param name="data">数据</param>
        /// <param name="errorMessage">返回发送是否成功</param>
        /// <returns>返回消息id;如果发送失败,返回-1。</returns>
        public static long Send(string userName, string touser, string templateId, string detailUrl, Color topColor,
            Tuple<string, string, Color>[] data, out ErrorMessage errorMessage)
登录后复制

发送模板消息示例

5 接收推送模板消息发送结果事件
在发送模板消息之后,微信服务器会推送结果到公众号的指定URL上,公众号服务器会接收到一条RequestTemplateSendJobFinishMessage类型的请求消息。
RequestTemplateSendJobFinishMessage类有以下只读属性:

/// <summary>
        /// 获取消息id
        /// </summary>
        public long MsgID { get; private set; }
        /// <summary>
        /// 获取群发消息的结果
        /// </summary>
        public string Status { get; private set; }

        /// <summary>
        /// 获取消息是否群发成功
        /// </summary>
        public TemplateMessageSendStatusEnum SendStatus
        {
            get
            {
                TemplateMessageSendStatusEnum status;
                if (Status == sendFailedUserBlock)
                    status = TemplateMessageSendStatusEnum.UserBlock;
                else if (Status == sendFailedSystemFailed)
                    status = TemplateMessageSendStatusEnum.SystemFailed;
                else
                    status = TemplateMessageSendStatusEnum.Success;
                return status;
            }
        }
登录后复制

以上是.net微信公众号开发的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

H5和小程序与APP的区别 H5和小程序与APP的区别 Apr 06, 2025 am 10:42 AM

H5、小程序和APP的主要区别在于:技术架构:H5基于网页技术,小程序和APP为独立应用程序。体验和功能:H5轻便易用,功能受限;小程序轻量级,交互性好;APP功能强大,体验流畅。兼容性:H5跨平台兼容,小程序和APP受平台限制。开发成本:H5开发成本低,小程序中等,APP最高。适用场景:H5适合信息展示,小程序适合轻量化应用,APP适合复杂功能应用。

公司安全软件与应用冲突怎么办?HUES安全软件导致常用软件无法打开如何排查? 公司安全软件与应用冲突怎么办?HUES安全软件导致常用软件无法打开如何排查? Apr 01, 2025 pm 10:48 PM

公司安全软件与应用兼容性问题及排查方法许多企业为了保障内网安全,会安装安全软件。然而,安全软件有时...

H5页面制作和微信小程序有什么不同 H5页面制作和微信小程序有什么不同 Apr 05, 2025 pm 11:51 PM

H5更灵活,可定制性强,但需要娴熟的技术;小程序上手快,维护便捷,但受限于微信框架。

企业微信中的JS资源缓存问题如何解决? 企业微信中的JS资源缓存问题如何解决? Apr 04, 2025 pm 05:06 PM

企业微信的JS资源缓存问题探讨在进行项目功能升级时,常常会遇到部分用户未能成功升级的情况,尤其是在企�...

H5和小程序如何选择 H5和小程序如何选择 Apr 06, 2025 am 10:51 AM

H5和小程序的选择取决于需求。对于跨平台、快速开发和高扩展性的应用,选择H5;对于原生体验、丰富功能和平台依附性的应用,选择小程序。

H5和小程序的推广方式有何不同 H5和小程序的推广方式有何不同 Apr 06, 2025 am 11:03 AM

H5与小程序的推广方式存在差异:平台依赖性:H5依赖浏览器,小程序依赖特定平台(如微信)。用户体验:H5体验较差,小程序提供类似原生应用的流畅体验。传播方式:H5通过链接传播,小程序通过平台分享或搜索。H5推广方式:社交分享、邮件营销、QR码、SEO、付费广告。小程序推广方式:平台推广、社交分享、线下推广、ASO、与其他平台合作。

C#.NET面试问题和答案:提高您的专业知识 C#.NET面试问题和答案:提高您的专业知识 Apr 07, 2025 am 12:01 AM

C#.NET面试问题和答案包括基础知识、核心概念和高级用法。1)基础知识:C#是微软开发的面向对象语言,主要用于.NET框架。2)核心概念:委托和事件允许动态绑定方法,LINQ提供强大查询功能。3)高级用法:异步编程提高响应性,表达式树用于动态代码构建。

公司安全软件导致应用无法运行?如何排查和解决? 公司安全软件导致应用无法运行?如何排查和解决? Apr 19, 2025 pm 04:51 PM

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

See all articles