@yaoyuanchao/dingtalk 1.3.13 → 1.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/card-api.ts +10 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaoyuanchao/dingtalk",
3
- "version": "1.3.13",
3
+ "version": "1.3.15",
4
4
  "type": "module",
5
5
  "description": "DingTalk channel plugin for Clawdbot with Stream Mode support",
6
6
  "license": "MIT",
package/src/card-api.ts CHANGED
@@ -68,10 +68,8 @@ export interface CreateCardInstanceParams {
68
68
  clientSecret: string;
69
69
  cardTemplateId: string;
70
70
  outTrackId: string;
71
- cardData?: {
72
- cardParamMap?: Record<string, string>;
73
- cardMediaIdParamMap?: Record<string, string>;
74
- };
71
+ /** Card data - flat object with variable names as keys */
72
+ cardData?: Record<string, any>;
75
73
  robotCode?: string;
76
74
  callbackType?: "STREAM" | "HTTP";
77
75
  userIdType?: number;
@@ -144,12 +142,13 @@ export async function createCardInstance(
144
142
  try {
145
143
  const token = await getDingTalkAccessToken(params.clientId, params.clientSecret);
146
144
 
147
- // Note: cardData must be a JSON string, not an object!
148
- const cardDataObj = params.cardData || { cardParamMap: {} };
145
+ // cardData is an object with cardParamMap containing the template variables
149
146
  const body: Record<string, any> = {
150
147
  cardTemplateId: params.cardTemplateId,
151
148
  outTrackId: params.outTrackId,
152
- cardData: JSON.stringify(cardDataObj),
149
+ cardData: {
150
+ cardParamMap: params.cardData || {},
151
+ },
153
152
  };
154
153
 
155
154
  // Only add callbackType if specified (not needed for basic cards)
@@ -300,10 +299,10 @@ export async function updateCard(
300
299
  try {
301
300
  const token = await getDingTalkAccessToken(params.clientId, params.clientSecret);
302
301
 
303
- // Note: cardData must be a JSON string, not an object!
302
+ // cardData is an object with cardParamMap
304
303
  const body: Record<string, any> = {
305
304
  outTrackId: params.outTrackId,
306
- cardData: JSON.stringify(params.cardData),
305
+ cardData: params.cardData,
307
306
  };
308
307
 
309
308
  if (params.userIdType !== undefined) {
@@ -430,12 +429,13 @@ export async function sendCardMessage(params: {
430
429
  const openSpaceId = buildOpenSpaceId(spaceType, spaceTargetId);
431
430
 
432
431
  // Step 1: Create card instance
432
+ // Note: cardData should be flat object, not wrapped in cardParamMap
433
433
  const createResult = await createCardInstance({
434
434
  clientId: params.clientId,
435
435
  clientSecret: params.clientSecret,
436
436
  cardTemplateId: params.cardTemplateId,
437
437
  outTrackId,
438
- cardData: { cardParamMap: params.cardData },
438
+ cardData: params.cardData,
439
439
  robotCode: params.robotCode,
440
440
  // Note: callbackType not needed for basic cards
441
441
  });