简单示例
一个对话简单示例,详见官方开发机器人应用。
创建 Feishu Bot 应用
在左侧导航栏,进入【凭证和基础信息】,得到App ID
和App Secret
。
启用机器人功能:在 【应用功能】中【机器人】设置 【启用机器人】为开启状态。
进入【事件订阅】,获得 Verification Token。
创建 Chatopera Bot 应用
登录 Chatopera 云服务https://bot.chatopera.com
,创建【机器人】。
进入机器人设置页面,得到Client Id
和Secret
。
以上提到了两个“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
地址填写上,保存。
在飞书【事件订阅】中添加事件--【接收信息】,如下:
发布上线机器人
应用设置权限
设置权限 进入飞书应用管理控制台,打开【权限管理】页面,发布新版本,并且选择权限如下。
发布到企业内部使用
进入飞书应用管理控制台,进入【应用发布】打开【版本管理与发布】页面。
创建新版本,并提交,需企业内部管理员审核方可通过。
添加对话机器人入群
创建好群组后,添加机器人:
简单测试: