前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统

【玩转腾讯云】使用Serverless+飞书打造你的个性化消息提醒系统

原创
作者头像
用户1358150
修改于 2020-04-08 09:59:37
修改于 2020-04-08 09:59:37
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

一、前言

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

  • 自己管理的某台服务器宕机了,但是没有得到及时的提醒,导致业务受到损失
  • 某些自己很想注册的网站悄悄开放注册,但是自己并没有及时得知,于是只能继续漫无目的的等待
  • ……

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

二、准备工作

1. 首先当然是注册一个飞书账号(这个应该就不用我赘述了吧),然后在飞书网页版登录

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

点击创建企业自建应用
点击创建企业自建应用
输入应用名称和应用副标题,然后点击确定创建
输入应用名称和应用副标题,然后点击确定创建

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

记录 App ID 和 App Secret
记录 App ID 和 App Secret

二、编写代码

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

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

3. 按如下说明进行编码

.env

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TENCENT_SECRET_ID=AKID********************************
TENCENT_SECRET_KEY=********************************

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

serverless.yml

代码语言:yaml
AI代码解释
复制
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

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:shell
AI代码解释
复制
$ npm install -g serverless

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

代码语言:shell
AI代码解释
复制
$ serverless --debug

3. 从终端获取 API 网关的 URL

获取 API 网关的 URL
获取 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:

代码语言:json
AI代码解释
复制
{
    "content": "这里填入你想要发送的信息"
}

六、效果

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

使用 Talend API Tester 调用接口
使用 Talend API Tester 调用接口

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

电脑端效果
电脑端效果
手机端效果
手机端效果

七、结语

其实利用飞书能实现的并不只有这些而已,我相信聪明的你一定能开发出更加好玩的应用。本次的分享到此结束,感谢各位的浏览!下面分享一些实用的链接:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 Serverless + 飞书打造你的个性化消息提醒系统
如果每件事都花时间去关注,那我们的时间必然会不够用,那有没有什么办法可以让这些消息集中起来并且及时推送呢?在这里我想向大家推荐一个解决方案,那就是使用 Serverless + 飞书打造属于自己的个性化消息提醒系统。
腾讯云serverless团队
2020/07/09
1.8K0
利用飞书BOT发送消息
标题:利用飞书BOT发送消息 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/02/20/1582192919773.html
cuijianzhe
2022/06/14
1.2K0
利用飞书BOT发送消息
ZABBIX对接飞书实现报警通知
飞书提供了丰富的api来实现消息的通知,包括文本消息、图片消息、富文本消息,本次介绍使用飞书api发送文本消息,以下是实现思路 飞书API地址:https://open.feishu.cn/document/ukTMukTMukTM/uITNz4iM1MjLyUzM
没有故事的陈师傅
2020/02/26
4.8K7
ZABBIX对接飞书实现报警通知
基于 Python 后端的聊天软件机器人开发
其中 intents 表示监听事件,监听事件后通过实现 client 的 on_XX 方法可以获取并响应对应事件
dandelion1990
2024/03/11
6600
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
1、通过关键词触发机器人记账,比如/fs 支出 微信 18 午饭,其中/fs 为触发关键词,后面的四项分别是:类型、支付渠道、金额、备注。
老表
2024/06/26
1.2K1
手把手教你,使用 Python 实现一个飞书/钉钉/微信机器人
使用 Python 实现一个飞书/微信机器人,酷B了!
我打算每日花1小时来写一篇文章(这篇文章实际耗时约24小时,从了解飞书机器人及相关接口、权限等开始,到调通记账助手),这一小时包括文章主题思考和实现,这是2024年更新的第12篇原创推文,看看能不能被官方推荐。(帮我点点赞哦~)
老表
2024/03/05
1.8K0
使用 Python 实现一个飞书/微信机器人,酷B了!
利用Python实现网易云音乐自动签到
标题:利用Python实现网易云音乐自动签到 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/03/27/1585293177882.html
cuijianzhe
2022/06/14
1.2K0
利用Python实现网易云音乐自动签到
飞书 + Lua 实现企业级组织架构登录认证
飞书是字节跳动旗下一款企业级协同办公软件,本文将介绍如何基于飞书开放平台的身份验证能力,使用 Lua 实现企业级组织架构的登录认证网关。
K8sCat
2021/08/14
1.7K0
.NET6用起来-飞书dotnet sdk
最近有用到飞书开放平台的功能,然后在github上找了下,没找到对应的sdk,于是自己封装了一个飞书dotnet sdk,方便调用,只需要结合官网文档,传递对应的参数,接收到返回的数据。
李明成
2022/05/16
1.3K1
.NET6用起来-飞书dotnet sdk
Pyhton爬虫爬取天气情况以及情话
参考:https://blog.csdn.net/blowfire123/article/details/99173295
cuijianzhe
2022/06/14
3500
Pyhton爬虫爬取天气情况以及情话
利用爬虫爬取我的solo博客
标题:利用爬虫爬取我的solo博客 作者:cuijianzhe 地址:https://solo.cjzshilong.cn/articles/2020/03/25/1585126708916.html
cuijianzhe
2022/06/14
3630
利用爬虫爬取我的solo博客
飞书开放平台-发送卡片消息
本文我们基于飞书开平提供的go-sdk进行展示,go-sdk的github地址为: https://github.com/larksuite/oapi-sdk-go
加多
2023/01/10
1.9K0
飞书开放平台-发送卡片消息
我的 Serverless 实战—SSVM,用 Serverless搭建飞书机器人
【本文正在参与“100%有奖|我的Serverless 实战”征稿活动】,活动地址:https://marketing.csdn.net/p/15940c87f66c68188cfe5228cf4a0c3f
代码哈士奇
2021/10/25
7580
我的 Serverless 实战—SSVM,用 Serverless搭建飞书机器人
巧用 Serverless,轻松搭建微信公众号的智能后台服务
一般来说,想给微信公众号增加更多的功能,需要有一台服务器,来进行公众号后台服务的搭建。那么在 Serverless 架构下,是否有更简便的方法来实现这么一个公众号后台呢?我们试试? 初步搭建 一、Serverless 原生开发 首先要有一个微信公众号! 接下来,我们要为我们的函数计算服务申请固定 IP: 点击白名单之后,我们可以填写表单,完成固定公网出口 IP 的申请。 接下来进行代码开发。 将函数绑定到公众号后台,并按照文档在函数中完成一个基本的鉴定功能: def checkSignature(
腾讯云serverless团队
2020/05/22
3.6K0
手把手教你在飞书中搭建机器人
大家好,我是潇潇雨声。飞书是一款在国内广受欢迎的企业内部管理和协同工具,同时也可以作为一个强大的个人知识管理工具。在本文中,我将帮助你迅速创建一个飞书对话机器人,并嵌入 chatGPT 的功能。这个机器人可以直接回答你的问题,也可以在群聊中被@,从而以 chatGPT 的方式提供回应。通过这样的操作,你的飞书机器人将迅速蜕变成一个支持 chatGPT 的智能助手。
用户10517932
2023/12/24
2K0
手把手教你在飞书中搭建机器人
飞书开放平台-回复消息示例
本文我们基于飞书开平提供的go-sdk进行展示,go-sdk的github地址为: https://github.com/larksuite/oapi-sdk-go
加多
2023/01/12
1.3K0
飞书开放平台-回复消息示例
Apriso 通过飞书OAuth2.0实现单点二维码扫描登录
OAuth2.0介绍 OAuth(Open Authorization)是一个关于授权的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。在Apriso MOM项目实施过程中也经常会碰到要求Apriso支持OAth2.0单点登录的需求。
李英杰同学
2023/09/02
2.3K1
Apriso 通过飞书OAuth2.0实现单点二维码扫描登录
​Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
Admission 是在用户执行 kubectl 通过认证之后,在将资源持久化到 ETCD 之前的步骤,Kubernetes 为了将这部分逻辑解耦,通过调用 Webhook 的方式来实现用户自定义业务逻辑的补充。而以上过程,都是在用户执行 kuberctl 并等待 API Server 同步返回结果的生命周期内。
腾讯云 CODING
2020/07/01
1.2K0
​Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
钉钉发送报警消息的Python实现
我司使用钉钉作为主要的内部通讯工具,基本上大家在电脑和手机上都开着,消息可以第一时间查看,报警消息的即时性要求比较高,我们计划使用钉钉来发送报警通知。本文将简要介绍发送消息的API使用样例。钉钉的API接口文档,请查阅钉钉开放平台。
Debian中国
2018/12/21
3.4K2
【玩转腾讯云】【腾讯云自然语言处理NLP】结合腾讯云生态打造词法分析系统
具备自然语言处理(NLP)能力是企业日趋紧迫的一个需求,例如电商网站需从用户评论中分析出产品偏好,金融企业需对产品进行舆论分析等。企业如果自研NLP相关能力,不仅需要投入专业的技术人员、收集或购买大量的语料,还必须经历漫长的技术周期,最终效果往往还达不到预期。
用户6339481
2020/04/30
4.9K0
【玩转腾讯云】【腾讯云自然语言处理NLP】结合腾讯云生态打造词法分析系统
推荐阅读
相关推荐
使用 Serverless + 飞书打造你的个性化消息提醒系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验