跳到主要内容

新增后端Type元素

当JitAi开发框架中现有的Type元素无法满足特定业务需求时,开发者可以通过两种方式扩展功能:

  1. 复用现有Meta,创建新的Type元素:适合在已有族类内扩展功能。比如在消息服务框架下增加微信企业号通知、邮件通知,在支付服务框架下集成PayPal支付,在存储服务框架下对接腾讯云COS。以上都是指向已有Meta的新Type元素。
  2. 创建全新元素族类:适合全新业务领域的扩展,自成体系的新元素族类。比如IoT集成,需要支持MQTT、Modbus等多种不同的协议。

本文将采用方式2,通过实战案例,一步步指导开发者完成智能客服和钉钉机器人的集成。

你已经完成入门教程了吗?

如果你还没有完成桌面版安装入门教程导读,请先完成这些入门教程。

实战指南:将智能客服集成到钉钉机器人

我们将钉钉机器人放到IM机器人这个顶级分类中,因此IM机器人就是Meta,钉钉机器人就是该分类下的Type之一,微信、企微、飞书等各类IM机器人都可以成为该分类下的新Type。

效果预览

完成后的钉钉机器人效果:用户在钉钉群中@机器人发送问题,机器人会调用配置的智能客服Agent,实现流式回复。

钉钉机器人最终效果

元素族类设计

元素层次fullName主要职责
Meta元素imRobots.Meta定义IM机器人族类,统一管理各平台机器人
Type元素imRobots.dingTalkStreamType封装钉钉SDK,处理消息收发和Stream连接等技术复杂度,开发配置项
实例元素imRobots.dingTalkDemo配置具体的钉钉应用参数和智能体

目录结构

imRobots元素族类在App中的子目录结构
├── imRobots/
│ ├── Meta/
│ │ ├── e.json
│ │ └── __init__.py
│ ├── dingTalkStreamType/
│ │ ├── e.json
│ │ ├── loader.py
│ │ ├── handler.py
│ │ ├── client_manager.py
│ │ └── __init__.py
│ └── dingTalkDemo/
│ ├── e.json
│ ├── config.json
│ └── __init__.py
├── requirements.txt
└── ...
第三方依赖

需要在App根目录下的requirements.txt中添加依赖:

requirements.txt
dingtalk-stream==0.24.2
python-socks==2.7.1

元素族类实现

Meta元素

imRobots/Meta/e.json
{
"backendBundleEntry": ".",
"description": "IM机器人元素族类",
"title": "IM机器人",
"type": ""
}

Type元素

imRobots/dingTalkStreamType/e.json
{
"backendBundleEntry": ".",
"description": "封装钉钉机器人对接的细节,包括消息发送、接收、处理等,将配置参数开放",
"title": "钉钉机器人",
"type": "imRobots.Meta"
}

实例元素

imRobots/dingTalkDemo/e.json
{
"backendBundleEntry": ".",
"backendLoadTime": "afterAppInit",
"type": "imRobots.dingTalkStreamType",
"title": "钉钉智能客服",
"description": "JitAi智能客服钉钉机器人实例,配置具体参数"
}

测试

使新元素族类生效

  1. 清理缓存:删除应用目录中的dist目录
  2. 重启服务:重启桌面端
  3. 触发打包:访问应用页面,系统自动重新打包
  4. 检查日志:观察日志,确认元素加载成功,与钉钉开发者平台的长连接是否建立成功

功能测试

  1. 在钉钉群中@机器人发送消息
  2. 机器人应该回复"思考中"卡片
  3. AI处理完成后更新为最终回复卡片

总结回顾

通过钉钉机器人这个实战案例,我们完整学习了Type元素扩展开发的全流程:

  1. 设计决策:如何选择扩展方式(复用vs新建)
  2. 架构设计:Meta、Type、实例三层架构的职责划分
  3. 技术实现封装:第三方SDK集成、异步处理、参数配置等技术复杂度统统封装到Type元素中
  4. 实例元素:实例元素负责配置具体运行参数

开发者应发散思维,将上述思路应用到其他业务场景中。

进阶思考

手动创建实例元素目录虽然可行,但却繁琐。怎样像官方元素一样,在可视化界面中一键添加和配置新的钉钉机器人实例元素呢?

请参考 开发后端元素可视化编辑器