• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用go开发公众号之 关注公众号发送小程序卡片

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 首先准备工作
    •   先准备好公众号和小程序,并且将小程序关联公众号

       同时需要把服务部署的ip添加到公众号后台白名单里面。要不获取accesstoken会报错

       

    • 准备一张小程序的缩略图 

      //使用 https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=yourtoken&type=thumb
      接口进行缩略图进行上传 //这里我是通过postman进行上传的  //获取asstoken 可能会报白名单的问题 ,需要把你获取token的ip 添加到公众号白名单。
      记录下返回的thumb_media_id(media_id)

       

    • 使用 "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s" 接口进行发送客户服务消息
          card := MiniprogramCard{
                      Touser: reflect.ValueOf(server.RequestMsg.FromUserName).String(), //需要发送的用户
                      //miniprogrampage
                      Msgtype: "miniprogrampage",
                      Miniprogrampage: MiniProgramPage{
                          Title:          "title",
                          Appid:          "", //微信小程序appid
                          PagePath:       "pages/index/index",  //微信小程序页面地址
                          ThumbMediaId: "A9WJuZt1K57Vs1AQAPmx3JG_G7IGzBS_2sx_WpNSGvU"}, //小程序卡片图片的媒体ID
                  }

      下面是具体实现的代码

      
      
      package main

      import (
      "fmt"
      wechat "github.com/silenceper/wechat/v2"
      "github.com/silenceper/wechat/v2/cache"
      offConfig "github.com/silenceper/wechat/v2/officialaccount/config"
      "github.com/silenceper/wechat/v2/officialaccount/message"
      "net/http"
      "reflect"
      )

      func serveWechat(rw http.ResponseWriter, req *http.Request) {
      wc := wechat.NewWechat()
      //这里本地内存保存access_token,也可选择redis memcache 或者自定cache
      memory := cache.NewMemory()
      cfg := &offConfig.Config{
      AppID: "",
      AppSecret: "",
      Token: "",
      EncodingAESKey: "",
      Cache: memory,
      }
      officialAccount := wc.GetOfficialAccount(cfg)

      // 传入request和responseWriter
      server := officialAccount.GetServer(req, rw)
      //设置接收消息的处理方法
      server.SetMessageHandler(func(mixMessage *message.MixMessage) *message.Reply {
      //TODO
      //回复消息:演示回复用户发送的消息
      switch mixMessage.MsgType {
      //自动回复消息
      case message.MsgTypeText:
      text := message.NewText(mixMessage.Content)
      return &message.Reply{MsgType: message.MsgTypeText, MsgData: text}
      }
      switch mixMessage.Event {
      //如果是初次订阅回复图文消息
      case message.EventSubscribe:
      //获取token
      miniprogrampagemessage := message.NewCustomerMiniprogrampageMessage(reflect.ValueOf(server.RequestMsg.FromUserName).String(),"title","appId","pages/index/index","缩略图id")
      officialAccount.GetCustomerMessageManager().Send(miniprogrampagemessage)
      return &message.Reply{MsgType: message.MsgTypeMiniprogrampage, MsgData: miniprogrampagemessage}
      //根据token 发送客服消息

      }
      text := message.NewText(mixMessage.Content)

      return &message.Reply{MsgType: message.MsgTypeText, MsgData: text}
      })
      //处理消息接收以及回复
      err := server.Serve()
      if err != nil {
      fmt.Println(err)
      return
      }
      //发送回复的消息
      server.Send()
      }

      func main() {
      http.HandleFunc("/", serveWechat)
      fmt.Println("wechat server listener at", ":8001")
      err := http.ListenAndServe(":8001", nil)
      if err != nil {
      fmt.Printf("start server error , err=%v", err)
      }
      }
       

       tips:另外如果没有线上环境域名 ,可以在花生壳买一个域名,然后把域名代理到本地的一个端口。这样就能在本地断点微信公众号那边发送过来的消息了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Go]浅谈gorm执行AutoMigrate的两种时机发布时间:2022-07-10
下一篇:
教你领取4只莱茨狗_百度区块链游戏项目Let‘s go发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap