go 实现零点准时传递新春祝福

简介: 实现一个零点定时推送祝福的需求其实很简单,关键点是零点定时和推送消息出去两个功能。- 零点定时推送,可以使用 corn 包实现定时任务- 推送消息,调用飞书和企业微信提供的 webhook 接口,就可以实现消息的推送

前言

新年到了,自然新春祝福也是少不了的。为了能够准时给同事和客户发出自己的零点新春祝福,以此来表达自己的真诚祝福。所以准备在使用飞书和企业微信里的 webhook 功能实现零点准时发送新春祝福语。

分析

实现一个零点定时推送祝福的需求其实很简单,关键点是零点定时和推送消息出去两个功能。

  • 零点定时推送,可以使用 corn 包实现定时任务
  • 推送消息,调用飞书和企业微信提供的 webhook 接口,就可以实现消息的推送

详细设计

定时任务

安装 cron 包,然后就可以使用它创建一个简单的调度中心。

go get -u github.com/robfig/cron/v3

创建一个简单的任务调度可以直接使用 addFunc 方法。

c := cron.New()

c.AddFunc("@every 1s", func() {
   fmt.Println("hello")
})
    c.Start()

从上面简单的源码看到,其创建了一个每秒都会输出 hello 。@every 1s就是这个定时任务的触发事件。那么再看下 cron 官网中说明,触发时间支持 cron 表达式:

# 文件格式说明
┌──秒(0 - 59)
│ ┌──分钟(0 - 59)
│ │  ┌──小时(0 - 23)
│ │  │  ┌──日(1 - 31)
│ │  │  │  ┌─月(1 - 12)
│ │  │  │  │  ┌─星期(0 - 6,表示从周日到周六,该值不是非必需的)
│ │  │  │  │  │
* *  *  *  *  * 

所以如果要在整点准时发送触发任务执行,只需设置时间表达式: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()
}

使用自己编写好的祝福语在零点时候发送出去更加能体现自己的真诚。

如果使用企业微信自己内部应用的话,使用消息推送可以专门给具体的用户发送消息,这样就可以实现对具体的同事或客户发送祝福语。详细企业微信接口地址: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
}

祝福大家新春快乐!!!

源码在马上掘金上:https://code.juejin.cn/pen/7194483912859451451

目录
相关文章
|
存储 前端开发 关系型数据库
Go 实现更换新春首页和皮肤配置
新春佳节到来了,各种 APP 的开启首页图片和皮肤样式都会发生变化,它们都将会更新成和新春有关系的图片广告或者新春相关的背景图片。当一个运营负责这项工作时,只需要开发一个可配置的功能,运营只需进行设置就可以完成新春首页替换和新年红皮肤更新。
177 0
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
环境搭建 GO+版的祝福语管理系统 前期想法 界面展示 整体界面 增加祝福信息 修改操作 删除操作 退出
我的Go+语言初体验——祝福留言小系统,让她也可以感受到你的祝福(上)
|
16天前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
70 1
|
2月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
254 1
|
8月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
8月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
2月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
296 0
|
2月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
205 0
|
2月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
169 0

热门文章

最新文章