缘由
这几天偶然看到一府博客的 飞书自动化流程——友链申请方式优化 这篇文章,他采用了飞书的多维表格来实现友链的自动化,试了试,感觉确实不错,顺便把他没写完的 API
部分也补充下吧。
大致流程
相比于目前的传统模式,如 发表评论
➡ 等待审核
➡ 手动添加
➡ 更新站点
,整个过程太过于繁琐( 当然我这也没几个友链,倒是问题不大 🤣 ),而如果使用飞书的自动化,那么就变成了 用户填写表单
➡ 触发自动化流程
➡ 管理员审核
➡ 页面自动更新
,这样的话仅仅只需管理员审核一次即可,极大的简化了流程。目前唯一的问题就是,飞书的自动化流程是有限额的,基础版的次数为 200 次 / 月 ,可能会不够用,这个问题暂时还无法解决,不过按照申请流程来说,一次完整的流程仅会占用 2 次,暂时应该是够用的。当然还有一种方法,就是使用飞书个人版,个人版目前的次数为 5000 次 / 月,足够使用,就是 没办法向填写表单的用户发送邮件。
实现流程
其实准备过程是十分繁琐的,尤其是你还没有飞书的账号的话。
注册企业账号
首先,你需要注册一个飞书企业账号,注册过程非常简单,只需要填写一些基本信息即可。这一步不是必须的,但是正如上文所说,如果你想使用飞书的邮件发送功能的话,就必须要先注册一个企业账号并开通邮箱功能。
新建问卷
账号准备就绪后,就可以 新建问卷 了,问卷内容不在此阐述,可根据自己的需求填写,填写完成后,可在右上角的设置中配置一下匿名和填写次数:
在配置好问卷后,会自动跳转至一个查询页,你可以再次配置下,以便于用户查询友链状态和信息:
配置自动化流程
接下来就是最重要的环节了,在表单管理界面点击右上角的自动化按钮来配置自动化流程,这里先以我的问卷为例,配置如下:
新增友情链接
在左侧设置如下条件:添加新记录时
,并且新记录被添加时同时满足以下条件:您的邮箱
:不为空
。
在右侧执行操作处添加 发送飞书消息
以及 发送飞书邮件
和 修改记录
这三个操作:
具体配置过程中的内容部分几乎都可以使用输入框右上角的加号来引入多维表格中的变量值,这样能让发送的邮件内容更加完善:
这样配置完成后,当用户新增了表单后,申请的用户将能够收到一封邮件,内容如下:
同时你也能在飞书客户端收到这样一则消息:
添加友情链接
就是把新申请的友链审核通过的意思,这一步也不难,配置如下:
首先就是在表单中添加几个按钮类型的列,分别设置为 添加友链
以及 撤下友链
随后在自动化配置中新增 添加友链
操作,具体配置和上一步大同小异:
配置完成后,点击 添加友链
按钮,友链的状态就会变为 已添加
,并且申请的用户会收到一封邮件通知:
博客同步更新
WARNING
接下来的操作略显复杂,请做好心理准备
由于一府大佬使用的是动态博客 Halo
,能够更为方便的实现自动更新,但是我的博客使用的是纯静态,只能从 API
接口着手考虑,好在飞书也提供了相应的接口,下面我来说说如何实现:
新建应用
由于飞书的所有接口都需要身份认证,就是需要传入 tenant_access_token
或 user_access_token
,所以需要注册一个应用,并获取这个应用的 App ID
和 App Secret
。
准备所需数据
应用新建完成并成功开通权限后,就需要获取调用相关接口所需的 tenant_access_token
的值了,这里需要用到飞书提供的 自建应用获取 tenant_access_token 接口:
POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
传入 App ID
和 App Secret
后,即可取得 tenant_access_token
:
{
"code": 0,
"msg": "ok",
"tenant_access_token": "你的 tenant_access_token",
"expire": 7200
}
其中,这个接口返回的 expire
值即为 tenant_access_token
的有效时间,过期需重新获取,你可以适当的将其保存下来。
获取表单数据
获取表单数据,需要用到飞书提供的 获取多维表格记录 接口:
POST https://open.feishu.cn/open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/search
其中,需要两个重要的参数:app_token
和 table_id
,这两个参数都可在表单管理页面获取。前往表单管理页面,地址栏中的值即为所需的值:
获取到全部所需参数就可以开始获取表单数据了,具体传入什么请求参数可以去看官方的文档,还是挺多的,这里就不再细说了。
由于获取这个数据涉及到两个接口,于是我就写了个脚本:获取飞书多维表格数据
这个脚本在完成请求后,会将数据进行处理,最终返回出这样的数据,便于在友链页进行调用:
{
"code": 0,
"has_more": false,
"msg": "success",
"from_cache": true,
"timestamp": 1716282543,
"data": [
{
"id": "20240521000007",
"name": "無名小栈",
"icon": "https://pic.efefee.cn/uploads/2024/02/02/65bc526a940e3.png",
"desc": "分享技术与科技生活",
"type": "技术类",
"url": "https://blog.imsyy.top/",
"rss": "https://blog.imsyy.top/rss.xml",
"timestamp": 1716282392000
},
// ...
]
}
在拿到这些数据后,你就可以在友链页面渲染出友链信息了,大功告成!
下班收工
先就这样,等日后次数不足了或者发现了能替代这一套流程的软件了再说 ~