Go开发接口调用飞书api实现发送群消息
之前项目都是使用qq来发送告警消息, 最近发现qq消息老是会漏发,
于是现在打算将告警替换成飞书群机器人来处理
一、前置准备
在开始实现接口调用之前,需要在 PC 端通过浏览器打开飞书开放平台 https://open.feishu.cn/ 中的「开发文档」页面,然后选择「API 文档」,并登陆开发者账号。接下来,我们需要创建自己的「应用」,并开启消息群发功能:
- 创建应用
进入开放平台首页,点击「进入控制台」,在「应用列表」中点击「创建应用」:
在创建新应用的过程中,需要输入应用的名称和描述,并选择该应用可以使用的范围。为了完成此次开发,我们需要选择「应用市场」和「通讯录」权限:
应用创建完成后,在开放平台「我的应用」列表中选择该应用,进入应用详情页。为了能够结束群发消息功能,需要在「添加权限」下添加「发送自定义机器人消息」:
- 开启消息群发功能
在「我的应用」列表中点击应用名称进入详情页,选择「应用设置」,勾选「消息」里的三个选项:
现在我们已经完成了应用的创建和消息群发功能的开启,接下来是 Go 代码的编写。
二、使用 go-curl 调用接口
在使用 Go 调用接口之前,需要在电脑(或服务器)上已经安装好了 Go 环境,并且安装 go-curl 包,用于 HTTP 请求处理:
package main
import (
"fmt"
"github.com/astaxie/beego/httplib"
)
type GroupMessage struct {
MsgType string `json:"msg_type"`
Content struct {
Text string `json:"text"`
} `json:"content"`
}
func main() {
opt := httplib.Options{}
opt.URL = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx"
opt.Method = "POST"
opt.Header = make(map[string]string)
opt.Header["Content-Type"] = "application/json"
msg := GroupMessage{
MsgType: "text",
Content: struct{ Text string }{Text: "hello, world"},
}
opt.JSONBody(msg)
ret := GroupMessage{}
if r, err := opt.DoRequest(); err != nil {
fmt.Printf("Error: %s
", err.Error())
} else {
fmt.Println("response: ", r)
}
}
代码解析: 首先定义了 GroupMessage 结构体作为请求的消息体。
然后使用 beego/httplib 包创建了发送请求的实例,填写了请求的 URL、请求方式、Http 请求头以及请求的消息体。
在发送消息前,把消息体设置为刚刚定义的 msg 变量。
进行 HTTP 请求的时候,使用 DoRequest() 方法发起实际的网络请求,并将返回的消息进行解析,存到结构体 ret 中。其中需要注意到的是,在实际生产中 URL 中的 xxxx 将会被替换成机器人的唯一标识符。
三、接口调用可能会遇到的问题
- URL 不正确:在开发过程中,URL不正确是一个常见的问题。这通常是由于复制粘贴时将地址复制成了另一个地址造成的。因此,需要对 URL 进行仔细的验证。
- 证书验证不通过:在发送 HTTPS 请求时,需要验证证书的有效性。如果我们使用了 self-signed 证书或无法验证的证书,就会遇到证书验证失败的问题。为了避免这种麻烦,可以在创建发送请求实例的时候通过 httplib.Setting(....) 方法关闭 SSL 验证:
import "github.com/astaxie/beego/httplib"
opt := httplib.Options{}
opt.Settings(httplib.BeegoUtilSetting{
InsecureSkipVerify: true,
})
这种方法的缺点是降低了安全性,因此只在开发时测试时使用。
- 编码问题:在调用接口时,json 编码是必须的,但是其中包含中文时需要特别小心,中文会造成编码问题,必须进行特殊的处理。解决方法是对内容进行处理后再发送:
msg := GroupMessage{
MsgType: "text",
Content: struct{ Text string }{Text: url.QueryEscape("你好,世界")},
}
opt.JSONBody(msg)
在构造发送请求时,我们使用了 url.QueryEscape() 对内容进行编码处理。
四、总结
在本文中,我们简要介绍了使用 Go 调用飞书 API 发送群消息的过程,并演示了开发过程中可能会遇到的问题。虽然从零开始写代码会比较困难,但飞书 API 文档非常完整,所以可以从中了解到许多有用的技巧和知识点。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhjcage
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22