zoukankan      html  css  js  c++  java
  • 微信开发 ---- 群发接口

    官网:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21      

    2018.03.15GitHub下载代码

    订阅号每天可以发一条,服务号每个月只能发4条。本篇的内容跟上篇内容相关,请先看上篇再看着篇。   微信开发 ---- 素材管理

    截图对图文消息做了测试

    ①创建我们的API

    ②上传图文消息内的图片获取URL     列子中没有用到此接口

     ③上传图文消息素材

     

    调用:  上传我们的临时素材,

     ④预览接口

      /// <summary>
            /// 预览接口
            /// 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。
            /// </summary>
            /// <param name="access_token"></param>
            /// <param name="openid">接收消息用户对应该公众号的openid</param>
            /// <param name="content">图文消息,语音,图片,视频:media_id(与根据分组群发中的media_id相同); 文本:文本消息</param>
            /// <param name="type"></param>
            /// <returns></returns>
            public static dynamic Preview(string access_token, string openid, string content, WxArtcleType type)
            {
                var url = string.Format("https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token={0}", access_token);
                var client = new HttpClient();
                var builder = new StringBuilder();
                builder.Append("{")
                .AppendFormat(""touser":"{0}"",openid)
                .Append(",");
                switch (type)
                {
                    case WxArtcleType.News:
                        builder.Append(""mpnews":")
                            .Append("{")
                            .AppendFormat(""media_id":"{0}"", content)
                            .Append("},")
                            .Append(""msgtype":"mpnews"");
                        break;
                    case WxArtcleType.Text:
                        builder.Append(""text":")
                           .Append("{")
                           .AppendFormat(""content":"{0}"", content)
                           .Append("},")
                           .Append(""msgtype":"text"");
                        break;
                    case WxArtcleType.Voice:
                        builder.Append(""voice":")
                               .Append("{")
                               .AppendFormat(""media_id":"{0}"", content)
                               .Append("},")
                               .Append(""msgtype":"voice"");
                        break;
                    case WxArtcleType.Image:
                        builder.Append(""image":")
                              .Append("{")
                              .AppendFormat(""media_id":"{0}"", content)
                              .Append("},")
                              .Append(""msgtype":"image"");
                        break;
                    case WxArtcleType.Video:
                        builder.Append(""video":")
                              .Append("{")
                              .AppendFormat(""media_id":"{0}"", content)
                              .Append("},")
                              .Append(""msgtype":"video"");
                        break;
                }
                builder.Append("}");
                NetLog.WriteTextLog("Pre", builder.ToString(), DateTime.Now);
                var result = client.PostAsync(url, new StringContent(builder.ToString())).Result;
                return JsonHelp.ToDynamic(result.Content.ReadAsStringAsync().Result);
            }
    View Code

    调用:

    运行:

    预览效果:

     

    总结:由上传接口得到 media_id -----》上传图文消息,返回 media_id  -------》传值进行测试

     

    ⑤我们也可以结合素材管理来完成发送

    原理:我们的media_id可以是临时的也可以是永久的media_id。注意:上传永久的图文消息需要的是永久的缩略图media_id。 

     

    预览效果:

    ⑥根据OpenID列表群发

       /// <summary>
            /// 根据OpenID列表群发【订阅号不可用,服务号认证后可用】
            /// </summary>
            /// <param name="access_token"></param>
            /// <param name="content">图文消息,语音,图片,视频:media_id; 文本:文本消息</param>
            /// <param name="type"></param>
            /// <param name="touser"></param>
            /// <returns>success:{"errcode":0,"errmsg":"send job submission success","msg_id":34182}</returns>
            public static dynamic ReplayOpenids(string access_token, string content, WxArtcleType type, IEnumerable<string> touser, string videoTitle, string videoDesc)
            {
                var url = string.Format("https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={0}", access_token);
                var client = new HttpClient();
                var builder = new StringBuilder();
                builder.Append("{")
                .Append(""touser":")
                .Append("[");
                string aa = "";
                foreach (var t in touser)
                {
                    aa += string.Format(""{0}",", t);
                }
                aa=aa.TrimEnd(',');
                builder.Append(aa);
                builder.Append("],");
                switch (type)
                {
                    case WxArtcleType.News:
                        builder.Append(""mpnews":")
                            .Append("{")
                            .AppendFormat(""media_id":"{0}"", content)
                            .Append("},")
                            .Append(""msgtype":"mpnews",")
                            .Append(""send_ignore_reprint":"0"");                         
                        break;
                    case WxArtcleType.Text:
                        builder.Append(""text":")
                           .Append("{")
                           .AppendFormat(""content":"{0}"", content)
                           .Append("},")
                           .Append(""msgtype":"text"");
                        break;
                    case WxArtcleType.Voice:
                        builder.Append(""voice":")
                               .Append("{")
                               .AppendFormat(""media_id":"{0}"", content)
                               .Append("},")
                               .Append(""msgtype":"voice"");
                        break;
                    case WxArtcleType.Image:
                        builder.Append(""image":")
                              .Append("{")
                              .AppendFormat(""media_id":"{0}"", content)
                              .Append("},")
                              .Append(""msgtype":"image"");
                        break;
                    case WxArtcleType.Video:
                        builder.Append(""video":")
                              .Append("{")
                              .AppendFormat(""media_id":"{0}",", content)
                              .AppendFormat(""title":"{0}",", videoTitle)
                              .AppendFormat(""description":"{0}"", videoDesc)
                              .Append("},")
                              .Append(""msgtype":"video"");
                        break;
                }
                builder.Append("}");
                NetLog.WriteTextLog("ReplayOpenids", builder.ToString(), DateTime.Now);
                var result = client.PostAsync(url, new StringContent(builder.ToString())).Result;
                return JsonHelp.ToDynamic(result.Content.ReadAsStringAsync().Result);
            }
    View Code

     还有一些这边就没有写了,如果需要可以根据官网拼接字符串进行测试。

  • 相关阅读:
    Windows系统开机硬盘自检问题解决
    更改软件默认安装路径
    windows添加开机启动项
    xp 如何打开(进行)远程桌面连接
    xp看系统位数
    教你创建一个别人打不开删不掉的文件夹(干坏事爱好者必看)
    无操作一段时间显示器无信号
    长时间用电脑,(给窗口选一个合适的颜色)设置窗口绿色
    Windows右键菜单设置与应用技巧
    Outlook如何定时发邮件
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/8567979.html
Copyright © 2011-2022 走看看