C#微信公众平台开发之高级群发接口

C#微信公众平台开发之高级群发接口

微信公众平台提供了高级群发接口,可以用于向用户发送图文消息、语音消息、音乐消息、视频消息、小程序卡片消息等。

1. 获取access_token

在使用高级群发接口时,需要先获取到有效的access_token。可以使用以下接口获取:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

其中,APPID和APPSECRET需要替换为自己的公众号appId和appSecret。

获得access_token后,需要缓存并定时刷新。微信公众平台规定每个access_token的有效期为2个小时。

2. 发送图文消息

使用高级群发接口发送图文消息,可以按照以下步骤进行:

2.1 创建图文消息素材

使用以下接口创建一个图文消息素材:

POST https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN

请求参数格式如下:

{
    "articles": [
         {
             "title": TITLE,
             "thumb_media_id": THUMB_MEDIA_ID,
             "author": AUTHOR,
             "digest": DIGEST,
             "show_cover_pic": SHOW_COVER_PIC(0 / 1),
             "content": CONTENT,
             "content_source_url": CONTENT_SOURCE_URL
         },
         //...articles
     ]
}

参数说明:

  • TITLE: 标题
  • THUMB_MEDIA_ID: 图文消息的封面图片素材id(必须先上传图文消息内的图片获取URL,见下说明)
  • AUTHOR: 作者
  • DIGEST: 描述
  • SHOW_COVER_PIC: 是否显示封面,0为false,即不显示,1为true,即显示
  • CONTENT: 正文内容
  • CONTENT_SOURCE_URL: 原文链接

返回数据格式:

{
    "media_id":MEDIA_ID
}

将返回的media_id保存下来,后续发送图文消息需要用到。

2.2 上传图文消息内的图片获取URL

在创建图文消息后,需要上传图文消息内的图片,获取URL,作为图文消息的封面图片。

以下为上传图片的接口:

POST https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

请求参数如下:

{
    "media": form-data
}

form-data 中需要包含一个字段:media,用 form-data 形式上传文件。

返回数据格式如下:

{
    "url":URL
}

将返回的URL保存下来,后续创建图文消息时需要用到。

2.3 发送图文消息

使用以下接口发送图文消息:

POST https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN

请求参数格式如下:

{
   "filter":{
      "is_to_all":false,
      "tag_id":TAG_ID
   },
   "mpnews":{
      "media_id":MEDIA_ID
   },
    "msgtype":"mpnews",
    "send_ignore_reprint":0
}

参数说明:

  • is_to_all: 是否群发给所有用户,false为否,true为是
  • tag_id: 群发目标的标签id
  • media_id: 图文消息素材的ID
  • send_ignore_reprint: 表示拒绝用户转发,0表示允许转发,1表示不允许转发(转载请注明出处)

2.4 示例

以下为C#代码示例,演示如何使用高级群发接口发送图文消息:

//获取access_token
var accessToken = GetAccessToken();

//创建图文消息素材
var articles = new List<object>
{
    new
    {
        title = "标题1",
        thumb_media_id = "THUMB_MEDIA_ID",
        author = "作者1",
        digest = "描述1",
        show_cover_pic = 0,
        content = "内容1",
        content_source_url = "https://www.example.com"
    },
    new
    {
        title = "标题2",
        thumb_media_id = "THUMB_MEDIA_ID",
        author = "作者2",
        digest = "描述2",
        show_cover_pic = 0,
        content = "内容2",
        content_source_url = "https://www.example.com"
    }
};
var result = HttpHelper.PostForObject($"https://api.weixin.qq.com/cgi-bin/material/add_news?access_token={accessToken}", new { articles });

//上传图文消息内的图片获取URL
var thumbMediaId = "THUMB_MEDIA_ID";
var thumbFilePath = @"C:\example.jpg";
result = HttpHelper.Upload($"https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={accessToken}", "media", thumbFilePath);
var thumbUrl = JObject.Parse(result)["url"].ToString();

//发送图文消息
var tagId = 2;
var mediaId = JObject.Parse(result)["media_id"].ToString();
var data = new
{
    filter = new
    {
        is_to_all = false,
        tag_id = tagId
    },
    mpnews = new
    {
        media_id = mediaId
    },
    msgtype = "mpnews",
    send_ignore_reprint = 0
};
result = HttpHelper.PostForObject($"https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={accessToken}", data);

3. 发送客服消息

使用高级群发接口发送客服消息,可以按照以下步骤进行:

3.1 发送客服消息

使用以下接口发送客服消息:

POST https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

请求参数格式如下:

{
   "touser":[
    "OPENID1",
    "OPENID2"
   ],
   "msgtype": "news",
   "news": {
       "articles": [
           {
               "title": "标题1",
               "description": "描述1",
               "url": "https://www.example.com",
               "picurl": "https://www.example.com/example.jpg"
           },
           {
               "title": "标题2",
               "description": "描述2",
               "url": "https://www.example.com",
               "picurl": "https://www.example.com/example.jpg"
           }
       ]
   }
}

参数说明:

  • touser: 接收消息的用户openid列表
  • msgtype: 消息类型,news表示图文消息
  • articles: 图文消息的内容,数组,每个元素包含title、description、url、picurl四个字段。

3.2 示例

以下为C#代码示例,演示如何使用高级群发接口发送客服消息:

//获取access_token
var accessToken = GetAccessToken();

//发送客服消息
var tousers = new List<string> { "OPENID1", "OPENID2" };
var articles = new List<object>
{
    new
    {
        title = "标题1",
        description = "描述1",
        url = "https://www.example.com",
        picurl = "https://www.example.com/example.jpg"
    },
    new
    {
        title = "标题2",
        description = "描述2",
        url = "https://www.example.com",
        picurl = "https://www.example.com/example.jpg"
    }
};
var data = new
{
    touser = tousers,
    msgtype = "news",
    news = new
    {
        articles = articles
    }
};
var result = HttpHelper.PostForObject($"https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={accessToken}", data);

参考资料

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#微信公众平台开发之高级群发接口 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C# 获取属性名的方法

    获取 C# 对象的属性名可能是我们在开发中需要经常使用到的操作。下面是获取 C# 对象属性名的两种常见方式: 通过字符串常量 我们可以通过字符串常量获取对应属性名。首先我们需要在对象中声明属性,然后使用字符串常量将属性名称与属性值绑定。下面是一个使用字符串常量获取属性名的示例代码: using System; namespace AttributeDemo …

    C# 2023年5月31日
    00
  • C# 使用modbus 读取PLC 寄存器地址的方法

    C#是一种强类型编程语言,用于开发.NET框架下的应用程序。 Modbus是一种在工业自动化领域广泛使用的通讯协议,用于在PLC和其他设备之间进行通信。在本篇文章中,我们将详细讲解C#使用Modbus读取PLC寄存器地址的方法。 准备工作 在开始之前,必须做以下准备工作: 安装.Net框架; 准备好一个Modbus通讯的PLC设备; 下载和安装一个支持Mod…

    C# 2023年5月15日
    00
  • ASP.NET Core MVC 修改视图的默认路径及其实现原理解析

    ASP.NET Core MVC 修改视图的默认路径及其实现原理解析 在ASP.NET Core MVC中,视图是用于呈现HTML内容的模板。默认情况下,视图文件存储在/Views文件夹中。但是,有时候需要将视图文件存储在不同的位置,例如在多个项目之间共享视图文件。本攻略将介绍如何修改ASP.NET Core MVC中视图的默认路径,并解析其实现原理。 步骤…

    C# 2023年5月17日
    00
  • C#生成不重复随机字符串类

    C#生成不重复随机字符串类可以通过以下几个步骤来实现: 导入命名空间:System.Security.Cryptography和System.Text。 C# using System.Security.Cryptography; using System.Text; 定义一个生成随机字符串的函数,函数可以包括一个参数,指定生成的字符串的长度。函数内部要创建…

    C# 2023年6月1日
    00
  • c#中Winform实现多线程异步更新UI(进度及状态信息)

    C#中的Winform实现多线程异步更新UI(进度及状态信息)需要遵循以下步骤: 使用BackgroundWorker控件创建异步线程 在异步线程完成工作时,使用ReportProgress方法传递进度信息 在主线程中处理进度信息并更新UI 在异步线程完成工作后,使用RunWorkerCompleted事件处理线程完成状态 下面解释一下每个步骤: 1. 使用…

    C# 2023年6月6日
    00
  • C#中的multipart/form-data提交文件和参数

    下面是一份详细讲解C#中使用multipart/form-data格式提交文件和参数的攻略。 什么是multipart/form-data格式 multipart/form-data是一种编码格式,用于将数据和文件上传到服务器。以表单的形式提交数据时,包含了文本类型的参数和文件类型的参数。其中,文本类型的参数通过键值对的方式提交,而文件类型的参数需要以二进制…

    C# 2023年6月1日
    00
  • 关于ASP.NET中TreeView用法的一个小例子

    我来详细讲解一下“关于ASP.NET中TreeView用法的一个小例子”的完整攻略。 标题 首先,我们需要明确标题。根据要求,这个攻略的标题应该是“关于ASP.NET中TreeView用法的一个小例子”,因此我们可以将其作为一级标题: # 关于ASP.NET中TreeView用法的一个小例子 描述 接下来,我们需要对这个小例子的背景和目标进行描述。因为我们需…

    C# 2023年5月31日
    00
  • C# Request.Form用法案例详解

    C# Request.Form用法案例详解 简介 Request对象是ASP.NET Web应用程序中的内置对象,用于在Web服务器上处理HTTP请求。其中,Request.Form是一个集合,用于获取HTTP POST的表单值。Request.Form的用法非常简单,可以通过指定表单控件的名称来获取该表单控件的值。 使用方法 //获取提交表单值 strin…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部