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日

相关文章

  • 从零开始学习jQuery (十) jQueryUI常用功能实战

    本篇文章主题是“从零开始学习jQuery (十) jQueryUI常用功能实战”,主要涉及jQueryUI常用组件实现的教程和示例。下面将对文章内容进行详细讲解。 一、jQueryUI介绍 本文主要介绍jQueryUI,它是一个基于jQuery的UI插件库,提供了多种常用UI组件,用于构建各种Web应用程序。常用的组件包括但不限于:对话框(dialog)、日…

    C# 2023年5月31日
    00
  • 详析C#的协变和逆变

    详析C#的协变和逆变 在C#中,协变和逆变是非常重要的概念,尤其是在泛型的使用中更是如此。本文将详细讲解C#的协变和逆变。 协变 协变是一种安全的类型转换,从一个更特殊的类型转换为一个更一般的类型,也就是说,从子类型转换为父类型。在C#中,协变只支持泛型接口或泛型委托。使用out关键字可以指示泛型类型参数是协变的。以下代码示例展示了协变的用法: interf…

    C# 2023年5月15日
    00
  • C# 字符串、数组和List的截取和转换实例

    我们来讲解一下“C# 字符串、数组和List的截取和转换实例”的完整攻略。 字符串的截取 在C#中,我们使用 Substring() 方法来截取字符串中的一部分。这个方法需要两个参数:截取的起始点索引和截取的字符个数。具体使用方法如下: string str = "Hello, world!"; string subStr1 = str.…

    C# 2023年6月1日
    00
  • C# 连接Access数据时总报找不到dbo.mdb的问题

    C#连接Access数据库时,有时会出现找不到dbo.mdb的问题,这一般是因为缺少连接字符串或者连接字符串格式不正确所引起的。下面详细讲解如何解决这一问题。 1. 确认连接字符串格式正确 在C#中连接Access数据时,一般需要使用到连接字符串。连接字符串是一个包含数据库连接信息的字符串,包括数据库类型、服务器地址、用户名、密码等信息。确认连接字符串格式正…

    C# 2023年5月31日
    00
  • C# Volatile的具体使用

    关于C#中Volatile的具体使用,我先介绍一下Volatile的作用和用途。Volatile是C#中用来保证多线程并发访问共享变量时线程安全的一种机制。当一个变量被声明为Volatile类型后,就可以保证多个线程并发访问这个变量时,数据不会出现意外的错误(比如数据不一致、数据丢失等)。 Volatile变量的特点是每次访问都是直接从内存中读取或写入变量的…

    C# 2023年5月15日
    00
  • C# List介绍及具体用法

    C# List介绍及具体用法 List是什么? List是C#语言中的一种基本的集合类型,位于System.Collections.Generic命名空间下。 List是一种动态数组,与普通数组相比,List可以进行动态扩容,并且可以存储任意类型的数据。List提供了一系列操作元素的方法,例如添加、删除、排序等,是C#中常用的集合类型之一。 List的创建与…

    C# 2023年6月1日
    00
  • c# WPF中如何自定义MarkupExtension

    首先,需要了解什么是MarkupExtension。在C# WPF开发中,MarkupExtension是一种特殊的对象,可以用于扩展XAML标记语言,以实现更为灵活的UI布局和自定义功能。 在C# WPF中,自定义MarkupExtension的步骤如下: 创建类并继承自MarkupExtension类。 public class MyExtension …

    C# 2023年6月6日
    00
  • C#中的位操作小结

    让我来给您详细讲解“C#中的位操作小结”的完整攻略。 一、概述 C#中的位操作是指可以直接打开和操纵整数的各个位的操作,它是一种非常高效和灵活的算法。在C#中,位操作可以方便地完成各种数据的处理和转换,如颜色值、文件属性、位图、掩码等等。 二、位操作运算符 C#中常用的位操作运算符有以下几种: & 按位与:将两个操作数对应的位进行与操作,结果为1的位…

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