GitLab 集成 Telegram
GitLab 官方支持集成 Telegram,在项目的 Settings → Integrations 里就能找到。除了 Telegram 外,GitLab 还支持对 Slack、Discord 等软件的集成。
之前我做过通过 GitLab 的 webhook,在飞书群里发送 GitLab 通知的项目。那个项目需要先让 GitLab 把 webhook 数据发到自己服务器上,然后再格式化为飞书机器人支持的消息卡片数据,最后通过飞书机器人的 webhook 把消息发到指定的群里。
不过 GitLab 对 Telegram 的集成不需要咱们先把数据发到自己服务器上,它是可以直接发送对应软件支持的消息数据的。咱们只需要提供一下相关的配置信息即可。
根据我的尝试,目前可以在 GitLab 中配置发送通知的对象为 Telegram 的 Group、Channel 或者单个用户(比如自己)。
Telegram 的 Channel 和 Group 区别
Channel 类似于微信公众号,只能创建者或者管理员发布消息,适合发布公告或者资讯。其他人可以订阅这个频道,订阅人数无上限,可以随时取消订阅离开这个 Channel。Channel 里面发布的消息,头像和发布者显示的是 Channel 的头像和名称。想要让订阅者知道这个消息具体来自于谁的话,需要在 Channel 设置里开启「Sign Messages」。
Group 类似于微信群,适合团队进行沟通讨论。具体功能就不赘述了。
前期准备
既然是要向 Telegram 发送消息,那肯定离不开机器人。创建机器人的方法很简单,搜索 BotFather,给他发送 /newbot
,然后填写机器人的 name、id 等信息就好了。创建完成后,BotFather 会告知你新机器人的 token。
随后在 GitLab 项目中的 Settings → Integrations 里找到 Telegram,创建一个 Telegram 集成并填写上面得到的 token。
给 Channel 发送通知
GitLab 官方给的集成示例就是在 Channel 里发通知。
上面提到了在 Channel 里,只能创建者或者管理员发布消息。咱们需要先把机器人拉进 Channel 里,然后将它设置为 Administrator,这样机器人才能够在 Channel 里发送消息。
然后咱们需要拿到 Channel 的 identifier。对于公开的 Channel,链接就是它的 identifier,比如 https:/t.me/MY_IDENTIFIER
。对于私密的 Channel,需要利用 getUpdates 这个工具拿到 Channel 的 id(比如 -2241293890657
)。
最后将 identifier 填到配置里就可以了,其他的配置比如事件触发时机等就根据个人情况设置了。
配置完成后,点击「Test settings」看看有没有成功。
给 Group 或者个人发送通知
在看到 GitLab 官方的 Telegram 集成教程只有针对 Channel 的后,我一度以为这个集成不支持对 Group 或者个人发送消息。但它是支持的。配置方法也很简单,主流程和上面配置 Channel 的一致,只不过 identifier 需要改成 Group 或者个人的。
可以通过一个叫 @getidsbot 的机器人快速获取 Group 或者个人的 identifier。把这个机器人拉进 Group 或者跟它私聊发送 /start
,它就会自动发送当前 Group 或者用户的 identifier 了。
拿到 identifier 后,将其复制到 Channel identifier 一栏即可。