customer-chat-sdk 1.0.42 → 1.0.43

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.
@@ -53,6 +53,7 @@ export interface BinaryConfig {
53
53
  topic: string;
54
54
  routingKey: string;
55
55
  ttl: number;
56
+ duration: number;
56
57
  }
57
58
  /**
58
59
  * 截图管理器
@@ -67,10 +68,7 @@ export declare class ScreenshotManager {
67
68
  private lastScreenshotTime;
68
69
  private error;
69
70
  private isEnabled;
70
- private isUploading;
71
71
  private uploadError;
72
- private uploadProgress;
73
- private currentUploadConfig;
74
72
  private currentBinaryConfig;
75
73
  private sendToIframeCallback;
76
74
  private worker;
@@ -121,17 +119,9 @@ export declare class ScreenshotManager {
121
119
  */
122
120
  private handleIframeMessage;
123
121
  /**
124
- * 执行截图并上传
125
- */
126
- private takeScreenshotAndUpload;
127
- /**
128
- * 解析二进制配置(新格式)
122
+ * 解析二进制配置
129
123
  */
130
124
  private parseBinaryConfig;
131
- /**
132
- * 解析上传配置
133
- */
134
- private parseUploadConfig;
135
125
  /**
136
126
  * 开始轮询截图
137
127
  */
@@ -291,14 +281,6 @@ export declare class ScreenshotManager {
291
281
  * 移除全局错误处理器
292
282
  */
293
283
  private removeGlobalErrorHandlers;
294
- /**
295
- * 上传截图到 S3
296
- */
297
- private uploadScreenshot;
298
- /**
299
- * 将 base64 data URL 转换为 Blob
300
- */
301
- private dataUrlToBlob;
302
284
  /**
303
285
  * 将 base64 data URL 转换为 ArrayBuffer
304
286
  */
@@ -358,13 +340,8 @@ export declare class ScreenshotManager {
358
340
  lastScreenshotTime: number;
359
341
  error: string | null;
360
342
  isEnabled: boolean;
361
- isUploading: boolean;
362
343
  uploadError: string | null;
363
- uploadProgress: {
364
- success: number;
365
- failed: number;
366
- };
367
- currentUploadConfig: UploadConfig | null;
344
+ currentBinaryConfig: BinaryConfig | null;
368
345
  };
369
346
  }
370
347
  //# sourceMappingURL=ScreenshotManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScreenshotManager.d.ts","sourceRoot":"","sources":["../../src/core/ScreenshotManager.ts"],"names":[],"mappings":"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"}
@@ -14314,11 +14314,8 @@ class ScreenshotManager {
14314
14314
  this.error = null;
14315
14315
  this.isEnabled = false;
14316
14316
  // 上传相关状态
14317
- this.isUploading = false;
14318
14317
  this.uploadError = null;
14319
- this.uploadProgress = { success: 0, failed: 0 };
14320
- this.currentUploadConfig = null;
14321
- this.currentBinaryConfig = null; // 二进制配置(新格式)
14318
+ this.currentBinaryConfig = null; // 二进制配置
14322
14319
  this.sendToIframeCallback = null; // 发送消息到 iframe 的回调函数
14323
14320
  // WebWorker 相关
14324
14321
  this.worker = null;
@@ -14552,9 +14549,8 @@ class ScreenshotManager {
14552
14549
  // 尝试解析为二进制配置(新格式)
14553
14550
  const binaryConfig = this.parseBinaryConfig(event.data.data);
14554
14551
  if (binaryConfig) {
14555
- // 新格式:二进制配置
14552
+ // 二进制配置
14556
14553
  this.currentBinaryConfig = binaryConfig;
14557
- this.currentUploadConfig = null; // 清除旧格式配置
14558
14554
  // 根据 ttl 判断是否开启截图功能
14559
14555
  const currentTime = Date.now();
14560
14556
  const isValid = binaryConfig.ttl > 0 && binaryConfig.ttl > currentTime;
@@ -14566,8 +14562,8 @@ class ScreenshotManager {
14566
14562
  }
14567
14563
  this.isEnabled = true;
14568
14564
  }
14569
- // 设置动态轮询间隔
14570
- this.dynamicInterval = this.options.interval;
14565
+ // 设置动态轮询间隔(使用配置中的 duration)
14566
+ this.dynamicInterval = binaryConfig.duration || this.options.interval;
14571
14567
  // 计算剩余有效时间(毫秒)
14572
14568
  const remainingTime = binaryConfig.ttl - currentTime;
14573
14569
  // 启动或更新截图轮询
@@ -14612,73 +14608,9 @@ class ScreenshotManager {
14612
14608
  }
14613
14609
  return;
14614
14610
  }
14615
- // 旧格式:解析上传配置
14616
- const config = this.parseUploadConfig(event.data.data);
14617
- if (!config) {
14618
- console.error('📸 [iframe] 解析配置失败');
14619
- this.uploadError = '解析上传配置失败';
14620
- return;
14621
- }
14622
- // 保存当前配置
14623
- this.currentUploadConfig = config;
14624
- this.currentBinaryConfig = null; // 清除二进制配置
14625
- // 根据 ttl 判断是否开启截图功能
14626
- // ttl == 0 表示禁用,ttl > 0 且大于当前时间表示有效
14627
- const currentTime = Date.now();
14628
- const isValid = config.ttl > 0 && config.ttl > currentTime;
14629
- if (isValid) {
14630
- // 启用截图功能
14631
- if (!this.isEnabled) {
14632
- if (!this.options.silentMode) {
14633
- console.log('📸 [iframe] 启用截图功能');
14634
- }
14635
- this.isEnabled = true;
14636
- }
14637
- // 设置动态轮询间隔(使用 duration,单位:毫秒)
14638
- this.dynamicInterval = config.duration || this.options.interval;
14639
- // 计算剩余有效时间(毫秒)
14640
- const remainingTime = config.ttl - currentTime;
14641
- // 启动或更新截图轮询
14642
- if (!this.options.silentMode) {
14643
- const remainingMinutes = Math.ceil(remainingTime / 60000);
14644
- console.log(`📸 [iframe] 设置轮询间隔: ${this.dynamicInterval}ms,剩余有效时间: ${remainingMinutes}分钟`);
14645
- }
14646
- // 先执行一次截图,等待完成后再上传
14647
- this.takeScreenshotAndUpload(config);
14648
- // 设置过期定时器
14649
- if (this.expirationTimer) {
14650
- clearTimeout(this.expirationTimer);
14651
- this.expirationTimer = null;
14652
- }
14653
- this.expirationTimer = setTimeout(() => {
14654
- if (!this.options.silentMode) {
14655
- console.log('📸 [iframe] 上传配置已过期,停止截图');
14656
- }
14657
- this.stopScreenshot();
14658
- this.isEnabled = false;
14659
- this.currentUploadConfig = null;
14660
- this.expirationTimer = null;
14661
- }, remainingTime);
14662
- }
14663
- else {
14664
- // 禁用截图功能(ttl == 0 或已过期)
14665
- if (!this.options.silentMode) {
14666
- if (config.ttl === 0) {
14667
- console.log('📸 [iframe] ttl == 0,禁用截图功能');
14668
- }
14669
- else {
14670
- console.log('📸 [iframe] ttl 已过期,禁用截图功能');
14671
- }
14672
- }
14673
- this.stopScreenshot();
14674
- this.isEnabled = false;
14675
- this.currentUploadConfig = null;
14676
- if (this.expirationTimer) {
14677
- clearTimeout(this.expirationTimer);
14678
- this.expirationTimer = null;
14679
- }
14680
- return;
14681
- }
14611
+ // 如果不是二进制配置格式,记录错误
14612
+ console.error('📸 [iframe] 解析配置失败:未识别的配置格式');
14613
+ this.uploadError = '解析配置失败:仅支持二进制配置格式';
14682
14614
  }
14683
14615
  catch (error) {
14684
14616
  console.error('📸 [iframe] 处理消息失败:', error);
@@ -14686,63 +14618,7 @@ class ScreenshotManager {
14686
14618
  }
14687
14619
  }
14688
14620
  /**
14689
- * 执行截图并上传
14690
- */
14691
- async takeScreenshotAndUpload(config) {
14692
- // 如果已经在运行,先停止再重新开始(更新间隔)
14693
- if (this.isRunning) {
14694
- if (!this.options.silentMode) {
14695
- console.log(`📸 更新轮询间隔: ${this.dynamicInterval || this.options.interval}ms`);
14696
- }
14697
- this.stopScreenshot();
14698
- }
14699
- // 启动轮询
14700
- this.startScreenshot(this.dynamicInterval || config.duration || this.options.interval);
14701
- // 等待第一次截图完成
14702
- try {
14703
- const success = await this.takeScreenshot();
14704
- if (success) {
14705
- // 截图完成后,等待一小段时间确保数据已保存
14706
- await new Promise(resolve => setTimeout(resolve, 100));
14707
- // 获取最新截图并上传
14708
- const latestScreenshot = this.getLatestScreenshot();
14709
- if (latestScreenshot) {
14710
- // 执行上传
14711
- this.isUploading = true;
14712
- this.uploadError = null;
14713
- this.uploadScreenshot(latestScreenshot, config)
14714
- .then((success) => {
14715
- if (success) {
14716
- if (!this.options.silentMode) {
14717
- console.log('📸 [iframe] ✅ 截图上传成功');
14718
- }
14719
- }
14720
- else {
14721
- console.error('📸 [iframe] ❌ 截图上传失败');
14722
- }
14723
- })
14724
- .catch((error) => {
14725
- console.error('📸 [iframe] ❌ 上传异常:', error);
14726
- this.uploadError = error instanceof Error ? error.message : String(error);
14727
- })
14728
- .finally(() => {
14729
- this.isUploading = false;
14730
- });
14731
- }
14732
- else {
14733
- if (!this.options.silentMode) {
14734
- console.warn('📸 [iframe] 截图完成但未找到截图数据');
14735
- }
14736
- }
14737
- }
14738
- }
14739
- catch (error) {
14740
- console.error('📸 [iframe] 截图失败:', error);
14741
- this.uploadError = error instanceof Error ? error.message : String(error);
14742
- }
14743
- }
14744
- /**
14745
- * 解析二进制配置(新格式)
14621
+ * 解析二进制配置
14746
14622
  */
14747
14623
  parseBinaryConfig(data) {
14748
14624
  try {
@@ -14759,7 +14635,10 @@ class ScreenshotManager {
14759
14635
  type: config.type,
14760
14636
  topic: config.topic,
14761
14637
  routingKey: config.routingKey,
14762
- ttl: config.ttl
14638
+ ttl: config.ttl,
14639
+ duration: typeof config.duration === 'number' && config.duration > 0
14640
+ ? config.duration
14641
+ : this.options.interval // 如果没有提供或无效,使用默认间隔
14763
14642
  };
14764
14643
  }
14765
14644
  return null;
@@ -14769,38 +14648,6 @@ class ScreenshotManager {
14769
14648
  return null;
14770
14649
  }
14771
14650
  }
14772
- /**
14773
- * 解析上传配置
14774
- */
14775
- parseUploadConfig(data) {
14776
- try {
14777
- const configStr = typeof data === 'string' ? data : JSON.stringify(data);
14778
- const config = JSON.parse(configStr);
14779
- if (!config.uploadUrl || !config.contentType) {
14780
- console.error('📸 [上传] 配置缺少必需字段:', config);
14781
- return null;
14782
- }
14783
- // 确保 duration 存在,如果没有则使用默认值
14784
- if (typeof config.duration !== 'number' || config.duration <= 0) {
14785
- config.duration = this.options.interval;
14786
- }
14787
- // 确保 ttl 存在,如果没有则尝试从 expirationMinutes 转换(兼容旧格式)
14788
- if (typeof config.ttl !== 'number') {
14789
- if (typeof config.expirationMinutes === 'number' && config.expirationMinutes > 0) {
14790
- // 兼容旧格式:将 expirationMinutes 转换为 ttl
14791
- config.ttl = Date.now() + config.expirationMinutes * 60 * 1000;
14792
- }
14793
- else {
14794
- config.ttl = 0; // 默认禁用
14795
- }
14796
- }
14797
- return config;
14798
- }
14799
- catch (error) {
14800
- console.error('📸 [上传] 解析配置失败:', error, '原始数据:', data);
14801
- return null;
14802
- }
14803
- }
14804
14651
  /**
14805
14652
  * 开始轮询截图
14806
14653
  */
@@ -14830,16 +14677,6 @@ class ScreenshotManager {
14830
14677
  if (this.isRunning && this.isEnabled && !document.hidden) {
14831
14678
  try {
14832
14679
  await this.takeScreenshot();
14833
- // 如果配置了上传,且当前有上传配置,自动上传
14834
- if (this.currentUploadConfig) {
14835
- const latestScreenshot = this.getLatestScreenshot();
14836
- if (latestScreenshot && !this.isUploading) {
14837
- this.uploadScreenshot(latestScreenshot, this.currentUploadConfig)
14838
- .catch((error) => {
14839
- console.error('📸 [轮询] 自动上传失败:', error);
14840
- });
14841
- }
14842
- }
14843
14680
  // 如果配置了二进制模式,发送二进制数据
14844
14681
  if (this.currentBinaryConfig) {
14845
14682
  const latestScreenshot = this.getLatestScreenshot();
@@ -16922,62 +16759,6 @@ class ScreenshotManager {
16922
16759
  this.globalRejectionHandler = null;
16923
16760
  }
16924
16761
  }
16925
- /**
16926
- * 上传截图到 S3
16927
- */
16928
- async uploadScreenshot(dataUrl, config) {
16929
- try {
16930
- if (!this.options.silentMode) {
16931
- console.log('📸 [上传] 开始上传截图...');
16932
- }
16933
- const blob = this.dataUrlToBlob(dataUrl, config.contentType);
16934
- // 使用标准的 fetch 方法(与 demo 代码一致)
16935
- const response = await fetch(config.uploadUrl, {
16936
- method: 'PUT',
16937
- body: blob,
16938
- headers: {
16939
- 'Content-Type': config.contentType
16940
- }
16941
- });
16942
- if (response.status === 200 || response.status === 204) {
16943
- if (!this.options.silentMode) {
16944
- console.log('📸 [上传] ✅ 上传成功');
16945
- }
16946
- this.uploadProgress.success++;
16947
- return true;
16948
- }
16949
- else {
16950
- const errorText = await response.text().catch(() => '');
16951
- const errorMsg = `上传失败: HTTP ${response.status} ${response.statusText}${errorText ? ` - ${errorText.substring(0, 200)}` : ''}`;
16952
- console.error('📸 [上传] ❌', errorMsg);
16953
- this.uploadError = errorMsg;
16954
- this.uploadProgress.failed++;
16955
- return false;
16956
- }
16957
- }
16958
- catch (error) {
16959
- const errorMsg = error instanceof Error ? error.message : String(error);
16960
- console.error('📸 [上传] ❌ 上传异常:', errorMsg);
16961
- this.uploadError = `上传异常: ${errorMsg}`;
16962
- this.uploadProgress.failed++;
16963
- return false;
16964
- }
16965
- }
16966
- /**
16967
- * 将 base64 data URL 转换为 Blob
16968
- */
16969
- dataUrlToBlob(dataUrl, contentType) {
16970
- const arr = dataUrl.split(',');
16971
- const mimeMatch = arr[0].match(/:(.*?);/);
16972
- const mime = mimeMatch ? mimeMatch[1] : contentType;
16973
- const bstr = atob(arr[1]);
16974
- let n = bstr.length;
16975
- const u8arr = new Uint8Array(n);
16976
- while (n--) {
16977
- u8arr[n] = bstr.charCodeAt(n);
16978
- }
16979
- return new Blob([u8arr], { type: mime });
16980
- }
16981
16762
  /**
16982
16763
  * 将 base64 data URL 转换为 ArrayBuffer
16983
16764
  */
@@ -17277,10 +17058,8 @@ class ScreenshotManager {
17277
17058
  lastScreenshotTime: this.lastScreenshotTime,
17278
17059
  error: this.error,
17279
17060
  isEnabled: this.isEnabled,
17280
- isUploading: this.isUploading,
17281
17061
  uploadError: this.uploadError,
17282
- uploadProgress: { ...this.uploadProgress },
17283
- currentUploadConfig: this.currentUploadConfig
17062
+ currentBinaryConfig: this.currentBinaryConfig
17284
17063
  };
17285
17064
  }
17286
17065
  }