赞
踩
大家好,我打算每日花1小时来写一篇文章(这篇文章实际耗时约24小时,从了解飞书机器人及相关接口、权限等开始,到调通记账助手),这一小时包括文章主题思考和实现,看看能不能被官方推荐。
今天的主题是:使用Python联动飞书文档+机器人,实现一个专属的记账助手,这篇文章如果对你帮助极大,欢迎你分享给你的朋友、她、他,一起成长。
也欢迎大家留言,说说自己想看什么主题的Python文章,留言越具体,我写的越快,比如留言:我想看Python 自动操作Excel 相关文章。
如果你有具体的需求想通过使用Python实现自动化。
1、通过关键词触发机器人记账,比如/fs 支出 微信 18 午饭
,其中/fs
为触发关键词,后面的四项分别是:类型、支付渠道、金额、备注。
2、机器人识别到关键词,调用飞书记账功能函数,在该函数中对收到内容进行解析,并调用飞书文档接口,将内容写入飞书文档。
3、机器人判断飞书文档写入结果,写入成功则返回记录成功+文档地址;写入失败则返回记录失败+错误信息。
微信效果:
飞书效果:
首先你需要登录飞书APP创建一个企业,这个过程很简单,手机下载飞书APP即可,我这里就不贴图了。
前提:你已经有了一个飞书帐号,并创建了一个个人企业。
飞书开放平台地址:open.feishu.cn/app/
访问 飞书开放平台,点击创建企业自建应用
,输入应用相关信息即可。
创建成功后,在凭证与基础信息
中可以看到应用的 App ID
和 App Secret
,后面有用。
点击左侧的添加应用能力
,点击添加机器人功能。
没添加这个后面调用会出现如下错误:
点击左侧的权限管理
,搜索电子表格
,将相关的两个权限勾选开通。
再搜索消息
,开通发送接收消息权限,如下图:
再搜索获取用户 user ID
,开通获取用户 user_id 权限,如下图:
点击确定并前往创建应用版本
。
在版本创建页面点击创建版本
,然后根据提示输入版本号、更新说明、申请理由即可。
应用管理后台:xxxxx.feishu.cn/admin/appCe…
xxxxx 改成自己的飞书主页域名前缀
访问上面应用管理后台地址,审核通过即可。
首先在飞书文档里创建一个 Excel,获取到Excel 链接,格式如下:
bash
复制代码
https://xxxxxx.feishu.cn/sheets/PQV*****************Uh?sheet=k****Y
其中PQV*****************Uh
是spreadsheetToken,k****Y
表格名称,用于锁定具体工作表。
本案例我们使用飞书追加数据接口:open.feishu.cn/document/se…
其中请求参数中 Authorization 获取方法如下:
python 复制代码 import requests import json def get_access_token(): url= "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/" # 应用凭证里的 app id 和 app secret post_data = {"app_id": "cli_xxxxxxxx", "app_secret": "8xxxxxxxxxxxxxxxxxxk"} r = requests.post(url, data=post_data) access_token = r.json()["tenant_access_token"] return access_token header = { "Content-Type": "application/json; charset=utf-8", "Authorization": f"Bearer {get_access_token()}" }
python 复制代码 # 记得换成自己的信息 spreadsheetToken = "Pxxxxxxxxxxxxh" sheetId = "lxxxxV" data_raw = { "valueRange": { "range": f"{sheetId}!A1:E3", "values": [ [ "2023/12/25", "收入", "微信", "100", "帐号 老表max" ], [ "2023/12/25", "支出", "支付宝", "10", "买东西 老表max" ], [ "2023/12/26", "支出", "支付宝", "19.9", "买东西 老表max" ], ] } } url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{spreadsheetToken}/values_append" r2 = requests.post(url, data=json.dumps(data_raw), headers=header) #请求写入 print( r2.json()["msg"]) #输出来判断写入是否成功
结果:
如果你想对接到飞书,得有一个云服务器用来接收用户发给飞书机器人的消息,并返回处理后的结果给飞书用户。
或者本地部署,然后内网穿透方法也行(不是长久之计)。
开通消息事件之前,需要先在服务器部署一个简单 web 服务用于接收消息,如下图,没啥特别要求,用 flask 快速写一个简单的代码,如下,
python 复制代码 from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/func', methods=['POST']) def all_func(): try: data = request.json # 解析收到的 JSON 数据 print(data) if data: # 原样返回数据 return jsonify(data) else: return "Missing data", 400 except Exception as e: return str(e), 500 if __name__ == '__main__': app.run(debug=True, port=8003, host="0.0.0.0")
将上面代码写入服务器的 feishu.py 文件,然后运行python feishu.py
即可,
默认配置链接为:http://你的服务器公网IP:8003/func
然后在飞书管理后台,事件与回调
页面配置验证接口是否OK,没问题点保存
即可。
然后点击添加事件
,搜索接收消息
,添加对应事件。
点击开启获取用户发给机器人的单聊消息
和获取用户在群组中@机器人的消息
权限。
然后发布一个新版本。
这时我们从飞书发送消息给机器人,我们就可以在服务器获取到对应消息了。
飞书:
服务器:
在前面实践部分,我们已经开通过了接收消息
权限,这里直接上请求代码。
python 复制代码 ''' 发送消息 doc-link https://open.feishu.cn/document/server-docs/im-v1/message/create 接口限制:1000 次/分钟、50 次/秒 receive_id_type值: - 私聊 user_id - 群聊 chat_id msg_type: doc-link https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json ''' def fs_send_msg(headers, post_data, receive_id_type): url= f"https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type={receive_id_type}" r = requests.post(url, headers=headers, data=json.dumps(post_data)) result = r.json() return result
测试请求:
python 复制代码 # 这里 user_id 可以怎么获取? # 在前面`消息事件`返回结果里面有,可以从里面获取 receive_id_type = "user_id" receive_id = "xxxxx" msg_type = "text" content = "{"text": "你好"}" post_data = { "receive_id": receive_id, "msg_type": msg_type, "content": content, # "uuid": "选填,每次调用前请更换,如a0d69e20-1dd1-458b-k525-dfeca4015204" } result = fs_send_msg(headers, post_data, receive_id_type)
结果: 飞书:
逻辑思路:
实现效果:
整合代码较多,源码已分享到 Github,项目地址:github.com/XksA-me/Sim…
通过前面操作,我们已经完成了Python代码和飞书的对接,将该功能加入到机器人就比较简单了。
流程我已经在文章最开头分享了,大家可以根据需要去实践,至于如何开发机器人,大家可以github搜索下相关项目。后面也会将相关实现更新到开源项目中,欢迎关注支持。
这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。