使用 Senparc 群发图文消息(测试公众号暂不支持)

使用 Senparc 群发图文消息(测试公众号暂不支持)

功能说明

群发图文消息需要先构建图文素材(News),上传后获取 media_id,再通过群发接口下发。本节在原有 SendGroupMessage 方法中新增 ResponseMsgType.News 分支,实现图文消息的群发。

注意:微信公众平台测试账号不支持群发图文消息,调用时会报权限错误(如 4502848001)。以下代码需在认证服务号或认证订阅号环境下测试。

实现代码

case ResponseMsgType.News:
{
    // 1. 上传封面图片(临时素材)
    UploadTemporaryMediaResult mediaResultImage = MediaApi.UploadTemporaryMedia(
        accessToken,
        UploadMediaFileType.image,
        imgFilePath
    );

    // 2. 构建图文消息数组(最多 8 条)
    NewsModel[] newsModels = new NewsModel[5];
    for (int i = 0; i < 5; i++)
    {
        newsModels[i] = new NewsModel();
        newsModels[i].title = "标题" + i;
        newsModels[i].author = "作者";
        newsModels[i].thumb_media_id = mediaResultImage.media_id; // 封面图片 media_id
        newsModels[i].show_cover_pic = "1"; // 是否显示封面,0-不显示,1-显示
        newsModels[i].content = "<p>内容</p>"; // 图文内容,支持 HTML
        newsModels[i].content_source_url = "http://www.bamn.cn"; // 点击跳转链接
        newsModels[i].digest = "描述"; // 摘要
    }

    // 3. 上传图文素材(临时)
    var mediaResultNews = MediaApi.UploadTemporaryNews(accessToken, 10000, newsModels);

    // 4. 群发图文消息
    result = GroupMessageApi.SendGroupMessageByGroupId(
        accessToken,
        groupId.ToString(),
        mediaResultNews.media_id,
        GroupMessageType.mpnews, // 注意:图文群发类型为 mpnews
        isToAll
    );
    break;
}Code language: JavaScript (javascript)

关键点说明

  • NewsModel 属性说明:
    • title:标题,不超过 64 字节
    • author:作者,不超过 64 字节
    • thumb_media_id:封面图片的 media_id必须是临时素材或永久素材的 image 类型
    • show_cover_pic:是否显示封面,字符串 "0""1"
    • content:图文内容,支持 HTML 标签
    • content_source_url:点击”阅读原文”跳转的链接
    • digest:摘要,不填则默认从内容中提取前 54 字节
  • MediaApi.UploadTemporaryNews():上传图文素材,返回 media_id,有效期 3 天。
    • 第二个参数为 timeOut,单位毫秒,可设为 10000
  • GroupMessageType.mpnews:图文消息的群发类型枚举值,不要误用 news 或其他。
  • 图文消息一次最多包含 8 条NewsModel

常见错误与修正

问题说明修正
show_cover_pic 赋值 URL该字段应为 "0""1",不是图片地址改为 newsModels[i].show_cover_pic = "1";
使用 GroupMessageType.news图文群发正确枚举为 mpnews改为 GroupMessageType.mpnews
测试号调用测试号无群发图文权限使用认证服务号测试
封面图片用 UploadImg 返回的 URLthumb_media_id 需要的是 media_id,不是图片 URL使用 UploadTemporaryMediaUploadForeverMedia 上传图片获取 media_id

群发图文消息完整流程

  1. 准备封面图片,上传为临时素材,获取 media_id
  2. 构建 NewsModel 数组,设置标题、内容、封面等
  3. 调用 MediaApi.UploadTemporaryNews 上传图文素材
  4. 调用 GroupMessageApi.SendGroupMessageByGroupId 群发

错误码速查

错误码含义
45028没有群发配额(测试号/未认证号)
48001接口未授权(账号类型不支持)
40007media_id 不合法
45065clientmsgid exist(去重标识重复)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注