文章

GitLab 集成 Telegram

GitLab 集成 Telegram,通过机器人向群组、频道或者私人发送通知

GitLab 官方支持集成 Telegram,在项目的 Settings → Integrations 里就能找到。除了 Telegram 外,GitLab 还支持对 Slack、Discord 等软件的集成。

之前我做过通过 GitLab 的 webhook,在飞书群里发送 GitLab 通知的项目。那个项目需要先让 GitLab 把 webhook 数据发到自己服务器上,然后再格式化为飞书机器人支持的消息卡片数据,最后通过飞书机器人的 webhook 把消息发到指定的群里。

不过 GitLab 对 Telegram 的集成不需要咱们先把数据发到自己服务器上,它是可以直接发送对应软件支持的消息数据的。咱们只需要提供一下相关的配置信息即可。

根据我的尝试,目前可以在 GitLab 中配置发送通知的对象为 Telegram 的 Group、Channel 或者单个用户(比如自己)。

Telegram 的 ChannelGroup 区别

Channel 类似于微信公众号,只能创建者或者管理员发布消息,适合发布公告或者资讯。其他人可以订阅这个频道,订阅人数无上限,可以随时取消订阅离开这个 Channel。Channel 里面发布的消息,头像和发布者显示的是 Channel 的头像和名称。想要让订阅者知道这个消息具体来自于谁的话,需要在 Channel 设置里开启「Sign Messages」。

Group 类似于微信群,适合团队进行沟通讨论。具体功能就不赘述了。

前期准备

既然是要向 Telegram 发送消息,那肯定离不开机器人。创建机器人的方法很简单,搜索 BotFather,给他发送 /newbot ,然后填写机器人的 name、id 等信息就好了。创建完成后,BotFather 会告知你新机器人的 token。

随后在 GitLab 项目中的 Settings → Integrations 里找到 Telegram,创建一个 Telegram 集成并填写上面得到的 token。

Telegram bot token

给 Channel 发送通知

GitLab 官方给的集成示例就是在 Channel 里发通知。

上面提到了在 Channel 里,只能创建者或者管理员发布消息。咱们需要先把机器人拉进 Channel 里,然后将它设置为 Administrator,这样机器人才能够在 Channel 里发送消息。

然后咱们需要拿到 Channel 的 identifier。对于公开的 Channel,链接就是它的 identifier,比如 https:/t.me/MY_IDENTIFIER。对于私密的 Channel,需要利用 getUpdates 这个工具拿到 Channel 的 id(比如 -2241293890657)。

最后将 identifier 填到配置里就可以了,其他的配置比如事件触发时机等就根据个人情况设置了。

Channel Identifier

配置完成后,点击「Test settings」看看有没有成功。

给 Group 或者个人发送通知

在看到 GitLab 官方的 Telegram 集成教程只有针对 Channel 的后,我一度以为这个集成不支持对 Group 或者个人发送消息。但它是支持的。配置方法也很简单,主流程和上面配置 Channel 的一致,只不过 identifier 需要改成 Group 或者个人的。

可以通过一个叫 @getidsbot 的机器人快速获取 Group 或者个人的 identifier。把这个机器人拉进 Group 或者跟它私聊发送 /start ,它就会自动发送当前 Group 或者用户的 identifier 了。

拿到 identifier 后,将其复制到 Channel identifier 一栏即可。

本文由作者按照 CC BY-NC-SA 4.0 进行授权