前言
新年到了,自然新春祝福也是少不了的。为了能够准时给同事和客户发出自己的零点新春祝福,以此来表达自己的真诚祝福。所以准备在使用飞书和企业微信里的 webhook 功能实现零点准时发送新春祝福语。
分析
实现一个零点定时推送祝福的需求其实很简单,关键点是零点定时和推送消息出去两个功能。
- 零点定时推送,可以使用 corn 包实现定时任务
- 推送消息,调用飞书和企业微信提供的 webhook 接口,就可以实现消息的推送
详细设计
定时任务
安装 cron 包,然后就可以使用它创建一个简单的调度中心。
go get -u github.com/robfig/cron/v3
AI 代码解读
创建一个简单的任务调度可以直接使用 addFunc 方法。
c := cron.New()
c.AddFunc("@every 1s", func() {
fmt.Println("hello")
})
c.Start()
AI 代码解读
从上面简单的源码看到,其创建了一个每秒都会输出 hello 。@every 1s
就是这个定时任务的触发事件。那么再看下 cron 官网中说明,触发时间支持 cron 表达式:
# 文件格式说明
┌──秒(0 - 59)
│ ┌──分钟(0 - 59)
│ │ ┌──小时(0 - 23)
│ │ │ ┌──日(1 - 31)
│ │ │ │ ┌─月(1 - 12)
│ │ │ │ │ ┌─星期(0 - 6,表示从周日到周六,该值不是非必需的)
│ │ │ │ │ │
* * * * * *
AI 代码解读
所以如果要在整点准时发送触发任务执行,只需设置时间表达式:0 0 0 22 1 *
。这样就可以在零点时间准时出发定时任务然后执行具体消息推送的功能。
消息推送
消息推送也是个比较简单的功能,就是通过http 请求hook 的地址发送消息。其中祝福语就可以自己编写好。
func sendMsg(apiUrl, msg string) {
contentType := "application/json"
sendData := `{
"msg_type": "text",
"content": {"text": "` + "六号积极分子的祝福:" + msg + `"}
}`
result, err := http.Post(apiUrl, contentType, strings.NewReader(sendData))
if err != nil {
fmt.Printf("post failed, err:%v\n", err)
return
}
defer result.Body.Close()
}
AI 代码解读
使用自己编写好的祝福语在零点时候发送出去更加能体现自己的真诚。
如果使用企业微信自己内部应用的话,使用消息推送可以专门给具体的用户发送消息,这样就可以实现对具体的同事或客户发送祝福语。详细企业微信接口地址:https://developer.work.weixin.qq.com/document/path/90236#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF
请求方式:POST(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
文本消息:
{
"touser" : "UserID1|UserID2|UserID3",
"toparty" : "PartyID1|PartyID2",
"totag" : "TagID1 | TagID2",
"msgtype" : "text",
"agentid" : 1,
"text" : {
"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href="http://work.weixin.qq.com">邮件中心视频实况</a>,聪明避开排队。"
},
"safe":0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}
AI 代码解读
祝福大家新春快乐!!!