首页 > 编程语言 >微信公众号模板消息源码实现,打破服务号群发推送次数限制

微信公众号模板消息源码实现,打破服务号群发推送次数限制

时间:2023-07-28 12:55:15浏览次数:58  
标签:string 微信 value 源码 wechat key com 模板 群发

公众号服务号每个月只能群发推送四次文章,我们可以使用模板消息为公众号粉丝推送信息

下面是使用golang实现的模板消息发送类库封装,轻松实现模板消息发送

wechat.go

package lib

import (
    "github.com/silenceper/wechat/v2"
    "github.com/silenceper/wechat/v2/cache"
    "github.com/silenceper/wechat/v2/officialaccount"
    offConfig "github.com/silenceper/wechat/v2/officialaccount/config"
    "github.com/silenceper/wechat/v2/officialaccount/message"
    "log"
)

type WechatOffical struct {
    AppId, AppSecret, Token string
    OfficialAccount         *officialaccount.OfficialAccount
}

func NewWechatOffical(appId, appSecret, token string, memory cache.Cache) *WechatOffical {
    obj := &WechatOffical{
        AppId:     appId,
        AppSecret: appSecret,
        Token:     token,
    }
    wc := wechat.NewWechat()
    //这里本地内存保存access_token,也可选择redis,memcache或者自定cache

    cfg := &offConfig.Config{
        AppID:     appId,
        AppSecret: appSecret,
        Token:     token,
        //EncodingAESKey: "xxxx",
        Cache: memory,
    }
    obj.OfficialAccount = wc.GetOfficialAccount(cfg)
    return obj
}

/*
发送模板消息
    messages := []map[string]string{
        {"key": "thing4", "value": "我想购买客服系统"},
        {"key": "thing13", "value": "老狼"},
        {"key": "time14", "value": "2023-07-27 10:10:10"},
    }
    offical.SendTemplateMessage(
        []string{"openid"},
        "模板ID",
        "跳转地址",
        messages,
    )
*/
func (this *WechatOffical) SendTemplateMessage(openids []string, templateId, url string, messages []map[string]string) {
    template := this.OfficialAccount.GetTemplate()
    msgData := make(map[string]*message.TemplateDataItem)
    for _, item := range messages {
        msgData[item["key"]] = &message.TemplateDataItem{
            Value: item["value"],
        }
    }
    for _, openid := range openids {
        msg := &message.TemplateMessage{
            ToUser:     openid,
            Data:       msgData,
            TemplateID: templateId,
            URL:        url,
        }
        msgId, err := template.Send(msg)
        if err != nil {
            log.Println(err, msgId)
        }
    }

}

我们的使用方式

package lib

import (
    "github.com/silenceper/wechat/v2/cache"
    "testing"
)

func TestWechatOffical_SendTemplateMessage(t *testing.T) {
    memory := cache.NewMemory()
    offical := NewWechatOffical("xxx", "xxxxx", "xxxx", memory)
    messages := []map[string]string{
        {"key": "thing4", "value": "我想购买客服系统"},
        {"key": "thing13", "value": "老狼"},
        {"key": "time14", "value": "2023-07-27 10:10:10"},
    }
    offical.SendTemplateMessage(
        []string{"xxxx"},
        "xxxxxxxx",
        "https://gofly.v1kf.com",
        messages,
    )
}

推送的效果如图所示,点击模板就能跳转到我们自定义的url上

我在自己客服系统中也是使用这种方式为客服进行消息提醒的,客服收到提醒后,点击就能回复访客消息,非常方便

有需要的朋友可以访问 gofly.v1kf.com ,了解测试我的客服系统

 

标签:string,微信,value,源码,wechat,key,com,模板,群发
From: https://www.cnblogs.com/taoshihan/p/17587305.html

相关文章

  • HashMap底层源码
    HashMap底层原理实现1.HashMap初始化jdk1.8版本之后:数组+链表+红黑树实现,先去观看HashMap的构造方法:构造方法:publicHashMap(){this.loadFactor=DEFAULT_LOAD_FACTOR;//allotherfieldsdefaulted}publicHashMap(intinitialCapacity){th......
  • zabbixn 源码中 ui / frontends 文件夹下的代码文件负责的是哪方面的职责
    ui/frontends代码的职责通过下载源码查看,可以看到在zabbix-4.X中前端代码在frontends目录下,zabbix-6.X在ui目录下,虽然换了个马甲,但里面都是一些php文件。在Zabbix源码中,ui/frontends文件夹下的代码文件负责处理与用户界面(UI)相关的职责。这些文件包含了Zabbix前端......
  • 直播平台源码开发提高直播质量的关键:视频编码和解码技术
         在互联网日益发展的今天,直播平台成为人们互联网生活的主力军,直播平台功能的多样化与智能化使我们的生活有了极大地改变,比如短视频功能,它让我们既可以随时随地去发布自己所拍摄到的东西让世界各地的用户看到,也能让我们能看到世界各地所发生的事情;再就是最重要的直播......
  • 如何对接微信公众号模板消息
    微信公众号的模板消息进行了更新,与之前比有了不少的变化,以前的一些类目也没有了,历史模板还是可以继续使用的,下面是新版模板消息的使用步骤选择服务类目前往【广告与服务】【模板消息】【模板库】【类目模板库】点击服务类目的详情,选择一个自己的服务类目比如我选择的是:商业服务......
  • uni-app写微信小程序,data字段循环引用
    在写程序过程中,需要使用到globalData里的内容,而这个全局变量,在uni-app上需要通过:varapp=getApp();app.globalData.xxx=xxx来使用。我觉得每次都要获取app对象,嫌麻烦,就在data数据段里定义一个app字段,之后就通过this.app.globalData来使用,问题就出现在这。我用hbuilderX运行......
  • ThreadPoolExecutor源码分析
    packagejava.util.concurrent;importjava.util.concurrent.locks.*;importjava.util.*;publicclassThreadPoolExecutorextendsAbstractExecutorService{/***runStateprovidesthemainlifecylecontrol,takingonvalues:**......
  • 智慧工地源码
    产品介绍本智慧工地管理系统2018年上线以来,历时几年时间的迭代更新,经过多个管理项目的实战,落地施工项目200+个。人员车辆管理系统:可对接人脸考勤设备,协助对接住建平台;车辆管理可接入车牌识别设备机械设备管理:对设备的综合管理,包括门禁、车牌识别、监控、塔吊、升降机、用水、用电、......
  • github源码python如何运行
    如何运行GitHub上的Python源码项目问题描述GitHub上有很多优秀的Python源码项目,但是对于一些新手来说,如何正确地运行这些项目可能会成为一个问题。因此,本文将提供一份解决方案,以帮助新手顺利地运行GitHub上的Python源码项目。解决方案步骤1:克隆项目首先,在GitHub......
  • 直播商城源码,js判断上传图片格式类型、尺寸大小
    直播商城源码,js判断上传图片格式类型、尺寸大小//判断图片类型varf=document.getElementById("File1").value;if(f==""){ alert("请上传图片");returnfalse;}else{if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){alert("图片类型必须是.gif,jpeg,jpg,png中的一种")retu......
  • 在线直播系统源码,使用Thumbnailator实现图片压缩
    在线直播系统源码,使用Thumbnailator实现图片压缩1.添加jar包 <!--Thumbnailator图片压缩--><dependency>  <groupId>net.coobird</groupId>  <artifactId>thumbnailator</artifactId>  <version>0.4.8</version></dependency> ​......