《微信开发日志》之被动响应多图文消息

被动响应多图文消息官方文档:

news消息

<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName>
   <CreateTime>12345678</CreateTime>
   <MsgType><![CDATA[news]]></MsgType>
   <ArticleCount>2</ArticleCount>
   <Articles>
       <item>
           <Title><![CDATA[title1]]></Title>
           <Description><![CDATA[description1]]></Description>
           <PicUrl><![CDATA[picurl]]></PicUrl>
           <Url><![CDATA[url]]></Url>
       </item>
       <item>
           <Title><![CDATA[title]]></Title>
           <Description><![CDATA[description]]></Description>
           <PicUrl><![CDATA[picurl]]></PicUrl>
           <Url><![CDATA[url]]></Url>
       </item>
   </Articles>
</xml>
参数 说明
ToUserName 员工UserID
FromUserName 企业号CorpID
CreateTime 消息创建时间(整型)
MsgType 消息类型,此时固定为:news
ArticleCount 图文条数,默认第一条为大图。图文数不能超过10,否则将会无响应
Title 图文消息标题
Description 图文消息描述
PicUrl 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
Url 点击图文消息跳转链接

我们在项目中新增一个News类

代码如下:

    /// <summary>
    /// 图文消息
    /// </summary>
    public class ResponseNews : ResponseBase
    {

        /// <summary>
        /// 图文条数,默认第一条为大图。图文数不能超过10,否则将会无响应
        /// </summary>
        public int ArticleCount
        {
            get
            {
                return ArticleCollection.Count;
            }
        }
        public string Articles { get; set; }

        /// <summary>
        /// 图文内容,集合
        /// </summary>
        public List<ArticleItem> ArticleCollection { get; set; }

        /// <summary>
        /// 构造函数,自动生成消息创建时间(整型),参考:APITools.GetCreateTime()
        /// </summary>
        /// <param name="toUser">员工UserID </param>
        /// <param name="fromUser">企业号CorpID </param>
        /// <param name="content">文本消息内容  </param>
        public ResponseNews(string toUser, string fromUser)
            : base(RequestMessageType.news)
        {
            this.ToUserName = toUser;
            this.FromUserName = fromUser;
            this.CreateTime = CorpTools.GetCreateTime();

        }

        /// <summary>
        /// 获得XML文本
        /// </summary>
        /// <returns></returns>
        public override string GenerateXML()
        {
            /*
            const string xmlformat = @" <xml>
               <ToUserName><![CDATA[toUser]]></ToUserName>
               <FromUserName><![CDATA[fromUser]]></FromUserName>
               <CreateTime>12345678</CreateTime>
               <MsgType><![CDATA[news]]></MsgType>
               <ArticleCount>2</ArticleCount>
               <Articles>
                   <item>
                       <Title><![CDATA[title1]]></Title>
                       <Description><![CDATA[description1]]></Description>
                       <PicUrl><![CDATA[picurl]]></PicUrl>
                       <Url><![CDATA[url]]></Url>
                   </item>
                   <item>
                       <Title><![CDATA[title]]></Title>
                       <Description><![CDATA[description]]></Description>
                       <PicUrl><![CDATA[picurl]]></PicUrl>
                       <Url><![CDATA[url]]></Url>
                   </item>
               </Articles>
            </xml>";
            */
            //获得文章列表xml
            string xmlArticles = "";
            foreach (ArticleItem item in ArticleCollection)
            {
                xmlArticles += item.GenerateXML();
            }

            string XML = " <xml>"
                            + String.Format("<ToUserName><![CDATA[{0}]]></ToUserName>", ToUserName)
                            + String.Format("<FromUserName><![CDATA[{0}]]></FromUserName>", FromUserName)
                            + String.Format("<CreateTime>{0}</CreateTime>", CreateTime)
                            + String.Format("<MsgType><![CDATA[{0}]]></MsgType>", MsgType)
                            + String.Format("<ArticleCount>{0}</ArticleCount>", ArticleCollection.Count)
                            + String.Format("<Articles>{0}</Articles>", xmlArticles)
                        + "</xml>";
            return String.Format(xmlformat, ToUserName, FromUserName, CreateTime, MsgType, "");
        }
    }

    /// <summary>
    /// 图文消息,单图文类
    /// </summary>
    public class ArticleItem
    {
        /// <summary>
        /// 文章标题
        /// </summary>
        public string Title { get; set; }
        /// <summary>
        /// 文章描述
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
        /// </summary>
        public string PicUrl { get; set; }
        /// <summary>
        /// 点击图文消息跳转链接
        /// </summary>
        public string Url { get; set; }

        public string GenerateXML()
        {
            string xml = "<item>"
                            + String.Format("<Title><![CDATA[{0}]]></Title>", Title)
                            + String.Format("<Description><![CDATA[{0}]]></Description>", Description)
                            + String.Format("<PicUrl><![CDATA[{0}]]></PicUrl>", PicUrl)
                            + String.Format("<Url><![CDATA[{0}]]></Url>", Url)
                        + "</item>";
            return xml;
        }
        public string GenerateJSON()
        {
            throw new NotImplementedException();
        }
    }

查询返回

时间: 2024-08-08 13:34:58

《微信开发日志》之被动响应多图文消息的相关文章

《微信开发日志》之OAuth2验证接口

OAuth2接口说明: 企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取员工的身份信息. 通过此接口获取用户身份会有一定的时间开销.对于频繁获取用户身份的场景,建议采用如下方案: 1.企业应用中的URL链接直接填写企业自己的页面地址 2.用户跳转到企业页面时,企业校验是否有代表用户身份的cookie,此cookie由企业生成 3.如果没有获取到cookie,重定向到OAuth验证链接,获取用户身份后,由企业生成代表用户身份的cookie 4.根据c

C# 调用微信接口上传素材和发送图文消息

using Common;using Newtonsoft.Json.Linq;using System;using System.IO;using System.Net;using System.Text; /// <summary> /// 调用微信接口凭证access_token /// </summary> private static string test_access_token { get { return "XXXXXXXXXXXX"; } }

php 微信开发订阅事件并回复2条消息

在通过微信公众平台验证之后,需要关注订阅公众号.如何获取订阅事件,并且在订阅之后回复消息,如果有需求要给用户一个数据库表中的信息,那我们可以保存用户openid(唯一),在这里说一下 这个openid 是每一个用户 对你公众号的一个唯一值,就算取消以后在关注也是这个值.订阅代码如下: public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $pos

[037] 微信公众帐号开发教程第13篇-图文消息全攻略

引言及内容概要 已经有几位读者抱怨“柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用”,好吧,我错了,原本以为把基础API封装完.框架搭建好,再给出一个文本消息的使用示例,大家就能够照猫画虎的,或许是因为我的绘画功底太差,画出的那只猫本来就不像猫吧…… 本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式.标题取名为“图文消息全攻略”,这绝对不是标题党,是想借此机会把大家对图文消息相关的问题.疑虑.障碍全部清除掉. 图文消息的主要参数说明 通过微信官方

微信开发值得推荐的开源项目

以下向大家介绍的是微信开发项目里使用的3款基于PHP的开发框架,相信一定对你的开发工作有所帮助. 1. Wechat-PHP-SDK 微信公众平台 PHP 开发包,细化各项接口操作,支持链式调用. Github托管地址:dodgepudding/wechat-php-sdk 2. 微信公众平台 PHP SDK 简单的微信公众平台 PHP SDK ,通过调用对应的接口,使你能够轻松地开发微信 App . Github托管地址:netputer/wechat-php-sdk 3. Wechat-ph

推荐有关微信开发的十个开源项目

转载:http://www.huceo.com/post/405.html 经常有做微信的朋友,问我能不能帮他实现公众号的这些功能啊.在微信方面能公开的我都免费共享给大家了,无论是微信网页方面的还是微信数据来源,我都在相关的平台或文章中公开给大家参考.至于怎么用怎么具体实现,这是一个大话题,昨天有位朋友说他买了本微信开发方面的书,结果看了几天云里雾里一点都看不懂.严格来说微信开发并不是一门独立技术,学会编程后再看看微信官方接口文档自然就会了.因此,这本书针对的是有编程基础的用户. 另外,我不会在

微信开发用户消息统一处理实现

微信公众平台用户消息存在多种形式,图文消息.语音消息.视频消息等.针对不同的消息,避免一一对其进行繁杂处理实现,这里采用动态代理实现统一消息处理.自定义消息处理代理类实现用户消息处理. 在公众平台开发者模式配置公众号后台接口信息: URL=http://weixin1234.ngrok.cc/Weixin/wechat.用户发送的消息将发送到此url的公账号后台. 这里为了在公众号后台启动时生成菜单,添加了统一处理过滤器WechatFilter,经由/wechat/的请求将通过此过滤器(在web

微信开发-素材/消息管理接口

开始 本文是 微信公众号开发者模式介绍及接入 的后续,如没看过前文的话,可能看本文会有些懵逼.本文主要介绍微信公众平台的素材.消息管理接口的开发.由于个人的订阅号是没有大多数接口的权限的,所以我们需要使用微信官方提供的测试号来进行开发.测试号的申请可参考下文: 使用微信测试账号对网页进行授权 图文消息 本小节我们来开发回复图文消息的功能,官方文档地址如下: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543 回复图文

微信公众号如何一天能推送多条图文消息

微信公众号推送多条图文消息,可以在关注回复,扫描二维码回复,群发消息里实现,其他场景均不能推送多条图文消息,微信早已禁用了部分场景功能的多图文消息使用.www.weihaobang.com/product?id=70&fm=fang 微号帮功能有关注回复.扫描二维码回复,群发消息,可以向粉丝推送多条图文消息,主要介绍扫描二维码回复多图文消息,二维码带统计关注粉丝来源,粉丝通过这个二维码关注都能统计到,粉丝取消也能监测到. 渠道二维码生成 使用渠道二维码生成功能,创建扫描回复多图文消息,选择修改粉