wechat_pusher - 基于 Golang 开发的微信消息定时推送框架

2017-06-15 17:17:06 +08:00
 hundredlee2017

wechat_pusher

Github

功能列表

如何开始?

第一步:当然是 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=


conf := config.Instance()
//例如 wechat 的 appid
appId := 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 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(&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()

772 次点击
所在节点    Go 编程语言
2 条回复
chenqh
2017-06-15 19:55:30 +08:00
什么协议 图片推送能做到吗
quella
2017-07-04 20:27:19 +08:00
@chenqh 看配置这个是没有使用协议的, 用到了 APPID、SECRET,微信公众平台。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/368663

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX