WeChat 公式アカウント テンプレート メッセージ ソース コードの実装、プッシュ時間を送信するサービス アカウント グループの数の制限を突破

公式アカウントサービスのアカウントは月に4回までしか記事を送信・プッシュできませんが、テンプレートメッセージを利用して公式アカウントのファン向けに情報をプッシュすることができます

以下は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にアクセスして、私のカスタマー サービス システムを理解し、テストしてください。

おすすめ

転載: blog.csdn.net/taoshihan/article/details/131990631