wechat_pusher : 基於Golang開發的微信訊息定時推送框架
wechat_pusher
Github
- https://github.com/hundredlee/wechat_pusher
- 歡迎star && fork && watch
- 學Golang不久,寫一個開源練練手。希望大家提提建議。謝謝
功能列表
- 訊息推送
- 模板訊息推送
- model -> message.go
- task -> template_task.go
- 圖片推送(TODO)
- 文字推送(TODO)
- 圖文推送(TODO)
- 模板訊息推送
- 日誌儲存
- 計劃任務
如何開始?
第一步:當然是go get
-
go get github.com/hundredlee/wechat_pusher.git
- 專案結構如下:
├── README.md
├── config
│ └── config.go
├── config.conf
├── config.conf.example
├── enum
│ └── task_type.go
├── glide.lock
├── glide.yaml
├── hlog
│ ├── filelog.go
│ ├── filelog_test.go
│ └── hlog.go
├── main.go
├── main.go.example
├── models
│ ├── message.go
│ └── token.go
├── redis
│ ├── redis.go
│ └── redis_test.go
├── statics
│ └── global.go
├── task
│ ├── task.go
│ └── template_task.go
├── utils
│ ├── access_token.go
│ ├── crontab.go
│ └── push.go
└── vendor
└── github.com
第二步:建立一個專案
建立配置檔案
- 專案根目錄有一個config.conf.example,重新命名為config.conf即可
- 內容如下:
[WeChat]
APPID=
SECRET=
TOKEN=
[Redis]
POOL_SIZE=
TIMEOUT=
HOST=
PASS=
DB=
[Log]
LOG_PATH=
- WeChat部分
- APPID && SECRET && TOKEN 這些是微信開發者必須瞭解的東西。不細講
- Redis部分
- POOL_SIZE 連線池大小 ,整型 int
- TIMEOUT 連線超時時間 ,整型 int
- HOST 連線的IP 字串 string
- PASS 密碼 字串 string
- DB 資料庫選擇 整型 int
-
Log部分
- LOG_PATH 日誌存放資料夾,例如值為wechat_log,那麼完整的目錄應該是 GOPATH/wechat_log
- 呼叫的時候這麼寫:
conf := config.Instance()
//例如wechat 的 appid
appId := conf.ConMap["WeChat.APPID"]
模板怎麼配置
- 以模板訊息作為例子說明:
- message.go 是模板訊息的結構
- template_task.go 是將一個模板訊息封裝成任務(template_task.go 是實現了介面task.go的)
mess := models.Message{
ToUser: "openid",
TemplateId: "templateid",
Url: "url",
Data: models.Data{
First: models.Raw{"xxx", "#173177"},
Subject: models.Raw{"xxx", "#173177"},
Sender: models.Raw{"xxx", "#173177"},
Remark: models.Raw{"xxx", "#173177"}}}
//封裝成一個任務,TemplateTask表示模板訊息任務
task := task.TemplateTask{}
task.SetTask(mess)
- 以上程式碼是模板訊息的配置,這個微信開發者應該都能看懂。
如何建立一個任務
- 例如我們要建立一個模板訊息定時推送任務
- 第一步,封裝任務
- 第二步,新增任務,並設定任務型別、併發執行的個數、失敗嘗試次數等。
- 第三步,啟動任務
- 我們用示例程式碼演示整個完整的過程
package main
import (
"github.com/hundredlee/wechat_pusher/enum"
"github.com/hundredlee/wechat_pusher/models"
"github.com/hundredlee/wechat_pusher/task"
"github.com/hundredlee/wechat_pusher/utils"
"runtime"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
var tasks []task.Task
tasks = make([]task.Task, 100)
mess := models.Message{
ToUser: "oBv9cuLU5zyI27CtzI4VhV6Xabms",
TemplateId: "UXb6s5dahNC5Zt-xQIxbLJG1BdP8mP73LGLhNXl68J8",
Url: "http://baidu.com",
Data: models.Data{
First: models.Raw{"xxx", "#173177"},
Subject: models.Raw{"xxx", "#173177"},
Sender: models.Raw{"xxx", "#173177"},
Remark: models.Raw{"xxx", "#173177"}}}
task := task.TemplateTask{}
task.SetTask(mess)
for i := 0; i < 100; i++ {
tasks[i] = &task
}
utils.NewPush(tasks).SetTaskType(enum.TASK_TYPE_TEMPLATE).SetRetries(4).SetBufferNum(10).Add("45 * * * * *")
utils.StartCron()
}
- Add方法裡面填寫的是執行的時間
- ("10 *") 表示每分鐘的第十秒鐘執行一次。
- ("@hourly") 每小時執行一次
- 具體請參照 https://github.com/robfig/cron/blob/master/doc.go
- 本推送服務的計劃任務是由 https://github.com/robfig/cron 實現的。
Run
- 很簡單,當你組裝好所有的task以後,直接執行一句話就可以了。
-
utils.NewPush(tasks).SetTaskType(enum.TASK_TYPE_TEMPLATE).SetRetries(4).SetBufferNum(10).Add("45 * * * * *")
utils.StartCron()
Contributor
- HundredLee https://github.com/hundredlee
- Cospotato https://github.com/cospotato
相關文章
- 監聽微信公眾號訊息,監聽微信訊息推送
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- .NET Core 企業微信訊息推送
- 基於workerman實現的web訊息推送站內信功能Web
- 基於THINKPHP5 多微信開發框架,讓微信開發飛起來PHP框架
- 微信小程式模板訊息還能群發?無限制推送?微信小程式
- PHP基於Redis訊息佇列實現的訊息推送的方法PHPRedis佇列
- Java微信公眾號推送模版訊息的方法示例Java
- 微信開發——同步粉絲、群發訊息
- 基於mpvue框架搭建微信小程式開發環境Vue框架微信小程式開發環境
- PHP微信開發之模板訊息回覆PHP
- 微信客服訊息時間限制
- 基於 Golang 開發的分散式定時任務管理系統Golang分散式
- 微信怎麼群發訊息?微信群發助手群發訊息圖文教程
- 基於 Hyperf 實現 RabbitMQ + WebSocket 訊息推送MQWeb
- 微信公眾號開發之客服訊息
- 小飛魚開發 做一個定時監控資料傳送微信訊息的定時任務功能(圖文)
- 基於ThinkPHP的微信開發專案-微商城PHP
- 使用WxPusher給自己的個人微信傳送提醒訊息(WxPusher微信推送服務)
- 實時訊息推送整理
- C++訊息框架-基於sigslotC++框架
- Knative 實戰:基於 Kafka 實現訊息推送Kafka
- Android 基於Netty的訊息推送方案之Hello World(一)AndroidNetty
- 基於 ChatGpt Api 開發的微信小程式ChatGPTAPI微信小程式
- 實時訊息推送方案-SSE
- PHP轉Go系列 | ThinkPHP與Gin框架之打造基於WebSocket技術的訊息推送中心PHPGo框架Web
- 基於 EasyWechat 和 Laravel notification 傳送微信小程式模板訊息Laravel微信小程式
- 微信程式開發系列教程(三)使用微信API給微信使用者發文字訊息API
- java實現 微信公眾號推送訊息 ,cv 就可執行!!!Java
- 企業微信sdk呼叫,企業微信好友收發訊息
- Android 基於Netty的訊息推送方案之概念和工作原理(二)AndroidNetty
- 微信小程式開發系列六:微信框架API的呼叫微信小程式框架API
- 微信公眾號開發(二)識別訊息型別型別
- 好訊息!微信小程式開發環境自帶vConsole微信小程式開發環境
- 使用pushplus+python實現亞馬遜到貨訊息推送微信Python亞馬遜
- 基於後端雲微信小程式開發後端微信小程式
- PHP與反ajax推送,實現的訊息實時推送功能PHP
- 微信公眾號開發推送事件排重事件
- 造輪子之訊息實時推送