跳到主要内容

集成智能客服到钉钉机器人

信息

本文适合对极态有一定了解的开发者,通过对本文的学习,你将获得以下收获:

  1. JAAP(Jit Ai Application Protocol)有一定程度的理解,有能力遵循JAAP自定义元素族类。
  2. 将智能客服智能体集成到钉钉机器人。建议先完成《5分钟开发一个AI应用(智能客服)》的学习。
  3. 强烈建议准备本地开发环境,方便调试,详情参考本地开发与调试

效果预览

智能体集成到钉钉机器人中


前置准备

钉钉账号与企业创建

  1. 注册并登录钉钉账号。
  2. 创建属于自己的企业。

钉钉开发平台应用创建

  1. 登录钉钉开发者平台
  2. 进入应用开发企业内部应用钉钉应用
  3. 点击创建应用,设置应用名称、应用描述,创建完成后进入应用详情页。
  4. 进入应用能力添加应用能力,找到机器人并添加。
  5. 机器人配置中的消息接收模式选择Stream模式
  6. 发布应用。
  7. 创建一个企业内部群,并添加刚才创建的机器人。
  8. 进入基础信息凭证与基础信息应用凭证。你可以看到Client IDClient Secret,这两个参数将被设计为Type元素的可配置参数。

开发环境准备

  1. 如您尚未完成桌面版安装与激活,请先安装并完成《5分钟开发一个AI应用(智能客服)》快速入门案例。
  2. 使用你喜欢的IDE打开JitNode目录进行本地开发与调试

应用目录位于:

应用目录位置示意
#路径格式
[JitNode安装目录]/home/environs/[EnvId]/[OrgId]/[AppId]/[Version]
#示例
/data/JitNode/home/environs/JED_c1tqsCN7Q5/whwy/myapp/0.0.0
提示

应用目录规则属于JAAP的应用规范的一部分,请参考JAAP了解更多。


元素族类设计

极态开发框架为开发者提供大量开箱即用的元素族类,并提供了对应的可视化配置界面。当已有元素族类无法满足需求时,开发者可以遵循JAAP,定义自己的元素族类。

接下来,我们将定义一个元素族类,实现将智能客服集成到钉钉机器人的业务需求。

Meta元素

fullName:imRobots.meta

所有与三方IM机器人对接的Type元素,其type值都指向imRobots.meta。 Meta元素还负责对Type元素的加载,当然也可以不在Meta元素中实现加载逻辑,平台会自动使用JitNode内置的默认加载器。

Type元素

fullName:imRobots.dingTalkStreamType

集成钉钉机器人SDK,封装消息收发、处理等技术实现,将可配置的参数开放出去(clientIdclientSecret)。 作为Type元素,还需要实现对实例元素的加载逻辑。

实例元素

fullName:imRobots.dingTalkDemo

在配置文件中配置Type元素要求的参数:clientIdclientSecret


元素目录结构

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
└── ...

元素族类实现

导包

本示例需要使用钉钉官方提供的dingtalk_stream包,请在App根目录下的requirements.txt中添加dingtalk-stream依赖。

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

imRobots.meta Meta元素

e.json
{
"backendBundleEntry": ".",
"description": "所有和三方IM机器人对接相关的Type元素,都归属于IM机器人族类",
"title": "IM机器人",
"type": ""
}

imRobots.dingTalkStreamType Type元素

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

imRobots.dingTalkDemo 实例元素

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

打包并查看效果

  1. 删除应用目录中的dist目录。
  2. 重启JitNode桌面端。
  3. 访问应用(路径示例:http://127.0.0.1:8000/whwy/myapp),触发重新打包。
  4. 到钉钉群中发送消息并@机器人,查看效果。