【集成示例】钉钉端机器人

钉钉机器人集成智能对话机器人大模型问答。

重要

智能对话机器人已支持钉钉机器人的问答能力,零代码即可接入,详情请看:钉钉机器人部署指引

效果展示

概览

image

  1. 调用ApplyForStreamAccessToken接口。参考文档:ApplyForStreamAccessToken - 获取流式调用的连接信息

  2. ApplyForStreamAccessToken接口,返回的连接签名信息有效期2小时,必须在到期前重新获取

  3. 监听并接收钉钉机器人的消息(用户问机器人的消息):机器人接收消息

  4. 发送AI卡片消息:创建并投放卡片

  5. 计算会话接口签名。会话接口签名

  6. SSE流式调用会话接口,监听SSE事件,获取大模型流式输出。参考文档:流式会话接口

  7. 大模型流式接口会多次返回,每次返回都是全量的回复,渲染端应该考虑用新的覆盖旧的。响应参数参考:3 响应参数说明

  8. 更新AI卡片:AI卡片流式更新

示例

示例工程代码

dingtalk-example.zip

如何运行

  1. 本示例工程的运行环境要求为JDK 8,参考文档:在Windows安装JDK

  2. 根据智能对话机器人配置操作完成后,获取示例工程中的参数中智能对话机器人部分的参数

  3. 根据钉钉应用和机器人配置操作完成后,获取示例工程中的参数中钉钉内部应用的参数

  4. 将上面提到的参数填写到示例工程中的com.aliyun.chatbot.channel.DingtalkRobotChatApp类的对应参数上

  5. 运行com.aliyun.chatbot.channel.DingtalkRobotChatApp这个类的主方法

  6. 打开钉钉,通过机器人名称搜索并打开对应的机器人,即可进行问答。或者把机器人添加到企业内部群中,@机器人进行提问

示例工程中的参数

名称

描述

ALIYUN_ACCESS_KEY

阿里云账号AK

ALIYUN_SECRET_KEY

阿里云账号SK

CHATBOT_INSTANCE_ID

机器人id

CHATBOT_AGENT_KEY

业务空间AgentKey,获取地址:业务空间管理

DINGTALK_CLIENT_ID

钉钉企业内部应用的Client ID,在基础信息>凭证与基础信息菜单中获取应用的 Client ID 和 Client Secert

DINGTALK_CLIENT_SECRET

钉钉企业内部应用的Client Secret,在基础信息>凭证与基础信息菜单中获取应用的 Client ID 和 Client Secert

DINGTALK_CARD_TEMP_ID

AI卡片模板id

智能对话机器人配置

  1. 进入智能对话机器人控制台,https://chatbot.console.aliyun.com

  2. 机器人创建,获取机器人id,发布机器人(如无发布按钮则跳过)

    image

  3. 获取业务空间AgentKey,地址:业务空间管理

    image

  4. 阿里云账号AKSK获取,地址:AccessKey

钉钉应用和机器人配置

  1. 开发流程概述

  2. 创建应用

  3. 机器人配置,填写机器人名称等必填项后,配置消息接收模式为 Stream 模式

    image

  4. 为应用申请钉钉开放接口权限,在开发配置>权限管理菜单中需要申请三个权限

    1. 企业内机器人发送消息权限

    2. 互动卡片实例写权限

    3. AI卡片流式更新权限

  5. 基础信息>凭证与基础信息菜单中获取应用的 Client ID 和 Client Secert

  6. 发布机器人后再发布钉钉应用

  7. 搭建卡片模板,获取卡片模板id

FAQ

  1. 发问题给机器人后,机器人无回复

    1. 检查权限是否配置完全。请参考为应用申请钉钉开放接口权限,在开发配置>权限管理菜单中需要申请三个权限

    2. 创建AI卡片后,请确保卡片已保存并发布。

      image

  2. 机器人无法搜索到,请确认机器人已发布,且所在应用也已发布并可见性配置正确

    image