在工作中,通过飞书机器人推送消息的需求还是挺常见的,例如,推送监控报警、创建文档、账单确认等。在该类场景下,我们可以在群组中添加自定义机器人,自定义机器人默认提供 webhook
,通过服务端调用 webhook
地址,即可将外部系统的消息通知即时推送到群组中。自定义机器人也包含了 自定义关键词、IP 白名单 和 签名 三种维度的安全配置,便于控制 webhook
的调用范围。
在该例子中,主要实现一下通过签名的方式发送简单文本消息的飞书机器人。
ToKen
与SecretKey
的获取:飞书文档
注意Token
是https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx
后那串xxxxxxxxxxxxxxxxx
SecretKey
则在机器人 安全设置-签名校验
注:在代码中,可以将Token
和SecretKey
作为常量存起来,但是有时候为了发送到不同的群,也可以使用flag
方式通过参数传入。
package main
import (
"flag"
"fmt"
"github.com/CatchZeng/feishu/pkg/feishu"
)
const (
Token = "052f427f-3f57-455a-XXXX-XXXXXXXXX"
SecretKey = "aQkBeQyAgXXXXXXXXXX"
)
func main() {
token := flag.String("token", "", "飞书机器人webhook token")
secretKey := flag.String("secret_key", "", "飞书机器人-安全设置-签名秘钥")
flag.Parse()
client := feishu.NewClient(*token, *secretKey)
// client := feishu.NewClient(Token, SecretKey)
msg := feishu.NewTextMessage()
msg.Content.Text = "hello world!"
_, response, err := client.Send(msg)
if err != nil {
panic(any(err))
}
fmt.Println(response)
}
执行:go run main.go -token=052f427f-3f57-455a-XXXX-XXXXXXXXX" -secret_key="aQkBeQyAgXXXXXXXXXX"