微信发送图文消息,查看图文media_id

前言

微信PC后台群发送服务号的通知消息会消耗发送次数,每月4次;这里想通过微信API发送。
注:本文只需要使用CURL工具即可全部完成

比较微信后台微信API
富文本美观,不限字数,排版整齐使用图片替代大文本,可以写少量文字,需要HTML格式,且不能大于2W字符
发送次数无论怎么群发,只有4次每个openid四次
操作简单,方便熟练后也可达到操作方便

实现目标
查看发送后效果&广东人保(手机微信打开效果更好)
在这里插入图片描述

准备

登录微信测试

打开这三个链接
微信公众平台接口测试帐号申请
微信官方开发文档
微信开发-错误码大全

1、获取access_token

测试账号里边都有参数,获取后时效2H

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

在这里插入图片描述

2、上传封面

这里看你发图文消息需要新增永久素材,首先上传封面主图,然后上传你点击图文通知后的页面中所需要的图片(也就是你点击封面跳转的主页,用图片可以解决内容限制问题)

https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE
http请求方式: POST,需使用https https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE 
调用示例(使用curl命令,用FORM表单方式新增一个其他类型的永久素材,curl命令的使用请自行查阅资料)

在这里插入图片描述

2.1 返回值

 {"media_id":"JhEacS4lHSZQWtj5CO01-g-SPRIwcR9O0MbUl_yC6mQ",
 "url":"http:\/\/mmbiz.qpic.cn\/mmbiz_png\/xGfbYHhGLIaeUpoYUJ1PEoJ4LeUtxkias9lK331qhl6J8zbycVVbQyx4DCODLbAibTafXkBSlga8hPBVHwnkKMVw\/0?wx_fmt=png",
 "item":[]}

我们需要的封面图片的永久素材链接就拿到了,第一张图片做封面,其他图片作为图文内容

3、上传图文消息素材【订阅号与服务号认证后均可用】

3.1 上传素材模板

https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
http请求方式: POST,https协议 https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
{
   "articles": [	 
        {
            "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
            "author":"xxx",		
            "title":"Happy Day",		 
            "content_source_url":"www.qq.com",		
            "content":"content",		 
            "digest":"digest",
            "show_cover_pic":1,
            "need_open_comment":1,
            "only_fans_can_comment":1
        },	 
        {
            "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
            "author":"xxx",		
            "title":"Happy Day",		 
            "content_source_url":"www.qq.com",		
            "content":"content",		 
            "digest":"digest",
            "show_cover_pic":0,
            "need_open_comment":1,
            "only_fans_can_comment":1
        }
   ]
}

在这里插入图片描述

3.2 举例

多图文就上传多个,我做的单图文,就上传了一个,内容写其他图片的链接,写HTML,注意不要引入外部链接,需要的是微信自己的永久链接,包括content内引入

{
    "articles": [
        {
     "title": "倒计时4天!这项福利马上截止!",
    "thumb_media_id": "JhEacS4lHSZQWtj5CO01-pmMTWyiwf9dmaLNNYz7-bc",
    "author": "广东人保财险",
    "digest": "潮州市民专属",
    "show_cover_pic":0,
    "content": " <img   src='http://mmbiz.qpic.cn/mmbiz_png/xGfbYHhGLIaeUpoYUJ1PEoJ4LeUtxkias9lK331qhl6J8zbycVVbQyx4DCODLbAibTafXkBSlga8hPBVHwnkKMVw/0?wx_fmt=png'  /><br/><img   src='http://mmbiz.qpic.cn/mmbiz_jpg/ARnXGRTURlbiaibLeLOIR7GA3LzI833qFIMXKl2SMiba3EBIyldzfoic8DtFLn1gBEDubLEibJQwlWLlPmyA5db1FYg/0?wx_fmt=jpeg'  /><br/>点击阅读原文",
    "content_source_url": "https://mp.weixin.qq.com/s/PwX_aYbDWQjGSr8sHH2eZQ",
    "need_open_comment":1,
    "only_fans_can_comment":1
         }
    ]
}

3.3 返回值

需要这个media_id

{"media_id":"JhEacS4lHSZQWtj5CO01-lUmY_KyWn4ZA-jtCE-hBJA","item":[]}

4、预览接口【订阅号与服务号认证后均可用】

https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN

图文消息(其中media_id与根据分组群发中的media_id相同):
其他消息类型

{
   "touser":"OPENID", 
   "mpnews":{              
     "media_id":"123dsdajkasd231jhksad"               
    },
   "msgtype":"mpnews" 
}

在这里插入图片描述

5、接收预览

进行完第4步你就可以获取到微信通知,在你的订阅号打开就可以看了,至此实现了开篇动图效果。预览完毕调用发送接口即可群发给指定用户,标签,所有群体

6、群发

在预览界面查看点击确认无问题后,执行群发。

URL

https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

群发可以选择按照用户群发或者按照标签群发,这里推荐按照标签群发,只用调一遍接口

更多群发方式,语音,文字,视频

{
   "filter":{
      "is_to_all":false,
      "tag_id":137
   },
   "mpnews":{
      "media_id":"XCRd2iesS4v24lqvDXkusDl268USWhP4qc3pjqPNPY4"
   },
    "msgtype":"mpnews",
    "send_ignore_reprint":0
}

参数

在这里插入图片描述

返回值

这个msg_id需要用

 {
    "errcode": 0,
    "errmsg": "send job submission success",
    "msg_id": 3147494172,
    "msg_data_id": 2652648566
}

在这里插入图片描述

7、校验群发结果

URL

http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=ACCESS_TOKEN

参数

{
   "msg_id": "201053012"
}

返回值

成功发送

 {
    "msg_id": 3147494172,
    "msg_status": "SEND_SUCCESS"
}

8、删除群发

当你觉得群发出现错误时,可以选择删除群发,相当于撤回,这里笔者没有尝试,任务发送复查没问题后结束任务
删除群发【订阅号与服务号认证后均可用】

URL

https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=ACCESS_TOKEN
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=ACCESS_TOKEN

参数

{
   "msg_id":30124,
   "article_idx":2
}

在这里插入图片描述

返回值

{
   "errcode":0,
   "errmsg":"ok"
}

9、查看图文media_id

有时候通过微信后台编辑好了模板media_id,但是我们自己CURL并不知道,所以就需要API获取
获取永久素材的列表

URL

http请求方式: POST https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN

参数

{
    "type":TYPE,
    "offset":OFFSET,
    "count":COUNT
}

参考我的,offset是1就是第几条开始,类似于分页,查两条就找到最新的了,按照type来查询

{
    "type":"news",
    "offset":1,
    "count":2
}

在这里插入图片描述

返回

{
   "total_count": TOTAL_COUNT,
   "item_count": ITEM_COUNT,
   "item": [{
       "media_id": MEDIA_ID,
       "content": {
           "news_item": [{
               "title": TITLE,
               "thumb_media_id": THUMB_MEDIA_ID,
               "show_cover_pic": SHOW_COVER_PIC(0 / 1),
               "author": AUTHOR,
               "digest": DIGEST,
               "content": CONTENT,
               "url": URL,
               "content_source_url": CONTETN_SOURCE_URL
           },
           //多图文消息会在此处有多篇文章
           ]
        },
        "update_time": UPDATE_TIME
    },
    //可能有多个图文消息item结构
  ]
}

其他类型(图片、语音、视频)的返回如下:

 {
   "total_count": TOTAL_COUNT,
   "item_count": ITEM_COUNT,
   "item": [{
       "media_id": MEDIA_ID,
       "name": NAME,
       "update_time": UPDATE_TIME,
       "url":URL
   },
   //可能会有多个素材
   ]
}

在这里插入图片描述
错误情况下的返回JSON数据包示例如下(示例为无效媒体类型错误):

 {"errcode":40007,"errmsg":"invalid media_id"}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答关于Java调用企业微信上传临时素材获取media_id的问题。 首先,您需要准备好以下信息: 1. 企业微信的CorpID和Secret。 2. 上传的临时素材文件,可以是图片、音频、视频等。 3. 文件的类型,例如:image、voice、video等。 然后,您可以按照以下步骤进行操作: 1. 构造请求URL:https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE 其中,ACCESS_TOKEN是企业微信的接口调用凭证,可以通过企业微信的API获取;TYPE是上传的临时素材的类型。 2. 发送HTTP POST请求,上传临时素材文件。 3. 解析返回结果。如果上传成功,返回的JSON数据中会包含media_id字段,该字段即为上传的临时素材的media_id。 以下是一个Java调用企业微信上传临时素材获取media_id的示例代码: ``` public String uploadTempMedia(String filePath, String type, String accessToken) { String result = null; File file = new File(filePath); String url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=" + accessToken + "&type=" + type; try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Connection", "Keep-Alive"); httpPost.setHeader("Cache-Control", "no-cache"); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody("media", file, ContentType.DEFAULT_BINARY, file.getName()); HttpEntity entity = builder.build(); httpPost.setEntity(entity); CloseableHttpResponse response = httpClient.execute(httpPost); try { HttpEntity responseEntity = response.getEntity(); if (responseEntity != null) { String responseStr = EntityUtils.toString(responseEntity, "UTF-8"); JSONObject jsonObject = JSONObject.fromObject(responseStr); result = jsonObject.getString("media_id"); } } finally { response.close(); } } catch (Exception e) { e.printStackTrace(); } return result; } ``` 您只需要将filePath、type、accessToken三个参数替换成您自己的值,即可使用该方法上传临时素材并获取media_id。 希望这个回答能够帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值