当前位置: 首页 > 知识库问答 >
问题:

如何从GitLab管道向电报发送通知?

宋铭
2023-03-14

在我们的小型初创公司中,我们使用GitLab进行开发,使用Telegram进行开发人员和PO之间的内部沟通。由于PO希望立即看到进度,因此我们设置了GitLab Pipeline,以便在每次提交后将预览版部署在Web服务器上。现在我们想扩展管道。这样在部署后通过Telegram组发送通知。

所以问题是,这可能吗?如果可能,怎么可能?

编辑:因为我已经实现了,这不是一个真正的问题。我想把答案贴在这里,这样其他人也可以使用它。

共有2个答案

陆弘新
2023-03-14

发送通知的一种简单方法(特别是当您使用多个服务或聊天时)是使用apprise。

要发送到一个电报通道:

apprise -vv --body="Notify telegram chat" \
  tgram://bottoken/ChatID1 \

这使得您可以轻松地从管道中同时通知多个服务,而无需针对每个服务的API编写代码(apprise为您处理)。

image: python:3.9-slim # or :3.9-alpine if you prefer a smaller image
before_script:
  - pip install apprise # consider caching PIP_CACHE_DIR for performance
script: | 
  # Set a notification to multiple telegram chats, a yahoo email account, 
  # Slack, and a Kodi Server with a bit of added verbosity:
  apprise -vv --body="Notify more than one service" \
    tgram://bottoken/ChatID1/ChatID2/ChatIDN \
    mailto://user:password@yahoo.com \
    slack://token_a/token_b/token_c \
    kodi://example.com
芮祺
2023-03-14

因此,我们将一步一步地进行:

  1. 创建电报机器人

Telegram本身对此有足够好的指导:

https://core.telegram.org/bots#6-僵尸父亲

指令没有明确说明任何内容,但要生成它,您必须进入与僵尸父亲的聊天。最后,您会得到一个机器人令牌,类似于110201543: AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsee

切换到Telegram组,并将创建的机器人添加为成员(按名称查找机器人)。

在浏览器中获取机器人的更新状态:<代码>https://api.telegram.org/bot

在响应中找到聊天id:。。。“chat”:{“id”:

有关更多详细信息,请参阅:Telegram Bot-如何获取群聊id?

使用curl命令发送消息。例如,gitlab管道中的现有阶段可以为此目的进行扩展:

upload:
  stage: deploy
  image: alpine:latest
  script:
    - 'apk --no-cache add curl'
    - 'curl -X POST -H "Content-Type: application/json" -d "{\"chat_id\": \"<YourGroupID>\", \"text\": \"CI: new version was uploaded, see: https://preview.startup.com\"}" https://api.telegram.org/bot<YourBOTToken>/sendMessage '
  only:
    - main

请记住调整YourBOTTokenYourGroupID,以及消息的文本。

*)我们在这里使用alpine docker图像,因此必须安装curl——“apk——无缓存添加curl”。对于其他图像,这可能必须以不同的方式完成。

 类似资料:
  • 如何使用注册为频道管理员的机器人访问电报频道消息? 我试图从电报频道获取所有信息,并在ASP.NET网页上显示出来(c#) 当新消息直接发送到机器人时,我能够获得更新: 但它不适用于该频道。

  • 场景如下,我希望每分钟在电报通道上发送消息或通知(无需用户发送命令)。 我可以在每次输入URL并发送消息时发送消息,但我希望每分钟自动发送(不输入URL)。我不知道怎么做,提前谢谢。 注意:此聊天id必须是一个人的聊天id,而不是另一个机器人聊天id!!!**$params=['聊天室id'= 我必须输入要发送的邮件的URL。。。https://bot.unpixelmas.com/bot.php

  • 创建电报机器人并获得机器人令牌后,我想向机器人应用编程接口发送请求。 这个链接说我们必须像这样发送HTTP请求:

  • 我使用下面的代码片段通过邮件发送testng的emailable-report.html。 公共类SampleSendMail{

  • 我已经设置了一个电报网络钩子使用node.js/express: 当我获取时,我可以收到我的机器人控制台: 现在我想从机器人程序接收数据,这样当用户访问时https://telegram.me/mybot?start=xyz并按bot,bot应该在的帖子中收到 以下是我收到邮件的路线: 但当用户访问时,我发现机器人中什么也没有发生https://telegram.me/mybot?start=xy

  • 嗨,我正在尝试建立一个网站登录系统,用户可以使用电报登录。我希望实现此工作流: < li >用户选择通过电报登录/注册。 < li >用户输入他们的用户名(@ExampleJoe)。 < li >通过我的电报机器人(@ExampleBot)向他们发送6位验证码。 < li >用户将收到的6位数字代码输入到我的网站,并被允许进入。 我在步骤 2-3 中遇到了问题,我的机器人可以仅使用其用户名向他们发