如何使用飞书机器人打造一个私人的Flomo?
🍰

如何使用飞书机器人打造一个私人的Flomo?

Tags
效率工具
DDD实践
Abstract
如何使用飞书机器人打造一个私人的Flomo
Property
 
💡
Flomo官网所说 重要的不是记录,而是更好地思考 ,用何种方式记录并不重要,工具所起的作用只是帮助你更好地沉淀思考

为什么用飞书机器人?

  • 飞书是自己仅次于微信的打开频次最高的应用,工作日甚至高于微信,相信使用飞书作为办公软件的小伙伴会深有体会
  • 飞书机器人的定制化程度很高,将飞书机器人作为与用户交互的入口可以实现很多丰富的功能
  • 太懒了,不想装新的App了

效果

  • 飞书文档
notion image
  • Notion Page
notion image

准备工作

字节的同学也可以直接联系我,使用在内部轻服务已经部署好的服务和机器人
  1. 到飞书官网注册一个飞书企业账户或者加入一个团队/企业(个人账户目前飞书开放平台权限做了限制)
  1. (可选)注册一个Notion账户
 

申请飞书机器人

  1. 前往飞书开放平台,登录飞书账号进入开发者后台并创建应用
notion image
notion image
notion image
  1. 创建成功后,进入到应用主页,在“凭证与基础信息”菜单栏可以看到飞书应用的App ID和App Secret信息,复制一份保留备用
notion image
 
  1. 在应用页面的机器人菜单启用机器人,并配置消息卡片的请求网址,用于接受用户发送给机器人的消息。请求网址可以使用我在腾讯云部署的服务https://nomo.openhex.cn/api/v1/message/lark,也可以按照如何部署Nomo后台服务部署自己的后台服务
notion image
  1. 在权限管理面板开通机器人”获取与发送单聊、群组消息”、”获取用户在群组中@机器人消息的事件”以及“获取用户发给机器人的单聊消息”的权限。其中“获取与发送单聊、群组消息”需要创建版本并审核,可以点击”确认并前往创建应用版本”创建一个应用版本
notion image
notion image
申请发布的时候机器人默认只有自己可见,如果有需要可以添加其他员工或者设置全员可见,不同可见范围审核标准不同,可以根据需要添加。申请发布后,应用平台管理员会收到审核通知,需要审核通过后才可使用(如果是自己创建的企业则自己就可以审核)
notion image
notion image
 
  1. 在事件订阅面板设置消息回调地址以及添加“接受消息”事件。回调地址可以使用https://nomo.openhex.cn/api/v1/message/lark,也可以按照如何部署Nomo后台服务部署自己的后台服务
notion image
 
  1. 至此就可以在飞书聊天窗口搜索到我们刚创建的机器人了,当然此时给机器人发送消息还不能收到任何回复
notion image
 

创建文档

申请完机器人后,我们需要将机器人绑定到一个特定的Notion Page或者飞书Doc,这样机器人才知道想机器人发送消息,消息内容保存在哪个页面。当前后端的存储支持飞书Doc和Notion Page,可以根据自己的需要使用不同的文档进行保存,大家可以根据需要进行选择(下面两个章节可以二选一

创建飞书文档

  1. 创建一个空白的飞书文档,创建后,在浏览器的文档链接地方如下图红框圈住的地方时文档唯一标识,机docToken,复制一份保留备用
notion image
notion image
 
  1. 在飞书开放平台上面创建的机器人页面,找到权限管理。搜索docx,开通”创建及编辑新版文档、查看新版文档“权限;搜索drive,开通“查看云空间中文件元数据、查看、评论、编辑和管理云空间中所有文件”等权限,然后在”版本管理与发布→创建”创建和发布版本(个人用户不需要等待审批,如果收到审批点通过就行,另外如果如果不确定权限是否选对,可以把docx和drive相关的权限全部开通)
notion image
notion image
notion image
  1. 为飞书机器人添加文档的编辑权限,如下图所示,在分享→更多→添加文档应用,搜索上面开放平台创建的应用,然后添加
notion image
notion image

创建Notion Page

想要通过Notion API向Page中添加内容需要申请一个Integration Token,并赋予页面的权限才能进行操作
  1. 在已经登录notion的情况下,前往Notion Integrations页面创建一个Integrations,然后拿到secret key。创建Integration的时候选择自己的Notion workspace,其他权限保持默认即可,提交后可以拿到一个Internal Integration Token,复制一份保留备用
notion image
notion image
notion image
  1. 当前Notion页面支持两种风格,一种是左边的风格,称之为Flat,以天为单位将每天发送的消息做一个Bullet List的项,需要注意的是日期从上往下递增排列,该风格不支持对消息打标签;另外一种是右边的风格,称之为Gallery,整个页面是一个Database,每条消息作为一个Page插入到Database中,每个页面包含标签和创建时间,用户可以根据自己的喜好对其排列,并且需要的时候对其内容进行筛选和检索
Flat主题
Flat主题
Gallery主题
Gallery主题
选择其中一种风格创建一个页面,比如我们以Gallery为例,在Notion添加一个Gallery的页面,然后删除默认添加的示例page,并且修改属性,确保Tags和Created存在并作为page展示项
notion image
notion image
  1. 将页面授权给第6步创建的Integration,并获取该Gallery页面的Database Id(注意这里是database id不是page id,如果是flat页面则是page id)
notion image
notion image
通过`Copy link to view` 获取到的database 链接,如下所示,其中加粗标红部分即database id,需要复制一份保留备用
https://www.notion.so/openhex/294ca4d4fcbf4fc39dc7101debf2fff9?v=ba9059a97aa6493aa9fcf1f26d431162
 

注册机器人并关联文档

前面我们已经成功创建了一个飞书机器人和Notion页面,下面的步骤将介绍如何将飞书机器人和Notion页面关联,从而实现通过飞书机器人发送消息,将消息内容记录到Notion页面
 
  1. 飞书机器人注册到后台服务,这样当后台服务通过机器人的回调地址接受到消息后,可以通过机器人发消息给用户。打开机器人的聊天窗口,向机器人发送下面的信息即可注册机器人,其中app_id和app_secret替换为我们在第2步获取到的信息
/register app_id app_secret
notion image
  1. 将机器人和页面绑定,这样向机器人发送消息,就会自动添加到绑定的页面。
  • 绑定Notion Page。向机器人发送下面的信息可以将机器人绑定我们前面创建的Notion页面,其中integration_token是第7步获取的token,page_id是第9步获取的database id,gallery是页面的模板,可以是flat和gallery,因为前面我们创建的是gallery模板,所以这里是gallery
/bind notion integration_token page_id gallery
绑定Notion页面
绑定Notion页面
  • 绑定飞书文档。向机器人发送下面的信息可以绑定上面创建的飞书文档,其中doc_token是【创建飞书文档】章节第7步的docToken,theme当前只支持flat类型,默认就是flat,可以忽略不用指定
/bind doc doc_token [theme]
绑定飞书Doc
绑定飞书Doc

开始使用

经过前面11步的操作,我们已经创建了一个飞书机器人,并且将机器人和我们创建的Notion 页面或者飞书文档进行了绑定,现在就可以使用这个机器人了,向机器人发送消息就可以将消息自动保存到我们创建的页面内。Gallery模板支持标签功能,在发送消息的时候可以以#开始然后用空格结束一个标签,标签可以位于句子开头、结尾也可以位于句子中间,Flat模板不支持标签功能
notion image
 
Notion Page添加记录
Notion Page添加记录
飞书文档添加记录
飞书文档添加记录

参考资料

  1. https://flomoapp.com/
  1. https://open.feishu.cn/
  1. https://www.notion.so/
  1. https://github.com/KDF5000/nomo