@yaoyuanchao/dingtalk 1.3.12 → 1.3.14

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 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaoyuanchao/dingtalk",
3
- "version": "1.3.12",
3
+ "version": "1.3.14",
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,10 +142,13 @@ export async function createCardInstance(
144
142
  try {
145
143
  const token = await getDingTalkAccessToken(params.clientId, params.clientSecret);
146
144
 
145
+ // Note: cardData must be a JSON string, not an object!
146
+ // cardData is a flat object with variable names as keys (no cardParamMap wrapper)
147
+ const cardDataObj = params.cardData || {};
147
148
  const body: Record<string, any> = {
148
149
  cardTemplateId: params.cardTemplateId,
149
150
  outTrackId: params.outTrackId,
150
- cardData: params.cardData || { cardParamMap: {} },
151
+ cardData: JSON.stringify(cardDataObj),
151
152
  };
152
153
 
153
154
  // Only add callbackType if specified (not needed for basic cards)
@@ -298,9 +299,10 @@ export async function updateCard(
298
299
  try {
299
300
  const token = await getDingTalkAccessToken(params.clientId, params.clientSecret);
300
301
 
302
+ // Note: cardData must be a JSON string, not an object!
301
303
  const body: Record<string, any> = {
302
304
  outTrackId: params.outTrackId,
303
- cardData: params.cardData,
305
+ cardData: JSON.stringify(params.cardData),
304
306
  };
305
307
 
306
308
  if (params.userIdType !== undefined) {
@@ -427,12 +429,13 @@ export async function sendCardMessage(params: {
427
429
  const openSpaceId = buildOpenSpaceId(spaceType, spaceTargetId);
428
430
 
429
431
  // Step 1: Create card instance
432
+ // Note: cardData should be flat object, not wrapped in cardParamMap
430
433
  const createResult = await createCardInstance({
431
434
  clientId: params.clientId,
432
435
  clientSecret: params.clientSecret,
433
436
  cardTemplateId: params.cardTemplateId,
434
437
  outTrackId,
435
- cardData: { cardParamMap: params.cardData },
438
+ cardData: params.cardData,
436
439
  robotCode: params.robotCode,
437
440
  // Note: callbackType not needed for basic cards
438
441
  });