@zeewain/3d-avatar-sdk 1.2.1 → 1.2.3

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 (55) hide show
  1. package/README.md +3 -4
  2. package/dist/assets/Build/webgl.data.unityweb +0 -0
  3. package/dist/assets/Build/webgl.framework.js.unityweb +0 -0
  4. package/dist/assets/Build/webgl.wasm.unityweb +0 -0
  5. package/dist/examples/test-umd/index.html +762 -0
  6. package/dist/examples/test-vue2/.eslintignore +45 -0
  7. package/dist/examples/test-vue2/.eslintrc.js +174 -0
  8. package/dist/examples/test-vue2/.stylelintignore +50 -0
  9. package/dist/examples/test-vue2/.stylelintrc.js +79 -0
  10. package/dist/examples/test-vue2/README.md +139 -0
  11. package/dist/examples/test-vue2/babel.config.js +14 -0
  12. package/dist/examples/test-vue2/package.json +53 -0
  13. package/dist/examples/test-vue2/pnpm-lock.yaml +8776 -0
  14. package/dist/examples/test-vue2/public/index.html +19 -0
  15. package/dist/examples/test-vue2/setup.js +170 -0
  16. package/dist/examples/test-vue2/src/App.vue +943 -0
  17. package/dist/examples/test-vue2/src/components/BroadcastAPI.vue +666 -0
  18. package/dist/examples/test-vue2/src/components/CameraAPI.vue +414 -0
  19. package/dist/examples/test-vue2/src/components/GlobalConfig.vue +200 -0
  20. package/dist/examples/test-vue2/src/components/InfoCards.vue +294 -0
  21. package/dist/examples/test-vue2/src/components/InitAPI.vue +334 -0
  22. package/dist/examples/test-vue2/src/components/LogPanel.vue +249 -0
  23. package/dist/examples/test-vue2/src/components/MotionControlAPI.vue +400 -0
  24. package/dist/examples/test-vue2/src/components/UnityPreview.vue +201 -0
  25. package/dist/examples/test-vue2/src/main.js +16 -0
  26. package/dist/examples/test-vue2/vue.config.js +41 -0
  27. package/dist/examples/test-vue3/.eslintrc +3 -0
  28. package/dist/examples/test-vue3/.stylelintignore +3 -0
  29. package/dist/examples/test-vue3/.stylelintrc +48 -0
  30. package/dist/examples/test-vue3/README.md +236 -0
  31. package/dist/examples/test-vue3/env.d.ts +8 -0
  32. package/dist/examples/test-vue3/index.html +95 -0
  33. package/dist/examples/test-vue3/package.json +55 -0
  34. package/dist/examples/test-vue3/pnpm-lock.yaml +4636 -0
  35. package/dist/examples/test-vue3/setup.js +167 -0
  36. package/dist/examples/test-vue3/src/App.vue +962 -0
  37. package/dist/examples/test-vue3/src/components/BroadcastAPI.vue +636 -0
  38. package/dist/examples/test-vue3/src/components/CameraAPI.vue +376 -0
  39. package/dist/examples/test-vue3/src/components/GlobalConfig.vue +213 -0
  40. package/dist/examples/test-vue3/src/components/InfoCards.vue +288 -0
  41. package/dist/examples/test-vue3/src/components/InitAPI.vue +339 -0
  42. package/dist/examples/test-vue3/src/components/LogPanel.vue +236 -0
  43. package/dist/examples/test-vue3/src/components/MotionControlAPI.vue +373 -0
  44. package/dist/examples/test-vue3/src/components/UnityPreview.vue +189 -0
  45. package/dist/examples/test-vue3/src/main.ts +12 -0
  46. package/dist/examples/test-vue3/src/types.ts +9 -0
  47. package/dist/examples/test-vue3/tsconfig.json +44 -0
  48. package/dist/examples/test-vue3/tsconfig.node.json +14 -0
  49. package/dist/examples/test-vue3/vite.config.ts +75 -0
  50. package/dist/index.d.ts +15 -9
  51. package/dist/index.es5.js +75 -27
  52. package/dist/index.es5.umd.js +75 -27
  53. package/dist/index.esm.js +78 -22
  54. package/dist/index.umd.cjs +78 -22
  55. package/package.json +4 -3
@@ -0,0 +1,189 @@
1
+ <template>
2
+ <el-card class="unity-preview" shadow="hover">
3
+ <template #header>
4
+ <div class="card-header">
5
+ <span>Unity 预览</span>
6
+ <el-tag v-if="sdkStatus.unityLoaded" type="success" size="default">已加载</el-tag>
7
+ <el-tag v-else type="info" size="default">未加载</el-tag>
8
+ </div>
9
+ </template>
10
+
11
+ <div class="unity-container-wrapper" v-loading="sdkStatus.unityLoaded && !sdkStatus.avatarLoaded && loadingProgress === 1" element-loading-text="数字人加载中,请稍候..." element-loading-background="rgba(0, 0, 0, 0)">
12
+ <div id="unity-container" class="unity-container">
13
+ <div v-if="!sdkStatus.unityLoaded" class="unity-tip">
14
+ <i class="el-icon-monitor"></i>
15
+ <p>Unity 内容将在此处加载...</p>
16
+ </div>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="unity-controls">
21
+ <el-button-group>
22
+ <el-button
23
+ type="warning"
24
+ size="default"
25
+ icon="close"
26
+ :disabled="!sdkStatus.avatarLoaded"
27
+ @click="handleUnloadAvatar"
28
+ >
29
+ 卸载Avatar
30
+ </el-button>
31
+ <el-button
32
+ type="danger"
33
+ size="default"
34
+ icon="delete"
35
+ :disabled="!sdkStatus.unityLoaded"
36
+ @click="handleDestroySDK"
37
+ >
38
+ 销毁实例
39
+ </el-button>
40
+ </el-button-group>
41
+ </div>
42
+
43
+ <!-- 加载进度显示 -->
44
+ <div v-if="loadingProgress > 0 && loadingProgress < 1" class="loading-progress">
45
+ <el-progress
46
+ :percentage="Math.round(loadingProgress * 100)"
47
+ :stroke-width="6"
48
+ text-inside
49
+ />
50
+ <p class="progress-text">Unity 加载中,请稍候...</p>
51
+ </div>
52
+ </el-card>
53
+ </template>
54
+
55
+ <script setup lang="ts">
56
+ import { defineProps, defineEmits } from 'vue';
57
+
58
+ interface ISDKStatus {
59
+ unityLoaded: boolean;
60
+ avatarLoaded: boolean;
61
+ }
62
+
63
+ const props = defineProps<{
64
+ sdkStatus: ISDKStatus;
65
+ loadingProgress: number;
66
+ }>();
67
+
68
+ const emit = defineEmits<{
69
+ (e: 'unload-avatar'): void;
70
+ (e: 'destroy-sdk'): void;
71
+ }>();
72
+
73
+ function handleUnloadAvatar() {
74
+ emit('unload-avatar');
75
+ }
76
+
77
+ function handleDestroySDK() {
78
+ emit('destroy-sdk');
79
+ }
80
+ </script>
81
+
82
+ <style lang="scss" scoped>
83
+ // Unity预览
84
+ .unity-preview {
85
+ position: relative;
86
+ display: flex;
87
+ width: 100%;
88
+ height: 100%;
89
+ overflow: hidden;
90
+ flex-direction: column;
91
+ .card-header {
92
+ display: flex;
93
+ justify-content: space-between;
94
+ align-items: center;
95
+ font-weight: 600;
96
+ }
97
+ :deep(.el-card__body) {
98
+ display: flex;
99
+ width: 100%;
100
+ height: 100%;
101
+ flex-direction: column;
102
+ box-sizing: border-box;
103
+ }
104
+ .unity-container-wrapper {
105
+ position: relative;
106
+ width: 100%;
107
+ max-height: 600px; // 添加最大高度限制
108
+ margin-bottom: 15px;
109
+ overflow: hidden; // 防止内容溢出
110
+ flex: 1;
111
+ }
112
+ .unity-container {
113
+ position: relative;
114
+ width: 100%;
115
+ height: 100%;
116
+ max-height: 100%; // 确保不超过父容器
117
+ overflow: hidden;
118
+ background-color: #000;
119
+ border-radius: 4px;
120
+ }
121
+ .unity-tip {
122
+ position: absolute;
123
+ top: 50%;
124
+ left: 50%;
125
+ color: white; // 确保在黑色背景上文字可见
126
+ text-align: center;
127
+ transform: translate(-50%, -50%);
128
+ i {
129
+ margin-bottom: 10px;
130
+ font-size: 48px;
131
+ }
132
+ p {
133
+ margin: 0;
134
+ font-size: 14px;
135
+ }
136
+ }
137
+ .unity-controls {
138
+ display: flex;
139
+ justify-content: center;
140
+ padding-top: 10px;
141
+ }
142
+ .loading-progress {
143
+ position: absolute;
144
+ top: 50%;
145
+ left: 50%;
146
+ width: 80%;
147
+ transform: translate(-50%, -50%);
148
+ text-align: center;
149
+ z-index: 10;
150
+ .progress-text {
151
+ color: white;
152
+ margin-top: 10px;
153
+ font-size: 14px;
154
+ }
155
+ }
156
+ }
157
+
158
+ // 移动端优化
159
+ @media screen and (width <= 768px) {
160
+ .unity-preview {
161
+ .unity-container-wrapper {
162
+ height: 250px;
163
+ max-height: 250px; // 确保移动端不会超过设定高度
164
+ flex: none;
165
+ overflow: hidden; // 防止内容溢出
166
+ }
167
+ .unity-controls {
168
+ .el-button-group {
169
+ display: flex;
170
+ flex-direction: column;
171
+ .el-button {
172
+ margin: 2px 0;
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+
179
+ // 平板端优化
180
+ @media screen and (width <= 992px) and (width > 768px) {
181
+ .unity-preview {
182
+ .unity-container-wrapper {
183
+ height: 300px; // 平板端适中高度
184
+ max-height: 300px; // 确保平板端不会超过设定高度
185
+ overflow: hidden; // 防止内容溢出
186
+ }
187
+ }
188
+ }
189
+ </style>
@@ -0,0 +1,12 @@
1
+ import { createApp } from 'vue'
2
+ import App from './App.vue'
3
+
4
+ // Element Plus 样式
5
+ import 'element-plus/dist/index.css'
6
+
7
+ // 创建Vue应用实例
8
+ const app = createApp(App)
9
+
10
+ // 挂载应用
11
+ app.mount('#app')
12
+
@@ -0,0 +1,9 @@
1
+ export interface IGlobalConfig {
2
+ token: string;
3
+ avatarCode: string;
4
+ env: 'dev' | 'test' | 'prod' | 'custom';
5
+ webglPath?:string;
6
+ apiBaseUrl?:string;
7
+ resourcesUrl?:string;
8
+ idleMotionListString?:string;
9
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "useDefineForClassFields": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "Node",
7
+ "strict": true,
8
+ "jsx": "preserve",
9
+ "sourceMap": true,
10
+ "resolveJsonModule": true,
11
+ "isolatedModules": true,
12
+ "esModuleInterop": true,
13
+ "lib": [
14
+ "ESNext",
15
+ "DOM"
16
+ ],
17
+ "skipLibCheck": true,
18
+ "baseUrl": "./",
19
+ "paths": {
20
+ "@/*": [
21
+ "src/*"
22
+ ],
23
+ "#/*": [
24
+ "typings/*"
25
+ ]
26
+ },
27
+ "types": [
28
+ "vite/client", // https://cn.vitejs.dev/guide/features.html#typescript-compiler-options
29
+ "element-plus/global",
30
+ ]
31
+ },
32
+ "include": [
33
+ "src/**/*.ts",
34
+ "src/**/*.d.ts",
35
+ "src/**/*.tsx",
36
+ "src/**/*.vue",
37
+ "typings/**/*.d.ts"
38
+ ],
39
+ "references": [
40
+ {
41
+ "path": "./tsconfig.node.json"
42
+ }
43
+ ]
44
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "module": "ESNext",
5
+ "moduleResolution": "Node",
6
+ "esModuleInterop": true,
7
+ "resolveJsonModule": true
8
+ },
9
+ "include": [
10
+ "package.json",
11
+ "vite.config.ts",
12
+ "vite/**/*.ts"
13
+ ]
14
+ }
@@ -0,0 +1,75 @@
1
+ import { resolve } from 'path';
2
+ import { URL, fileURLToPath } from 'node:url';
3
+ import { defineConfig, loadEnv } from 'vite';
4
+ import vue from '@vitejs/plugin-vue';
5
+ import AutoImport from 'unplugin-auto-import/vite';
6
+ import Components from 'unplugin-vue-components/vite';
7
+ import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
8
+
9
+ // https://vitejs.dev/config/
10
+ export default defineConfig(({ mode, command }) =>
11
+ {
12
+ // 加载环境变量
13
+ const env = loadEnv(mode, process.cwd(), '');
14
+
15
+ // 检查是否使用本地SDK开发模式
16
+ const useLocalSDK = env.VITE_USE_LOCAL_SDK === 'true';
17
+ const localSDKPath = resolve(fileURLToPath(new URL('.', import.meta.url)), '../../dist/index.esm.js');
18
+
19
+ console.log('🔧 Vite 配置信息:');
20
+ console.log(` - 运行模式: ${mode}`);
21
+ console.log(` - 使用本地 SDK: ${useLocalSDK ? '✅ 是' : '❌ 否'}`);
22
+ if (useLocalSDK)
23
+ {
24
+ console.log(` - 本地 SDK 路径: ${localSDKPath}`);
25
+ console.log(' - 运行模式: 开发模式');
26
+ }
27
+ else
28
+ {
29
+ console.log(' - 运行模式: npm包模式');
30
+ }
31
+
32
+ return {
33
+ base: env.VITE_PUBLIC_PATH || './',
34
+ plugins: [
35
+ vue(),
36
+ AutoImport({
37
+ resolvers: [ElementPlusResolver()],
38
+ imports: [
39
+ 'vue',
40
+ '@vueuse/core'
41
+ ],
42
+ dts: true
43
+ }),
44
+ Components({
45
+ resolvers: [ElementPlusResolver()],
46
+ dts: true
47
+ })
48
+ ],
49
+ resolve: {
50
+ alias: {
51
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
52
+ // 如果启用本地开发模式,将 SDK 指向本地构建版本
53
+ ...(useLocalSDK && {
54
+ '@zeewain/3d-avatar-sdk': localSDKPath
55
+ })
56
+ }
57
+ },
58
+ server: {
59
+ open: true,
60
+ port: 20054,
61
+ proxy: {
62
+ '/proxy': {
63
+ target: env.VITE_APP_API_BASEURL,
64
+ changeOrigin: command === 'serve' && env.VITE_OPEN_PROXY === 'true',
65
+ rewrite: path => path.replace(/\/proxy/, '')
66
+ }
67
+ }
68
+
69
+ },
70
+ build: {
71
+ outDir: mode === 'production' ? 'dist' : `dist-${mode}`,
72
+ sourcemap: false,
73
+ }
74
+ }
75
+ });
package/dist/index.d.ts CHANGED
@@ -956,13 +956,6 @@ declare class BroadcastService extends UnityBaseService<BroadcastOperationType>
956
956
  destroy(): void;
957
957
  /** 全局回调函数名称 */
958
958
  protected get callbackFunctionName(): string;
959
- /**
960
- * 获取API基础URL
961
- * @returns string 返回当前环境的API基础URL
962
- * @description 根据当前环境配置获取API基础URL
963
- * @private
964
- */
965
- private getApiBaseUrl;
966
959
  /**
967
960
  * 获取播报API路径
968
961
  * @param type - 播报类型
@@ -987,6 +980,13 @@ declare class BroadcastService extends UnityBaseService<BroadcastOperationType>
987
980
  * @private
988
981
  */
989
982
  private handleError;
983
+ /**
984
+ * 处理播报错误
985
+ * @param errorCode - 错误码
986
+ * @description 处理播报过程中的错误
987
+ * @private
988
+ */
989
+ private handleBroadcastError;
990
990
  }
991
991
 
992
992
  /**
@@ -1020,7 +1020,7 @@ declare enum NetworkErrorCode {
1020
1020
  CONNECTION_FAILED = 1001,
1021
1021
  /** 请求超时 */
1022
1022
  REQUEST_TIMEOUT = 1002,
1023
- /** 服务器错误 */
1023
+ /** 服务错误 */
1024
1024
  SERVER_ERROR = 1003,
1025
1025
  /** 未授权访问 */
1026
1026
  UNAUTHORIZED = 1004
@@ -1040,7 +1040,13 @@ declare enum OperationErrorCode {
1040
1040
  /** 操作超时 */
1041
1041
  OPERATION_TIMEOUT = 2004,
1042
1042
  /** 操作被取消 */
1043
- OPERATION_CANCELLED = 2005
1043
+ OPERATION_CANCELLED = 2005,
1044
+ /** 用户权益额度不存在 */
1045
+ BROADCAST_EQUITY_NOT_EXIST = 2006,
1046
+ /** 用户权益额度不足 */
1047
+ BROADCAST_EQUITY_NOT_ENOUGH = 2007,
1048
+ /** 用户权益额度冻结失败 */
1049
+ BROADCAST_EQUITY_FREEZE_FAILED = 2008
1044
1050
  }
1045
1051
  /**
1046
1052
  * 资源错误码 (3xxx)
package/dist/index.es5.js CHANGED
@@ -12147,7 +12147,7 @@ var ZEEAvatarSDKLib = (function (exports) {
12147
12147
  NetworkErrorCode[NetworkErrorCode["CONNECTION_FAILED"] = 1001] = "CONNECTION_FAILED";
12148
12148
  /** 请求超时 */
12149
12149
  NetworkErrorCode[NetworkErrorCode["REQUEST_TIMEOUT"] = 1002] = "REQUEST_TIMEOUT";
12150
- /** 服务器错误 */
12150
+ /** 服务错误 */
12151
12151
  NetworkErrorCode[NetworkErrorCode["SERVER_ERROR"] = 1003] = "SERVER_ERROR";
12152
12152
  /** 未授权访问 */
12153
12153
  NetworkErrorCode[NetworkErrorCode["UNAUTHORIZED"] = 1004] = "UNAUTHORIZED";
@@ -12169,6 +12169,12 @@ var ZEEAvatarSDKLib = (function (exports) {
12169
12169
  OperationErrorCode[OperationErrorCode["OPERATION_TIMEOUT"] = 2004] = "OPERATION_TIMEOUT";
12170
12170
  /** 操作被取消 */
12171
12171
  OperationErrorCode[OperationErrorCode["OPERATION_CANCELLED"] = 2005] = "OPERATION_CANCELLED";
12172
+ /** 用户权益额度不存在 */
12173
+ OperationErrorCode[OperationErrorCode["BROADCAST_EQUITY_NOT_EXIST"] = 2006] = "BROADCAST_EQUITY_NOT_EXIST";
12174
+ /** 用户权益额度不足 */
12175
+ OperationErrorCode[OperationErrorCode["BROADCAST_EQUITY_NOT_ENOUGH"] = 2007] = "BROADCAST_EQUITY_NOT_ENOUGH";
12176
+ /** 用户权益额度冻结失败 */
12177
+ OperationErrorCode[OperationErrorCode["BROADCAST_EQUITY_FREEZE_FAILED"] = 2008] = "BROADCAST_EQUITY_FREEZE_FAILED";
12172
12178
  })(exports.OperationErrorCode || (exports.OperationErrorCode = {}));
12173
12179
  /**
12174
12180
  * 资源错误码 (3xxx)
@@ -12254,6 +12260,15 @@ var ZEEAvatarSDKLib = (function (exports) {
12254
12260
  }, _a[exports.OperationErrorCode.OPERATION_CANCELLED] = {
12255
12261
  category: exports.ErrorCategory.OPERATION,
12256
12262
  message: '操作被取消'
12263
+ }, _a[exports.OperationErrorCode.BROADCAST_EQUITY_NOT_EXIST] = {
12264
+ category: exports.ErrorCategory.OPERATION,
12265
+ message: '用户权益额度不存在'
12266
+ }, _a[exports.OperationErrorCode.BROADCAST_EQUITY_NOT_ENOUGH] = {
12267
+ category: exports.ErrorCategory.OPERATION,
12268
+ message: '用户权益额度不足'
12269
+ }, _a[exports.OperationErrorCode.BROADCAST_EQUITY_FREEZE_FAILED] = {
12270
+ category: exports.ErrorCategory.OPERATION,
12271
+ message: '用户权益额度冻结失败'
12257
12272
  },
12258
12273
  // 资源错误
12259
12274
  _a[exports.ResourceErrorCode.LOAD_FAILED] = {
@@ -12851,7 +12866,7 @@ var ZEEAvatarSDKLib = (function (exports) {
12851
12866
  console.warn("[Unity Warning] ".concat(message), data);
12852
12867
  };
12853
12868
  SimpleLogger.prototype.error = function (message, error, data) {
12854
- console.error("[Unity Error] ".concat(message), error, data);
12869
+ console.error("[Unity Error] ".concat(message), error, error instanceof SDKError ? error.code : null, data);
12855
12870
  };
12856
12871
  return SimpleLogger;
12857
12872
  }();
@@ -13235,6 +13250,7 @@ var ZEEAvatarSDKLib = (function (exports) {
13235
13250
  /**
13236
13251
  * 获取指定环境的配置
13237
13252
  * @param env - 环境类型,默认为'dev'
13253
+ * @param withApiModule - 是否包含API模块路径
13238
13254
  * @returns 返回对应环境的配置对象
13239
13255
  * @example
13240
13256
  * ```typescript
@@ -13242,17 +13258,17 @@ var ZEEAvatarSDKLib = (function (exports) {
13242
13258
  * console.log(config.apiBaseUrl); // https://aiip.zeewain.com/api/dh-talker
13243
13259
  * ```
13244
13260
  */
13245
- function getEnvConfig(env, withModule) {
13261
+ function getEnvConfig(env, withApiModule) {
13246
13262
  if (env === void 0) {
13247
13263
  env = 'dev';
13248
13264
  }
13249
- if (withModule === void 0) {
13250
- withModule = true;
13265
+ if (withApiModule === void 0) {
13266
+ withApiModule = true;
13251
13267
  }
13252
13268
  var baseUrl = ENV_MAP[env];
13253
13269
  if (baseUrl) {
13254
13270
  return {
13255
- apiBaseUrl: "".concat(baseUrl.apiBaseUrl).concat(withModule ? '/api' : '')
13271
+ apiBaseUrl: "".concat(baseUrl.apiBaseUrl).concat(withApiModule ? '/api' : '')
13256
13272
  };
13257
13273
  }
13258
13274
  return null;
@@ -13325,19 +13341,20 @@ var ZEEAvatarSDKLib = (function (exports) {
13325
13341
  };
13326
13342
  /**
13327
13343
  * 获取API基础URL
13328
- * @param withModule 是否包含模块路径
13344
+ * @param withApiModule 是否包含模块路径
13329
13345
  * @returns string API基础URL
13330
13346
  * @description 根据当前环境配置获取API基础URL
13331
13347
  */
13332
- ConfigManager.prototype.getApiBaseUrl = function (withModule) {
13348
+ ConfigManager.prototype.getApiBaseUrl = function (withApiModule) {
13333
13349
  var _a, _b, _c, _d;
13334
- if (withModule === void 0) {
13335
- withModule = true;
13350
+ if (withApiModule === void 0) {
13351
+ withApiModule = true;
13336
13352
  }
13337
13353
  if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.env) === 'custom' && ((_b = this.config) === null || _b === void 0 ? void 0 : _b.apiUrl)) {
13338
- return this.config.apiUrl;
13354
+ // 如果环境为自定义,则直接返回配置的API,无需添加模块路径
13355
+ return "".concat(this.config.apiUrl).concat(withApiModule ? '/api' : '');
13339
13356
  }
13340
- return ((_d = getEnvConfig(((_c = this.config) === null || _c === void 0 ? void 0 : _c.env) || 'prod', withModule)) === null || _d === void 0 ? void 0 : _d.apiBaseUrl) || '';
13357
+ return ((_d = getEnvConfig(((_c = this.config) === null || _c === void 0 ? void 0 : _c.env) || 'prod', withApiModule)) === null || _d === void 0 ? void 0 : _d.apiBaseUrl) || '';
13341
13358
  };
13342
13359
  /**
13343
13360
  * 获取自定义API URL
@@ -13827,6 +13844,9 @@ var ZEEAvatarSDKLib = (function (exports) {
13827
13844
  this.logger.debug('Broadcast stopped callback triggered');
13828
13845
  break;
13829
13846
  }
13847
+ } else {
13848
+ var error = SDKError.createFromUnityError(code, "Unity operation '".concat(operation, "' failed: ").concat(message));
13849
+ this.handleError(error);
13830
13850
  }
13831
13851
  };
13832
13852
  /**
@@ -13900,7 +13920,7 @@ var ZEEAvatarSDKLib = (function (exports) {
13900
13920
  _c.label = 2;
13901
13921
  case 2:
13902
13922
  _c.trys.push([2, 4,, 5]);
13903
- apiUrl = "".concat(this.getApiBaseUrl()).concat(this.getBroadcastApiPath(params.type));
13923
+ apiUrl = "".concat(ConfigManager.getInstance().getApiBaseUrl(true)).concat(this.getBroadcastApiPath(params.type));
13904
13924
  requestBody = {
13905
13925
  humanCode: params.humanCode,
13906
13926
  speed: params.speed,
@@ -13937,7 +13957,7 @@ var ZEEAvatarSDKLib = (function (exports) {
13937
13957
  var response = JSON.parse(event.data);
13938
13958
  // 错误处理
13939
13959
  if (response.code !== 0) {
13940
- _this.handleError(new SDKError(exports.NetworkErrorCode.SERVER_ERROR, response.message || '未知服务器错误'));
13960
+ _this.handleBroadcastError(response.code);
13941
13961
  return;
13942
13962
  }
13943
13963
  // 流式播报
@@ -13976,7 +13996,10 @@ var ZEEAvatarSDKLib = (function (exports) {
13976
13996
  },
13977
13997
  onerror: function onerror(error) {
13978
13998
  _this.logger.error('Broadcast stream error', error);
13979
- _this.handleError(new SDKError(exports.OperationErrorCode.OPERATION_FAILED, '播报流错误', error));
13999
+ var sdkError = new SDKError(exports.OperationErrorCode.OPERATION_FAILED, '服务出错了', error);
14000
+ _this.handleError(sdkError);
14001
+ // 必须抛出错误,否则会循环重试请求
14002
+ throw new Error("\u670D\u52A1\u51FA\u9519\u4E86".concat(sdkError.message));
13980
14003
  }
13981
14004
  })];
13982
14005
  case 3:
@@ -14148,16 +14171,6 @@ var ZEEAvatarSDKLib = (function (exports) {
14148
14171
  enumerable: false,
14149
14172
  configurable: true
14150
14173
  });
14151
- /**
14152
- * 获取API基础URL
14153
- * @returns string 返回当前环境的API基础URL
14154
- * @description 根据当前环境配置获取API基础URL
14155
- * @private
14156
- */
14157
- BroadcastService.prototype.getApiBaseUrl = function () {
14158
- var configManager = ConfigManager.getInstance();
14159
- return configManager.getApiBaseUrl();
14160
- };
14161
14174
  /**
14162
14175
  * 获取播报API路径
14163
14176
  * @param type - 播报类型
@@ -14167,10 +14180,19 @@ var ZEEAvatarSDKLib = (function (exports) {
14167
14180
  * @private
14168
14181
  */
14169
14182
  BroadcastService.prototype.getBroadcastApiPath = function (type) {
14183
+ var env = ConfigManager.getInstance().getEnv();
14170
14184
  switch (type) {
14171
14185
  case exports.BroadcastType.TEXT:
14186
+ // 临时处理,开发和测试环境使用新接口
14187
+ if (env === 'dev' || env === 'test') {
14188
+ return '/aiep-openapi/avatar-interaction/v1/broadcast/text';
14189
+ }
14172
14190
  return '/dh-talker/user/agent/broadcast/text';
14173
14191
  case exports.BroadcastType.AUDIO:
14192
+ // 临时处理,开发和测试环境使用新接口
14193
+ if (env === 'dev' || env === 'test') {
14194
+ return '/aiep-openapi/avatar-interaction/v1/broadcast/audio';
14195
+ }
14174
14196
  return '/dh-talker/user/agent/broadcast/customAudio';
14175
14197
  default:
14176
14198
  throw new SDKError(exports.ConfigErrorCode.INVALID_CONFIG, "\u672A\u77E5\u7684\u64AD\u62A5\u7C7B\u578B: ".concat(type));
@@ -14211,6 +14233,31 @@ var ZEEAvatarSDKLib = (function (exports) {
14211
14233
  // 触发错误回调
14212
14234
  (_b = (_a = this.callbacks).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
14213
14235
  };
14236
+ /**
14237
+ * 处理播报错误
14238
+ * @param errorCode - 错误码
14239
+ * @description 处理播报过程中的错误
14240
+ * @private
14241
+ */
14242
+ BroadcastService.prototype.handleBroadcastError = function (errorCode) {
14243
+ // 用户权益额度不存在错误码 14001
14244
+ // 用户权益额度不足错误码 14002
14245
+ // 用户权益额度冻结失败 14003
14246
+ switch (errorCode) {
14247
+ case 14001:
14248
+ this.handleError(new SDKError(exports.OperationErrorCode.BROADCAST_EQUITY_NOT_EXIST, '用户权益额度不存在'));
14249
+ break;
14250
+ case 14002:
14251
+ this.handleError(new SDKError(exports.OperationErrorCode.BROADCAST_EQUITY_NOT_ENOUGH, '用户权益额度不足'));
14252
+ break;
14253
+ case 14003:
14254
+ this.handleError(new SDKError(exports.OperationErrorCode.BROADCAST_EQUITY_FREEZE_FAILED, '用户权益额度冻结失败'));
14255
+ break;
14256
+ default:
14257
+ this.handleError(new SDKError(exports.OperationErrorCode.OPERATION_FAILED, '播报服务错误'));
14258
+ break;
14259
+ }
14260
+ };
14214
14261
  return BroadcastService;
14215
14262
  }(UnityBaseService);
14216
14263
 
@@ -14349,11 +14396,12 @@ var ZEEAvatarSDKLib = (function (exports) {
14349
14396
  * @protected
14350
14397
  */
14351
14398
  ZEEAvatarLoader.prototype.initGlobalConfig = function () {
14352
- var params = __assign(__assign({}, ConfigManager.getInstance().getConfig()), {
14399
+ var params = {
14353
14400
  token: ConfigManager.getInstance().getToken(),
14354
14401
  apiBaseUrl: ConfigManager.getInstance().getApiBaseUrl(false),
14402
+ idleMotionList: ConfigManager.getInstance().getConfig().idleMotionList,
14355
14403
  assetsUrl: ConfigManager.getInstance().getConfig().assetsUrl
14356
- });
14404
+ };
14357
14405
  console.warn('[ Send Unity message ]: AvatarSDK.InitializeConfig', params);
14358
14406
  this.unityInstance.SendMessage('AvatarSDK', 'InitializeConfig', JSON.stringify(params));
14359
14407
  };