首页 > 其他分享 >GO 管理微信公众号后台(wechat)

GO 管理微信公众号后台(wechat)

时间:2023-02-22 11:48:29浏览次数:42  
标签:log err 微信 server wechat 消息 GO

2023-02-22 09:57:10 星期三

目的

微信公众号后台管理,实现简单的文本接收与信息回复。

前提

  • 配置好微信服务器,并正常启动
  • 安装了 golang
  • 安装了 wechat

示例代码

演示一个接收用户向公众号发送的消息,如果消息类型是文本格式的话,就回复用户 “收到你的消息: ” 加上用户发的内容。如果用户发的是非文本消息,如图片,表情包等,则回复用户 “仅支持文本消息哦~”。

点击查看代码
package main

import (
	"fmt"
	"log"
	"net/http"

	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"
)

// 一个分词函数,输入字符串,输出

func serveWechat(rw http.ResponseWriter, req *http.Request) {
	wc := wechat.NewWechat()
	//这里本地内存保存access_token,也可选择redis,memcache或者自定cache
	memory := cache.NewMemory()
	cfg := &offConfig.Config{
		AppID:          "XXXXXXX",
		AppSecret:      "XXXXXXXXX",
		Token:          "tokenhere",
		EncodingAESKey: "QfG7Xd2utub6P1aIc276jFXiYvCPuTcrn6vv0bshe0T",
		Cache:          memory,
	}
	// 微信公众号后台接口校验
	officialAccount := wc.GetOfficialAccount(cfg)

	// 传入request和responseWriter
	server := officialAccount.GetServer(req, rw)
	//设置接收消息的处理方法
	server.SetMessageHandler(func(msg *message.MixMessage) *message.Reply {
		var info string
		log.Print(msg.MsgType)
		if msg.MsgType == "text" {
			//回复消息:演示回复用户发送的消息
			log.Print("获得用户消息:", msg.Content)
			fmt.Printf("%T\n", msg.Content)
			info = "收到你的消息: " + msg.Content
		} else {
			log.Print("仅支持文本消息哦~")
			info = "仅支持文本消息哦~"
		}
		text := message.NewText(info)
		return &message.Reply{MsgType: message.MsgTypeText, MsgData: text}
	})

	//处理消息接收以及回复
	err := server.Serve()
	if err != nil {
		log.Print(err)
		return
	}
	//发送回复的消息
	server.Send()
}

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

其中的配置项分别对应微信公众号管理页面内的配置项,如下图:
image

设想

消息接收与被动回复功能不需要微信认证即可实现。
后续可根据文本提供聊天、翻译,查图片、找段子等功能的公众号功能。

标签:log,err,微信,server,wechat,消息,GO
From: https://www.cnblogs.com/magower/p/17143809.html

相关文章

  • Django - 创建工程 和 APP 与 开发工具
    1.安装在这里使用的是Anaconda,直接使用Anaconda命令进行安装;(E:\Anaconda3)C:\Users\yuan>condainstalldjango//安装指定版本django(E:\Anaconda3)C:\Users\yuan>con......
  • go 关闭chan 广播信号
    packagemainimport( "fmt" "sync")funchello(num...int){ num[0]=18}funcmain(){ closeChan:=make(chanstruct{}) wg:=&sync.WaitGroup{} fo......
  • openapi generator(go学习)
    一.安装通过npm安装,其他安装方式请见:https://openapi-generator.tech/docs/installation/#安装脚手架npminstall@openapitools/openapi-generator-cli-g#设置使......
  • 微信公众号-chatgpt客服
    想体验的可以去微信上搜索【旅行的树】公众号,也可以扫描当前二维码体验。一、ChatGPT注册1.1短信手机号申请openai提供服务的区域,美国最好,这个解决办法是搞个FQ,或者买......
  • django解决网站CORS前后端跨域问题
    1.安装cors-headers⼯具  pipinstalldjango-cors-headers 2.安装cors-headers应⽤#注册应用INSTALLED_APPS=['django.contrib.admin','django.con......
  • golang入门(十二)并发channel
    多线程与多进程本质的区别在于,多线程的内存空间是共享的,多进程是每一个进程都会独立开辟一块内存空间。如果我们运行的多个任务是完全独立的,那么在资源足够的情况下并发还是......
  • 03-Go数组、切片、可变长参数、maps
    1数组#1数组是类似于数字、字符串、的基础数据类型#2数组是同一类型元素的集合eg:整数集合:5,8,9,79,76形成一个数组Go--数组:不允许混合不同类型......
  • Go 中的反射 reflect 介绍和基本使用
    一、什么是反射在计算机科学中,反射(英语:reflection)是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候......
  • 基于Vue项目+django写一个登录的页面
    基于Vue项目+django写一个登录的页面前端借用了一下vue项目模板的AboutView.vue页面组件<template><divclass="about"><h1>登录功能</h1><p>输入用户名......
  • Django学习笔记记录(整理了B站武老师的讲课课件,供大家学习)
    day1、初识DjangoPython知识点:函数、面向对象。前端开发:HTML、CSS、JavaScript、jQuery、BootStrap。MySQL数据库。Python的Web框架:Flask,自身短小精悍+第三方组......