在日常工作学习生活中,我们可能会遇到以下情形:
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用Serverless+飞书打造属于自己的个性化消息提醒系统。
1. 首先当然是注册一个飞书账号(这个应该就不用我赘述了吧),然后在飞书网页版登录
2. 打开飞书开放平台,点击创建企业自建应用,并输入应用名称和应用副标题,然后点击确定创建
3. 在企业自建应用列表中点击刚刚创建成功的应用,并记录 App ID 和 App Secret
1. 在本地新建一个项目目录,名称随意,这里以 feishu-notify
为例
2. 分别创建 3 个文件:.env
,index.py
和 serverless.yml
3. 按如下说明进行编码
TENCENT_SECRET_ID=AKID********************************
TENCENT_SECRET_KEY=********************************
注:这里的
TENCENT_SECRET_ID
和TENCENT_SECRET_KEY
可在腾讯云控制台的访问密钥中获取,如果没有密钥则需要自己新建一个
myFunction:
component: "@serverless/tencent-scf"
inputs:
name: feishu-notify-py
codeUri: "./"
handler: index.main_handler
runtime: Python3.6
region: ap-guangzhou
description: My Serverless Function Used to Notify Myself
memorySize: 128
events:
- apigw:
name: serverless
parameters:
protocols:
- https
endpoints:
- path: "/"
method: POST
注:可以点击这里查看
serverless.yml
中所有可用属性的属性列表
def main_handler(event, context):
import requests
import json
print(event)
CONFIG = {
"app_id": "********************",
"app_secret": "********************************"
}
# my auth
if 'myauth' not in event['queryString'] or event['queryString']['myauth'] != 'feishu1':
return 'forbidden'
# Get content
postContent = event['body']
try:
postContent = json.loads(postContent)
except:
return 'error in json_loads(line: 19)'
if 'content' not in postContent:
return 'invalid params'
content = postContent['content']
# Get tenant_access_token
try:
res = requests.post('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/', {
"app_id": CONFIG['app_id'],
"app_secret": CONFIG['app_secret']
})
except:
return 'error in get_tenant_access_token'
data = json.loads(res.text)
if data['code'] != 0:
return data['msg']
token = data['tenant_access_token']
# Get chat_id
try:
res = requests.get('https://open.feishu.cn/open-apis/chat/v4/list', headers={
'Authorization': 'Bearer %s' % (token)
})
except:
return 'error in get_chat_id'
data = json.loads(res.text)
if data['code'] != 0:
return data['msg']
groupList = data['data']['groups']
myGroupId = groupList[0]['chat_id']
# Send message
try:
res = requests.post('https://open.feishu.cn/open-apis/message/v4/send/', json={
"chat_id": myGroupId,
"msg_type": "text",
"content": {
"text": content
}
}, headers={
'Authorization': 'Bearer %s' % (token),
'Content-Type': 'application/json'
})
except:
return 'error in send message'
data = json.loads(res.text)
if data['code'] != 0:
return data['msg']
return 'success'
关于 index.py
,这里有几点需要作出说明:
app_id
和 app_secret
项需填写在准备工作记录的 App ID 和 App SecretPOST
方法发送消息query
处加上 ?myauth=feishu1
,目的是作简单验证以防止他人发送,例如 https://service-********-**********.**.apigw.tencentcs.com/release/?myauth=feishu1
1. 通过 npm 安装 Serverless
$ npm install -g serverless
2. 通过serverless
命令进行部署,并添加--debug
参数查看部署过程中的信息
$ serverless --debug
3. 从终端获取 API 网关的 URL
1. 回到飞书开放平台,在企业自建应用列表中点击刚刚创建成功的应用
2. 点击应用功能-机器人,点击启用机器人
3. 点击版本管理与发布-创建版本,参考下图进行配置(先不要点保存)
4. 在可用性状态处点击编辑,选择所有员工,然后点击保存
5. 点击申请发布
6. 点击飞书网页版的头像,进入飞书管理后台
7. 点击工作台-应用审核,然后点击审核
8. 点击通过
请求方式:POST
请求地址:上面获取的 APIGateway 的 URL
请求 Header:
参数 | 类型 | 必填/选填 | 说明 | 默认值 | 实例 |
---|---|---|---|---|---|
Content-Type | string | 必填 | Content-Type | application/json |
请求 Query:
参数 | 类型 | 必填/选填 | 说明 | 默认值 | 实例 |
---|---|---|---|---|---|
myauth | string | 必填 | 简单验证 | feishu1 |
请求 Body:
{
"content": "这里填入你想要发送的信息"
}
为了方便,这里使用 Chrome 浏览器插件 Talend API Tester 进行调用
可以看到,飞书的消息推送很及时
其实利用飞书能实现的并不只有这些而已,我相信聪明的你一定能开发出更加好玩的应用。本次的分享到此结束,感谢各位的浏览!下面分享一些实用的链接:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有