這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
wechat_pusher
Github
功能列表
訊息推送
模板訊息推送
model -> message.go
task -> template_task.go
圖片推送(TODO)
文字推送(TODO)
圖文推送(TODO)
日誌儲存
計劃任務
如何開始?
第一步:當然是go get
├── 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
第二步:建立一個項目
建立設定檔
[WeChat]APPID=SECRET=TOKEN=[Redis]POOL_SIZE=TIMEOUT=HOST=PASS=DB=[Log]LOG_PATH=
WeChat部分
Redis部分
POOL_SIZE 串連池大小 ,整型 int
TIMEOUT 連線逾時時間 ,整型 int
HOST 串連的IP 字串 string
PASS 密碼 字串 string
DB 資料庫選擇 整型 int
Log部分
調用的時候這麼寫:
conf := config.Instance()//例如wechat 的 appidappId := conf.ConMap["WeChat.APPID"]
模板怎麼配置
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 mainimport ( "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(&utils.Push{ Tasks:tasks, TaskType:enum.TASK_TYPE_TEMPLATE, Retries:4, BufferNum:10, }).Add("45 * * * * *") utils.StartCron()}
Run
utils.NewPush(&utils.Push{ Tasks:tasks, TaskType:enum.TASK_TYPE_TEMPLATE, Retries:4, BufferNum:10, }).Add("45 * * * * *") utils.StartCron()