飞书是一款由字节跳动推出的企业级即时通讯工具,主要面向企业和团队使用。它提供了聊天、会议、文档协作、日程管理、任务管理等多种功能,支持多端同步,可以在电脑、手机、平板等设备上使用。除了基本的通讯功能外,飞书还提供了智能助手、人脸识别、语音识别等技术,以提高工作效率。同时,飞书还支持与其他应用程序的集成,可以方便地与其他企业应用程序进行集成,提高工作效率。

项目地址:

https://github.com/Leizhenpeng/feishu-chatgpt

飞书平台自由度蛮高的,开发者大佬更新也很勤。

飞书配置步骤

  1. 注册飞书账号,再新建企业,前往开发者平台创建应用,并获取到 APPID 和 Secret

img

img

  1. 前往应用功能-机器人, 创建机器人

img

img

img

  1. 从 cpolar、serverless 或 Railway 获得公网地址,在飞书机器人后台的事件订阅

    板块填写。例如,

    • http://xxxx.r6.cpolar.top为 cpolar 暴露的公网地址
    • /webhook/event为统一的应用路由
    • 最终的回调地址为 http://xxxx.r6.cpolar.top/webhook/event

img

  1. 在飞书机器人后台的机器人板块,填写消息卡片请求网址。例如,
    • http://xxxx.r6.cpolar.top为 cpolar 暴露的公网地址
    • /webhook/card为统一的应用路由
    • 最终的消息卡片请求网址为 http://xxxx.r6.cpolar.top/webhook/card

img

  1. 在事件订阅板块,搜索三个词机器人进群接收消息消息已读, 把他们后面所有的权限全部勾选。
  2. 进入权限管理界面,搜索图片, 勾选获取与上传图片或文件资源。 最终会添加下列回调事件
    • im:resource(获取与上传图片或文件资源)
    • im:message
    • im:message.group_at_msg(获取群组中所有消息)
    • im:message.group_at_msg:readonly(接收群聊中@机器人消息事件)
    • im:message.p2p_msg(获取用户发给机器人的单聊消息)
    • im:message.p2p_msg:readonly(读取用户发给机器人的单聊消息)
    • im:message:send_as_bot(获取用户在群组中@机器人的消息)
    • im:chat:readonly(获取群组信息)
    • im:chat(获取与更新群组信息)

img

img

img

img

img

  1. 发布版本,等待企业管理员审核通过

img

Railway部署

Railway是一种基于云的应用程序托管平台,它可以让开发人员轻松地部署和管理应用程序。它支持多种编程语言和框架,例如Node.js、Python、Ruby、React等。使用Railway,开发人员可以快速地将应用程序部署到云端,而无需担心服务器配置、数据存储和安全性等问题。此外,Railway还提供了一些有用的工具和功能,例如自动化部署、实时日志、性能监控等,以帮助开发人员更好地管理和优化应用程序。Railway的优点是易于使用、快速部署、高度可扩展和安全。

1. 生成 Railway 项目

点击下方按钮即可创建一个对应的 Railway 项目,其会自动 Fork 本项目到你的 Github 账号下。

Deploy on Railway

2. 配置环境变量

在打开的页面中,配置环境变量,每个变量的说明如下图所示:

Railway 环境变量

3. 部署项目

填写完环境变量后,点击 Deploy 就完成了项目的部署。部署完成后还需获取对应的域名用于飞书机器人访问,如下图所示:

Railway 域名

如果不确定自己部署是否成功,可以通过访问上述获取到的域名 (https://xxxxxxxx.railway.app/ping) 来查看是否返回了pong ,如果返回了pong,说明部署成功。

docker部署

1
2
3
4
5
6
7
8
9
10
11
docker build -t feishu-chatgpt:latest .
docker run -d --name feishu-chatgpt -p 9000:9000 \
--env APP_ID=xxx \
--env APP_SECRET=xxx \
--env APP_ENCRYPT_KEY=xxx \
--env APP_VERIFICATION_TOKEN=xxx \
--env BOT_NAME=chatGpt \
--env OPENAI_KEY="sk-xxx1,sk-xxx2,sk-xxx3" \
--env API_URL="https://api.openai.com" \
--env HTTP_PROXY="" \
feishu-chatgpt:latest

注意:

  • BOT_NAME 为飞书机器人名称,例如 chatGpt
  • OPENAI_KEY 为openai key,多个key用逗号分隔,例如 sk-xxx1,sk-xxx2,sk-xxx3
  • HTTP_PROXY 为宿主机的proxy地址,例如 http://host.docker.internal:7890,没有代理的话,可以不用设置
  • API_URL 为openai api 接口地址,例如 https://api.openai.com, 没有反向代理的话,可以不用设置

小白简易化 docker部署

1
2
3
4
5
6
7
8
9
10
docker run -d --restart=always --name feishu-chatgpt2 -p 9000:9000 -v /etc/localtime:/etc/localtim:ro  \
--env APP_ID=xxx \
--env APP_SECRET=xxx \
--env APP_ENCRYPT_KEY=xxx \
--env APP_VERIFICATION_TOKEN=xxx \
--env BOT_NAME=chatGpt \
--env OPENAI_KEY="sk-xxx1,sk-xxx2,sk-xxx3" \
--env API_URL=https://api.openai.com \
--env HTTP_PROXY="" \
dockerproxy.com/leizhenpeng/feishu-chatgpt:latest

事件回调地址: http://IP:9000/webhook/event 卡片回调地址: http://IP:9000/webhook/card

把它填入飞书后台

docker-compose部署

编辑源码中的docker-compose.yaml,通过 environment 配置相应环境变量(或者通过 volumes 挂载相应配置文件),然后运行下面的命令即可

1
2
3
4
5
6
7
8
# 构建镜像
docker compose build

# 启动服务
docker compose up -d

# 停止服务
docker compose down

事件回调地址: http://IP:9000/webhook/event 卡片回调地址: http://IP:9000/webhook/card

本地部署

1
2
git clone [email protected]:Leizhenpeng/feishu-chatgpt.git
cd feishu-chatgpt/code

如果你的服务器没有公网 IP,可以使用反向代理的方式

飞书的服务器在国内对 ngrok 的访问速度很慢,所以推荐使用一些国内的反向代理服务商

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 配置config.yaml
mv config.example.yaml config.yaml

//测试部署
go run main.go
cpolar http 9000

//正式部署
nohup cpolar http 9000 -log=stdout &

//查看服务器状态
https://dashboard.cpolar.com/status

// 下线服务
ps -ef | grep cpolar
kill -9 PID

image-20230405194005922


12

13

14

欢迎加入飞书ChatGPT交流群一起探讨学习,内置ai机器人,飞书app扫上面二维码即可加入。