当前位置: 首页 > news >正文

钉钉 ai卡片 stream模式联调

sdk连接

  1. 新建卡片模板
  2. 下载node.js sdk
  3. config.json 配置应用信息 启动项目npm i npm run build npm run start
  4. 连接成功
    在这里插入图片描述

获取卡片回调

  1. 注册卡片回调事件
  2. 调用https://api.dingtalk.com/v1.0/card/instances 创建卡片实例,返回实例Id
//参数结构
{"cardTemplateId": "b7078d27-e321-4ee6-9b2d-ef3cb89cea05.schema","outTrackId": "asdasdas","cardData" : {"cardParamMap" : {"flowStatus" : "3", //ai卡片状态"feedbacks":"","feedbackinput": "","markdowm": "钉钉平台<font color=common_blue1_color>markdown内容</font>**","likeStatus": "","likes": "0"}},"robotCode": "dingimeeh8go8yo8usyc","callbackType":"STREAM"
}
  1. 调用https://api.dingtalk.com/v1.0/card/instances/spaces 新增场域
{"outTrackId" : "asdasdas","imGroupOpenSpaceModel" : { // 群聊场域属性"supportForward" : false, // 是否支持转发"lastMessageI18n" : { // 消息lastMessage"ZH_CN": "卡片","EN_US": "card"}}}
  1. 调用https://api.dingtalk.com/v1.0/card/instances/deliver 投放卡片
{"outTrackId" : "asdasdas","openSpaceId" : "dtv1.card//IM_GROUP.cid5o+bbZdK/80y1V5ESE5Trw==","imGroupOpenDeliverModel" : { // 群聊投放属性"robotCode" : "dingimeeh8go8yo8usyc" // 机器人code}
}

在这里插入图片描述

更新示例

/** 卡片回调 */
client.registerCallbackListener(TOPIC_CARD, async (res) => {// 注册卡片回调事件console.log("收到卡片消息");const accessToken = await client.getAccessToken();let datas = JSON.parse(res.data)let contens = JSON.parse(datas.content)console.log(contens)//更新数据const obj = {} as any //卡片定义回调的字段参数const params = contens.cardPrivateData.paramsif(contens.cardPrivateData.actionIds[0] === 'multiSelect'){obj['feedbacks'] = JSON.stringify(params.multiSelect.index)}else if(contens.cardPrivateData.actionIds[0] === 'input'){obj['feedbackinput'] =  params.input}else {obj['likeStatus'] =  params.action || params.axtionif(params.axtion === 'dislike'){obj['likes'] =  '0'}else {obj['likes'] =  '1'}}const dataJson = {"cardTemplateId": "b7078d27-e321-4ee6-9b2d-ef3cb89cea05.schema","outTrackId": datas.outTrackId,"cardData": {"cardParamMap": obj,"robotCode": "dingimeeh8go8yo8usyc","callbackType": "STREAM"},"cardUpdateOptions": {"updateCardDataByKey": true},}const result = await axios({url: 'https://api.dingtalk.com/v1.0/card/instances',method: "PUT",responseType: "json",data: dataJson,headers: {"x-acs-dingtalk-access-token": accessToken,},});if (result) {console.log("更新回调卡片成功");console.log((result.data));}
});

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 三星Unpacked发布会即将举行:有新款折叠屏手机,还有智能戒指
  • 3W单声道关断模式音频功率放大器AD4150B
  • 如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
  • springboot+vue+mybatis高校宿舍管理系统+PPT+论文+讲解+售后
  • 学习笔记 韩顺平 零基础30天学会Java(2024.7.24)
  • docker 运维查看指定应用log文件位置和名称
  • 设计模式-抽象工厂
  • Ansible的脚本-----playbook剧本【上】
  • org.springframework.context.annotation.ImportSelector的作用是什么?
  • 【数据结构】单链表面试题(Java + 力扣 + 详解)
  • Harmony Next -- 图片选择库:宫格展示、全屏预览
  • 生成对抗网络(Generative Adversarial Network,简称GAN
  • 3dsMax 设置近平面削减,靠近模型之后看不到模型,看很小的模型放大看不到
  • MySQL:增删改查、临时表、授权相关示例
  • 一个注解实现分布式锁加锁
  • (三)从jvm层面了解线程的启动和停止
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • C++类中的特殊成员函数
  • classpath对获取配置文件的影响
  • Cumulo 的 ClojureScript 模块已经成型
  • Druid 在有赞的实践
  • Java编程基础24——递归练习
  • python 装饰器(一)
  • Spark RDD学习: aggregate函数
  • tweak 支持第三方库
  • TypeScript实现数据结构(一)栈,队列,链表
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue的全局变量和全局拦截请求器
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 入口文件开始,分析Vue源码实现
  • 找一份好的前端工作,起点很重要
  • mysql面试题分组并合并列
  • scrapy中间件源码分析及常用中间件大全
  • ​人工智能书单(数学基础篇)
  • # 飞书APP集成平台-数字化落地
  • #{} 和 ${}区别
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (1)STL算法之遍历容器
  • (19)夹钳(用于送货)
  • (6)STL算法之转换
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (附源码)计算机毕业设计高校学生选课系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)从 Java 代码到 Java 堆
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .net与java建立WebService再互相调用
  • @Controller和@RestController的区别?
  • @staticmethod和@classmethod的作用与区别