基于 Microsoft PowerAutomate 构建 Telegram BOT

TL; DR

PowerAutomate 是微软附带于 Microsoft 365 中的一项功能,利用它可以完成一些原本需要服务器的操作.

官方介绍如下:

Power Automate 是一种可用于在用户最喜欢的应用和服务之间创建自动化工作流的服务,其功能包括同步文件、获取通知、收集数据等。

除了 “拼装” MS官方提供的 API 形成 Workflow, 它也可以像 webhook 一样工作.

主界面

于是乎, 因为一时的想法, 我试图使用它搭建一个 Telegram BOT , 便开始了探索.

PowerAutomate 的基本结构

简单而言, PowerAutomate 可以算这样组成:

Connection(Trigger) –> PowerAutomate –> Connection(Worker)

也就是说 Connection 这玩意有两个用途, 可以接收信息, 也用来进行操作.

众所周知, 一个完整的 Workflow 应当由很多个 Connection 构建而成, 那让我们开始尝试吧.

从 Telegram BOT API 入手

不熟悉 Telegram BOT API 怎么办, 真的要看那又臭又长的文档吗?

其实不然, 如果你的需求只是向某个用户/频道发送文本信息, 只需要简单的 GET/POST 请求就可以实现.

我们首先来尝试获取 BOT 本身的状态(即接收信息等)

在进行下面的请求前, 我向 BOT 发送了一条消息, 文本是 1

1
2
3
GET /getUpdates
Host api.telegram.org/[Your-BOT's-Key]
Content-Type: application/x-www-form-urlencoded

GetUpdates

亦或者, 你可以将上文中的 getUpdate 修改为 getMe 获取你的 BOT 的详细信息

接下来就是发送消息了, 也很简单

1
2
3
4
5
POST /sendmessage
Host api.telegram.org/(Your-BOT's-Key)
Content-Type: application/x-www-form-urlencoded

chat_id=(THE-ID-TO-RECEIVE-MESSAGE)&text=(YOUR-MESSAGE)

或者使用 GET

1
2
3
GET /sendmessage?chat_id=(THE-ID-TO-RECEIVE-MESSAGE)&text=(YOUR-MESSAGE)
Host api.telegram.org/(Your-BOT's-Key)
Content-Type: application/x-www-form-urlencoded

*请勿将括号带入!

chat_id 可以是频道/群组/用户的id

SendMessage

接入自定义 PowerAutomate Connection

PowerAutomate > 数据 > 自定义连接器 中, 选择 新的自定义连接器 > 从空白创建 , 随意起个名字, 让我们开始吧.

如果你图方便的话

打开 Swagger编辑器 ,在左侧栏中填入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
swagger: '2.0'
info: {title: Telegram, description: '', version: '1.0'}
host: api.telegram.org
basePath: /
schemes: [https]
consumes: []
produces: []
paths:
/(Your-BOT's-Key)/sendmessage:
post:
responses:
default:
description: default
schema: {}
summary: Send Message to Telegram
operationId: send-message
parameters:
- {name: chat_id, in: query, required: true, type: integer}
- {name: text, in: query, required: true, type: string}
definitions: {}
parameters: {}
responses: {}
securityDefinitions: {}
security: []
tags: []

这是我之前写的配置, 只需要修改里面的 (Your-BOT's-Key) 就可以使用了.

如果你想折腾的话

常规

常规 选项卡中像这样填写:

Common

安全性

只需要在 安全性 选项卡中选择 无身份验证 .

定义

定义 选项卡是最为重要的.

首先要创建一个 操作 , 并随便定义一个 操作ID.
然后选择 请求 中的 从示例导入 , 定义为POST请求, 并输入 https://api.telegram.org/(Your-BOT's-Key)/sendmessage?chat_id=(THE-ID-TO-RECEIVE-MESSAGE)&text=(YOUR-MESSAGE)

建议输入前先把括号里的内容补充完整, 也许有助于 PowerAutomate 进行自动的正则匹配.

然后, PowerAutomate 将会自动识别请求, 就像这样:

DEF

保存你的自定义连接器, 你也可以在 测试 选项卡中测试你的配置.

开始配置 Workflow

我将以创建一个追踪 甘城なつき 推文的 BOT 为目的介绍配置方法.

创建 Workflow

创建 选项卡中的 从空白开始 下选择 生成自动化云端流

选择流的触发器 搜索 twitter, 并进行创建

Create-Flow

编辑 Workflow

Edit-Flow

Trigger 一般都提供很多动态内容, 可以根据此来丰富发送至 Telegram 的文本内容

完成后大概是这样:

Final-Flow

在 Telegram 查看是这样:

Telegram

欢迎来频道 Nacho Tweets 围观!

尾声

PowerAutomate 很方便、很有趣, 也有强大的可自定义空间, 有 Microsoft 365 的话, 强烈建议尝试一下.

不过还是用 server 更香.

呜呜呜, blog 好难写, 快来跟ShiSheng贴贴!

基于 Microsoft PowerAutomate 构建 Telegram BOT

https://blog.shisheng.icu/2021/11/13/PowerAutomate-based-Telegram-Bot/

作者

ShiSheng

发布于

2021-11-13

更新于

2021-11-13

许可协议

评论