简单示例

一个对话简单示例,详见官方开发机器人应用

创建 Feishu Bot 应用

在左侧导航栏,进入【凭证和基础信息】,得到App IDApp Secret

启用机器人功能:在 【应用功能】中【机器人】设置 【启用机器人】为开启状态。

基于飞书创建对话机器人应用

进入【事件订阅】,获得 Verification Token。

基于飞书创建对话机器人应用

创建 Chatopera Bot 应用

登录 Chatopera 云服务https://bot.chatopera.com,创建【机器人】。

基于飞书创建对话机器人应用

进入机器人设置页面,得到Client IdSecret

基于飞书创建对话机器人应用

以上提到了两个“Bot 应用”,实际上是一个对话机器人应用的两个部分:"Feishu Bot 应用" 是渠道,"Chatopera Bot 应用"是自然语言对话管理;前者是“嘴”,后者是“脑”。

容器化部署对话机器人服务

编辑配置文件

获取源码chatopera.feishu

# 创建 .env
# vim /data/chatopera/feishu/app/.env

export APP_ID=cli_xxx
export APP_SECRET=
export APP_VERIFICATION_TOKEN=
export CHATOPERA_CLIENT_ID=
export CHATOPERA_SECRET=

参数对应列表:

key value 描述
APP_ID App ID 凭证和基础信息中获取
APP_SECRET App Secret 凭证和基础信息中获取
APP_VERIFICATION_TOKEN Verification Token 事件订阅中获取
CHATOPERA_CLIENT_ID Client Id Chatopera 聊天机器人设置页
CHATOPERA_SECRET Secret Chatopera 聊天机器人设置页

示例如下:

基于飞书创建对话机器人应用

打包镜像

# cd feishu/app
# cat requirements.txt
chatopera>=2.0.0

如果你不是容器化部署,采用本地部署,可能会遇到如下错误:

# 安装 Python 依赖
pip install -r requirements.txt
# 如出现报错:ModuleNotFoundError: No module named 'distutils.cmd'
sudo apt-get install python3-distutils 
# 再次pip安装即可
pip install -r requirements.txt
# 修改Dockerfile文件
FROM chatopera/python37:latest

LABEL maintainer="hain@chatopera.com"

COPY ./app /app
WORKDIR /app
RUN pip install -r requirements.txt

EXPOSE 8991
CMD ["/bin/bash", "-c", "./serve.sh"]
# build image
cd /data/chatopera/feishu
docker build -t harbor.test.com/chatopera/feishu-v1.0:20211109 .
# push image
docker push harbor.test.com/chatopera/feishu-v1.0:20211109

启动服务

# run 容器
docker run -itd --name feishu-chatopera -p 8991:8991 harbor.test.com/chatopera/feishu-v1.0:20211109 
# 查看log
# docker logs feishu-chatopera
run app with CHATOPERA_BOT_PROVIDER https://bot.chatopera.com, CHATOPERA_CLIENT_ID xxxxxxxxxxxxxxx, APP_ID xxxxxxxxxxxxxxx
bot info: {'rc': 0, 'data': {'chatbotID': 'xxxxxxxxxxxxxxx', 'name': 'AI语音对话', 'primaryLanguage': 'zh_CN', 'description': 'AI语音助手对话机器人', 'welcome': '你好!我是AI语音助手机器人星期五', 'gambitLikeThreshold': 0.8, 'conversationTimeout': 1800, 'historyCheckpoints': 100, 'gambitIntentQuestionMaxAttempts': 2, 'fallback': '我不明白您的意思。', 'trans_zhCN_ZhTw2ZhCn': True, 'status': {'reindex': 0, 'reparse': 0, 'retrain': 0}}}
server is started, listen on port 8991 ...

服务默认使用8991端口,可以在 .env 中增加环境变量PORT=YOUR_PORT自定义。

部署 ngrok 服务

详见The use of the internal network penetration artifact ngrok

配置HTTPs服务,接入飞书要求使用https server URL,测试目的建议使用ngrok

# 使用 screen 后台运行
# 创建一个名为ngrok的会话窗口
screen -S ngrok
# 执行
ngrok http 8991
# 暂离窗口
Ctrl+a d(即按住Ctrl,依次再按a,d)
# 查看存在的会话窗口
screen -ls
# 进入窗口
screen -r ngrok
screen -r 进程ID
# 关闭窗口
exit

screen使用,如上,得到 https URL 地址:" https://xxx.ngrok.io "。

基于飞书创建对话机器人应用

配置飞书消息事件订阅

再次进入 Feishu 【事件订阅】 页面,编辑【请求网址 URL】的值。将刚刚获得的https://xxx.ngrok.io地址填写上,保存。

在飞书【事件订阅】中添加事件--【接收信息】,如下:

基于飞书创建对话机器人应用

发布上线机器人

应用设置权限

设置权限 进入飞书应用管理控制台,打开【权限管理】页面,发布新版本,并且选择权限如下。

基于飞书创建对话机器人应用

发布到企业内部使用

进入飞书应用管理控制台,进入【应用发布】打开【版本管理与发布】页面。

基于飞书创建对话机器人应用

创建新版本,并提交,需企业内部管理员审核方可通过。

添加对话机器人入群

创建好群组后,添加机器人:

基于飞书创建对话机器人应用

简单测试:

基于飞书创建对话机器人应用