温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Serverless+飞书打造你的个性化消息提醒系统

发布时间:2021-10-12 11:56:52 来源:亿速云 阅读:189 作者:柒染 栏目:云计算

如何使用Serverless+飞书打造你的个性化消息提醒系统,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、前言

在日常工作学习生活中,我们可能会遇到以下情形:

  • 自己管理的某台服务器宕机了,但是没有得到及时的提醒,导致业务受到损失

  • 某些自己很想注册的网站悄悄开放注册,但是自己并没有及时得知,于是只能继续漫无目的的等待

  • ……

如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用 Serverless + 飞书打造属于自己的个性化消息提醒系统

二、准备工作

  1. 首先注册一个飞书账号,然后在飞书网页版登录

  2. 打开飞书开放平台,点击创建企业自建应用,并输入应用名称应用副标题,然后点击确定创建

  3. 在企业自建应用列表中点击刚刚创建成功的应用,并记录 App IDApp Secret


二、编写代码

  1. 在本地新建一个项目目录,名称随意,这里以 feishu-notify 为例

  2. 分别创建 3 个文件:.envindex.pyserverless.yml

  3. 按如下说明进行编码

.env

TENCENT_SECRET_ID=AKID******************************** TENCENT_SECRET_KEY=********************************

注:这里的 TENCENT_SECRET_IDTENCENT_SECRET_KEY 可在腾讯云控制台的访问密钥中获取,如果没有密钥则需要自己新建一个

serverless.yml

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中所有可用属性的属性列表

index.py

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,这里有几点需要作出说明:

  1. 代码中的 app_idapp_secret 项需填写在准备工作记录的 App IDApp Secret

  2. 最终我们使用 POST 方法发送消息

  3. 在调用时,我们还需要在 query 处加上 ?myauth=feishu1,目的是作简单验证以防止他人发送,例如 https://service-********-**********.**.apigw.tencentcs.com/release/?myauth=feishu1

三、部署 Serverless 服务

  1. 通过 npm 安装 Serverless

$ npm install -g serverless
  1. 通过serverless命令进行部署,并添加--debug参数查看部署过程中的信息

$ serverless --debug
  1. 从终端获取 API 网关的 URL

获取 API 网关的 URL

四、上线应用

  1. 回到飞书开放平台,在企业自建应用列表中点击刚刚创建成功的应用

  2. 点击应用功能-机器人,点击启用机器人

  3. 点击版本管理与发布-创建版本,参考下图进行配置(先不要点保存)

  4. 可用性状态处点击编辑,选择所有员工,然后点击保存

  5. 点击申请发布

  6. 点击飞书网页版的头像,进入飞书管理后台

  7. 点击工作台-应用审核,然后点击审核

  8. 点击通过

五、调用接口

请求方式: POST

请求地址: 上面获取的 APIGateway 的 URL

请求 Header:

参数类型必填/选填说明默认值实例
Content-Typestring必填Content-Type
application/json

请求 Query:

参数类型必填/选填说明默认值实例
myauthstring必填简单验证
feishu1

请求 Body:

{     "content": "这里填入你想要发送的信息" }

六、效果

为了方便,这里使用 Chrome 浏览器插件 Talend API Tester 进行调用

如何使用Serverless+飞书打造你的个性化消息提醒系统

可以看到,飞书的消息推送很及时

如何使用Serverless+飞书打造你的个性化消息提醒系统

其实利用飞书能实现的并不只有这些而已,我相信聪明的你一定能开发出更加好玩的应用。

看完上述内容,你们掌握如何使用Serverless+飞书打造你的个性化消息提醒系统的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI