此方案可使用本地deepseek加Dify知识库对接钉钉机器人制作智能客服,在使用此方案时需在钉钉开发者后台付费 API 调用量及API 请求并发量问题。
全文参考
将 Dify 应用与钉钉机器人集成
打字机效果流式 AI 卡片
添加接口调用权限
前提条件
1)本地化部署Deepseek+Dify知识库,可参考前文:Deepseek+Dify+Chatbox应用;
2)钉钉开发者后台;
3)MAC OS(此处可使用centos 或其他系统)
Dify创建应用
1.在Dify中创建chatbot应用,可以选择agent或工作流模式,但此处选择chatbot应用(后续配置回复机器人模式时需使用到,请按照需求选择);
2.在此机器人中点击【访问API】,记录API服务器地址(可私网)及生成API密钥(后续在配置回复机器人时需使用);
钉钉开发者后台中添加机器人
此处将使用原文截图,步骤一致。
1.登录进入 钉钉开发平台,选择合适的组织,进入企业内部应用开发页面,创建一个企业内部应用(权限范围选择【全部员工】);
2.在弹出窗口里填好 应用名称、应用描述,上传应用图标点击保存。然后自动进入应用开发配置界面,通过 添加应用能力 添加机器人能力;
3.打开机器人配置开关,在下方出现的表单中按你的实际情况填入各必要信息,在消息接收模式上选择 【Stream模式】 ;
4.点击发布后,再去到左边栏的【应用发布】 -> 【版本管理与发布】 -> 【创建新版本】,给应用建立一个新版本进行发布。
5.最后回到 凭证与基础信息,此时左上角应用的状态应该 【已发布】,到此完成钉钉机器人的配置。此处的【Client ID】及【Client Secret】在后续配置文件中需使用,需进行记录;
钉钉 AI 卡片配置
由于原文将部分内容简略或遗留,除原文截图外,也将必须配置的截图加入。
为了让钉钉机器人的回复也实现打字机一样的流式输出效果,需要用到钉钉近来针对 AI 功能开放的 AI 卡片。
1.进入钉钉开发者后台,【顶部菜单】 -> 【开放能力】 ->【卡片平台】 ->【新建模版】 ,来新建一个 【AI 卡片模板】,填入你喜欢的模版名称,卡片类型选择【消息卡片】 ,卡片模板场景选择 【AI 卡片】,并 关联刚才创建的应用;
2.点击【创建】后进入卡片编辑页面,这里基本不需要任何改动,如果希望机器人在出错时把具体错误信息也输出出来,可以把 启用失败状态 打开,卡片摘要选择cnetent,配置完毕后点击【保存】,最后点击【发布】(不点击发布则会报错);
3.最后点击保存,发布,显示 “模版发布成功”,然后返回到刚才的模版列表页面,复制 模版 ID,保存下来一会儿会用到。
4.AI卡片绑定钉钉应用后需打开权限,点击所创建应用,点击左侧【权限管理】->【卡片】,将下面两个关于卡片的【Card.Instance.Write】权限及【Card.Streaming.Write】打开。(此步为重中之重,不开通权限在IMAC中的日志中将会报错,钉钉机器人回复时无法返回AI 卡片则会报错)
在IMac上部署 Dify-on-Dingtalk
原文中使用Centos,下面使用MAC OS经行部署。(此处可根据实际需求进行选择)
- 安装 Docker Desktop
MAC OS 不能使用 docker-ce,必须安装 Docker Desktop:下载 Docker Desktop
安装后 启动 Docker Desktop,确保 docker 命令可用:
docker --version
启用 Docker Compose Plugin:
docker compose version
PS:如果报错,可能需要启用 Docker CLI Plugins,在 Preferences > CLI Plugins 中启用。
- 下载 Dify-on-Dingtalk 代码,在 mac OS 终端执行:
yorickbao@yorickbaodeMac-mini ~ %git clone https://github.com/zfanswer/dify-on-dingtalk.git
yorickbao@yorickbaodeMac-mini ~ %cd dify-on-dingtalk
PS:如果 GitHub 访问慢,可以改用 Gitee:
yorickbao@yorickbaodeMac-mini ~ %git clone https://gitee.com/zfanswer/dify-on-dingtalk.git
yorickbao@yorickbaodeMac-mini ~ %cd dify-on-dingtalk
- 配置环境变量
进入 docker 目录:
yorickbao@yorickbaodeMac-mini dify-on-dingtalk %cd docker
yorickbao@yorickbaodeMac-mini docker % cp ../.env.example .env
yorickbao@yorickbaodeMac-mini docker % cp ../.bots.yaml.example .bots.yaml
然后使用 vi 或 nano 修改 .env 和 .bots.yaml,填入你的 Dify API 信息 和 钉钉机器人凭证:
yorickbao@yorickbaodeMac-mini docker % vi .env
OPEN_API_URL为上述的API服务器地址,DINGTALK_AI_CARD_TEMPLATE_ID为上述的模板ID,
yorickbao@yorickbaodeMac-mini docker % vi .bots.yaml
dingtalk_app_client_id为上述的Client ID,dify_app_api_key为上述的API密钥;
⚠️ 确保 DIFY_OPEN_API_URL、DINGTALK_AI_CARD_TEMPLATE_ID、dingtalk_app_client_id 等变量正确填写!
- 启动 Docker 容器,确保你当前在 docker 目录下,然后运行:
yorickbao@yorickbaodeMac-mini docker % docker compose up -d
如果 docker compose 不是可用命令,试试:
yorickbao@yorickbaodeMac-mini docker % docker-compose up -d
- 检查运行状态查看容器是否成功运行:
yorickbao@yorickbaodeMac-mini docker % docker ps
查看日志:
yorickbao@yorickbaodeMac-mini docker % docker logs -f <容器 ID>
如果日志中出现类似:
INFO | __main__:run:33 - 启动机器人数量:1
INFO | dingtalk_stream.stream:start:72 - endpoint is % s
最终效果
MAC OS中的docker最终显示如下:
测试如下:
本文由 yorickbao 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。