Github项目地址

飞书机器人

前言

如果你想添加新的对话逻辑,你只需要在ChatApi.py中添加新的if条件判断语句即可。如果你能开发出新功能,请在仓库中提出Pull requests合并请求,我将感激不尽!

更新与修复

2023年9月1日更新

更新了对话机器人返回帮助界面功能,用户发送“帮助”,返回机器人使用说明

2023年8月30日更新

更新了对话机器人返回微博热搜榜功能,用户发送“热搜”,返回即时热搜榜

2023年8月28日更新

1.将原先的TestApi.py整合进ChatApi.py中,省去了繁琐的目录与代码文件

2.更新了请求地址配置方法,只需要一个文件ChatApi.py即可

飞书机器人介绍

机器人概述 - 开发指南 - 开发文档 - 飞书开放平台 (feishu.cn)

飞书机器人分为两种,一种是自定义机器人,一种是应用机器人。

自定义机器人

只能在群聊中使用,只能完成比较固定的消息推送。

webhook获取方法:

1.进入目标群组,在群组右上角点击更多按钮,并点击 设置。

2.在右侧 设置 界面,点击 群机器人。

3.在 群机器人 界面点击 添加机器人。

4.在 添加机器人 对话框,找到 自定义机器人,并 添加。

5.设置自定义机器人的名称与描述,并点击 添加。

6.获取自定义机器人的 webhook 地址,并点击 完成

应用机器人

功能很多,开发性高,灵活性强。需要有企业账户,支持对话互动等多种功能。

app_id与app_secret获取方法

1.用企业账户,在开发者后台中,创建企业自建应用

2.找到app_id与qpp_secret

3.添加应用能力,选择机器人

4.添加以下权限

im:message,im:message.group_at_msg,im:message.group_at_msg:readonly,im:message.group_msg,im:message.p2p_msg,im:message.p2p_msg:readonly,im:message:readonly,im:chat:readonly,im:chat,im:message:send_as_bot

开启事件订阅:

若要使机器人有互动对话功能,需要填写请求配置地址,并添加接收消息v2.0和消息已读v2.0事件

请求地址配置方法

1.使用反向代理工具ngrok完成内网穿透

使用docker启动ngrok

docker run -it -e NGROK_AUTHTOKEN= ngrok/ngrok http 8080

NGROK_AUTHTOKEN获取方法:

1.1 进入ngrok官网https://ngrok.com/,注册ngrok账号并下载ngrok

1.2 获取Authtoken

获取公网地址后,按下Ctrl + P,然后再按下Ctrl + Q,使容器后台运行。

1.3 在FeishuBot/public/chat/conf.py中填写相关信息

先运行ChatApi.py

python3 ChatApi.py

到飞书后台填写请求配置地址,格式为https://123456.ngrok-free.app/query/message

期间保证ngrok在后台一直运行

2.使用Kubernetes暴露公网

2.1 在FeishuBot/public/build-api填好conf.py中的信息,然后自己制作docker镜像

docker build -t docker的用户名/镜像名: .

docker push 做好的镜像

2.2在FeishuBot/public/build-api下,修改deploy.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: api

spec:

replicas: 1

selector:

matchLabels:

app: api

template:

metadata:

labels:

app: api

spec:

containers:

- name: api

image: # 在build-api目录下制作的镜像

ports:

- containerPort: 8080

---

apiVersion: v1

kind: Service

metadata:

name: api

spec:

selector:

app: api

type: NodePort

ports:

- name: http

protocol: TCP

port: 80 # 对外暴露的端口

targetPort: 8080 # Flask应用容器监听的端口

nodePort: 39378

然后获取检验用的请求配置地址

kubectl apply -f deploy.yaml

kubectl get svc # 获取端口为39378,记得在服务器开放

地址示例:http://1.2.3.4:3XXXXX/query/message

功能

青年大学习提醒天气通知互动对话功能ChatGPT—引用网上项目

青年大学习提醒

实现每周一早上九点,通知用户完成青年大学习

点击超链接跳转微信

使用方法

自定义机器人:在FeishuBot/personal/conf.py中填写你的webhook

应用机器人:在FeishuBot/public/send/conf.py中填写你的app_id和app_secret

开启服务:自定义机器人启动脚本FeishuBot/personal/qndxx-remind/run1.sh

​ 应用机器人启动脚本FeishuBot/public/send/qndxx-remind/run1.sh

chmod +x run1.sh

./run1.sh

天气通知

实现每天早上七点,向用户推送天气信息

普通天气

出现灾害天气时,推送气象台预警信息,并附带特殊天气图标

使用方法

自定义机器人:在FeishuBot/personal/conf.py中填写你的webhook和指定城市

应用机器人:在FeishuBot/public/send/conf.py中填写你的app_id和app_secret,指定城市

开启服务:自定义机器人启动脚本FeishuBot/personal/weather-remind/run2.sh

​ 应用机器人启动脚本FeishuBot/public/send/weather-remind/run2.sh

chmod +x run1.sh

./run2.sh

互动对话功能

仅限应用机器人

互动对话逻辑

实现向应用机器人发送特定信息,返回特定内容

1.用户发送”青年大学习“,机器人回复青年大学习通知内容

2.用户发送"查询天气:指定城市名"后,机器人回复需要监测天气城市的天气信息。

城市名注意不要带市和区。 如: 北京、南岸

3.用户发送“热搜”,机器人返回即时热搜榜

4.如果你想添加新的对话逻辑,你只需要在ChatApi.py中添加新的if条件判断语句即可。如果你能开发出新功能,请在仓库中提出Pull requests合并请求,我将感激不尽!

ChatGPT

参考网上的项目,建议使用新的应用机器人

飞书 ChatGPT 机器人 - 用 JavaScript 五分钟开发一个飞书 ChatGPT 机器人 (aircode.cool)

BUG

1.用K8s配置请求地址时,用于检验时地址都是可用的,但是更改镜像后,无法使用互动对话功能

2.互动对话功能在服务器上使用ngrok有点问题,在windows下完全可以使用

3.因为配置请求地址时需要在固定地址的情况下改变镜像,所以GitLab中的CI只跑通用于检验的镜像并部署在K8s,详情请看.gitlab-ci.yaml

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: