使用教程:消息卡片发送及更新
步骤一:分析卡片需求并创建卡片模板



步骤二:分析卡片模板布局以及搭建卡片模板

卡片头部区搭建




卡片内容区搭建


卡片操作区搭建

**步骤三:**定义模板字段以及绑定数据
定义卡片模板变量字段
字段 | 变量类型 | 描述 |
---|---|---|
brand | 字符串 | 审批二级模块的名称 |
title | 字符串 | 审批标题 |
contents | 对象数组 | 审批内容项。是一个对象数组,对象的结构在下方描述 |
contents[*].label | 字符串 | 审批内容项的标题 |
contents[*].text | 字符串 | 审批内容项的内容 |
date | 字符串 | 审批单的创建时间 |
status | 字符串 | 审批状态 |
detailUrl | 字符串 | 审批详情页的URL |


绑定卡片模板变量
文本变量绑定
${变量}
的格式即可完成绑定:

${loop.变量}
,该语法用来表明当前数据是从对象数组里面取 每一项的字段。按钮变量绑定


按钮点击事件绑定

{"action": "reject"}
),用来让业务系统区分当前是什么操作。卡片链接跳转绑定

**步骤四:**实现卡片创建及投放
POST /v1.0/card/instance/createAndDeliver HTTP/1.1
Host:api.dingtalk.com
x-acs-dingtalk-access-token:fake_token
Content-Type:application/json
{
"userId": "fake_user_id",
"cardTemplateId": "fake_card_template_id",
"outTrackId": "custom_biz_id",
"openSpaceId": "fake_open_conversation_id",
"cardData" : {
"cardParamMap": {
"brand": "智能财务",
"title": "朱小志提交的财务报销",
"contents": [
{
"label": "报销类型",
"text": "差旅费"
},
{
"label": "报销金额",
"text": "1000"
},
{
"label": "报销理由",
"text": "出差费用"
}
],
"date": "2022-05-22 21:20",
"status": "pending",
"detailUrl": "https://dingtalk.com"
}
},
"imGroupOpenSpaceModel" : {
"supportForward" : true,
"lastMessageI18n" : {
"zh_CN" : "朱小志提交的财务报销"
}
},
"imGroupOpenDeliverModel" : {
"robotCode": "fake_robot_code"
}
}
userId
:创建该卡片的用户 idcardTemplateId
:是卡片模板的 ID ,这个在卡片编辑器创建模板时就能够获取到outTrackId
:是卡片的唯一 ID ,这个 ID 需要业务侧来维护,在审批的场景下,可以对应为审批单的 ID;后续如果需要对卡片进行更新,则需要通过该 ID 进行更新openSpaceId
:是所要投放的场域的 ID 。在审批这个例子中,我们需要把它投放到群聊中,因此该 ID 在这里对应的是群的 ID,即 openConversationIdcardData
:是当前卡片的数据,对应到卡片模板上的变量字段。imGroupOpenSpaceModel
:是群聊/单聊场域的场域配置信息,这里可以设置卡片消息是否支持转发(supportForward)、以及消息的 lastMessageimGroupOpenDeliverModel
:是群聊场域的投放配置信息,这里需要设置当前卡片是由哪一个机器人所发出来的(robotCode)步骤五:响应用户点击操作
{
"corpId": "dingXXXXXX",
"outTrackId": "custom_biz_id",
"userId": "XXXXXX",
"value": "{\"cardPrivateData\":{\"actionIds\":[\"1\"]},\"params\":{\"action\":\"agree\"}}"
}
corpId
:点击该按钮的用户的组织outTrackId
:卡片的唯一ID。与发送卡片时的 outTrackId 值是一致的userId
:点击该按钮的用户 IDvalue
:按钮的详细信息。它是一个 JSON 字符串,里面包含了 cardPrivateData 字段,cardPrivateData.actionIds 代表的是当前点击的按钮 ID 。例如在审批的这个例子里面,由于“同意”按钮的 ID 是 1 ,因此这里 actionIds 的值是 ["1"] 。如果你在卡片模板上给按钮配置了回传参数,那么这些参数会在 cardPrivateData.params 里面出现。一般来说,业务系统可以根据 actionIds 以及 params 来确定用户所点击的按钮是哪一个,需要执行 具体操作。{
"cardTemplateId": "templateid",
"outTrackId": "custom_biz_id",
"cardOptions": {
"updateCardDataByKey": true
},
"cardData": {
"cardParamMap": {
"status": "accept"
}
}
}
修改于 2024-01-16 08:57:38