@16x/webphone-sdk 3.0.1

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 (75) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +2 -0
  3. package/README.md +113 -0
  4. package/dist/CCBarClient-BdbynNBi.js +2515 -0
  5. package/dist/CCBarClient-DKWdvgf5.cjs +1 -0
  6. package/dist/CCBarError-CIqJE8zK.cjs +1 -0
  7. package/dist/CCBarError-DSbPw2dA.js +14 -0
  8. package/dist/Diagnostics-BYVvmxil.cjs +1 -0
  9. package/dist/Diagnostics-Cw2HVrCD.js +123 -0
  10. package/dist/JsSipAdapter-GHzVSCDh.js +304 -0
  11. package/dist/JsSipAdapter-jtGdoXrm.cjs +1 -0
  12. package/dist/SharedWorkerProtocol-BqUafs8d.js +73 -0
  13. package/dist/SharedWorkerProtocol-CYN0AprP.cjs +1 -0
  14. package/dist/api/WebPhoneApi.d.ts +28 -0
  15. package/dist/api/contracts.d.ts +94 -0
  16. package/dist/auth/TokenManager.d.ts +22 -0
  17. package/dist/core/CCBarCall.d.ts +94 -0
  18. package/dist/core/CCBarClient.d.ts +113 -0
  19. package/dist/core/CallManager.d.ts +93 -0
  20. package/dist/core/callId.d.ts +1 -0
  21. package/dist/core/mediaBridge.d.ts +17 -0
  22. package/dist/createJsSipFactory-2X4FBIU2.cjs +75 -0
  23. package/dist/createJsSipFactory-yttVU3d6.js +9662 -0
  24. package/dist/diagnostics/Diagnostics.d.ts +74 -0
  25. package/dist/diagnostics/RingBuffer.d.ts +7 -0
  26. package/dist/diagnostics/index.cjs +1 -0
  27. package/dist/diagnostics/index.d.ts +4 -0
  28. package/dist/diagnostics/index.js +6 -0
  29. package/dist/diagnostics/redact.d.ts +5 -0
  30. package/dist/errors/CCBarError.d.ts +15 -0
  31. package/dist/events/TypedEventBus.d.ts +9 -0
  32. package/dist/index.cjs +1 -0
  33. package/dist/index.d.ts +21 -0
  34. package/dist/index.js +152 -0
  35. package/dist/index.umd.js +75 -0
  36. package/dist/legacy/CCBarSDK.d.ts +29 -0
  37. package/dist/legacy/index.cjs +1 -0
  38. package/dist/legacy/index.d.ts +8 -0
  39. package/dist/legacy/index.js +108 -0
  40. package/dist/redact-Bq26pObO.cjs +1 -0
  41. package/dist/redact-DB3CMbsK.js +21 -0
  42. package/dist/shared/SharedCallTransport.d.ts +55 -0
  43. package/dist/shared/SharedWorkerClient.d.ts +20 -0
  44. package/dist/shared/SharedWorkerEntry.d.ts +3 -0
  45. package/dist/shared/SharedWorkerFactory.d.ts +29 -0
  46. package/dist/shared/SharedWorkerProtocol.d.ts +47 -0
  47. package/dist/shared/SharedWorkerRuntime.d.ts +35 -0
  48. package/dist/shared-worker.cjs +1 -0
  49. package/dist/shared-worker.d.ts +1 -0
  50. package/dist/shared-worker.js +185 -0
  51. package/dist/state/callStateMachine.d.ts +9 -0
  52. package/dist/styles.css +7 -0
  53. package/dist/types.d.ts +134 -0
  54. package/dist/ui/XCallCCBarElement.d.ts +23 -0
  55. package/dist/ui/controllers/mobileLifecycle.d.ts +18 -0
  56. package/dist/ui/controllers/phoneActions.d.ts +27 -0
  57. package/dist/ui/i18n/en-US.d.ts +2 -0
  58. package/dist/ui/i18n/index.d.ts +6 -0
  59. package/dist/ui/i18n/types.d.ts +53 -0
  60. package/dist/ui/i18n/zh-CN.d.ts +2 -0
  61. package/dist/ui/icons/index.d.ts +5 -0
  62. package/dist/ui/index.cjs +1 -0
  63. package/dist/ui/index.d.ts +3 -0
  64. package/dist/ui/index.js +1044 -0
  65. package/dist/ui/state/toPhoneViewModel.d.ts +54 -0
  66. package/dist/ui/views/dom.d.ts +11 -0
  67. package/dist/ui/views/messages.d.ts +5 -0
  68. package/dist/ui/views/renderActiveCall.d.ts +8 -0
  69. package/dist/ui/views/renderDesktop.d.ts +24 -0
  70. package/dist/ui/views/renderDialpad.d.ts +4 -0
  71. package/dist/ui/views/renderError.d.ts +6 -0
  72. package/dist/ui/views/renderIncoming.d.ts +8 -0
  73. package/dist/ui/views/renderMobile.d.ts +15 -0
  74. package/dist/ui/views/renderSetup.d.ts +6 -0
  75. package/package.json +107 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ - 新增 SharedWorker 多标签页协调能力的公开配置、worker 构建产物、调用归属事件和单标签页 fallback scaffolding。
6
+ - 新增 SharedWorker 多标签页 smoke/soak 验收脚本;连接建立速率上限为每秒 30 次。
7
+ - 该能力不改变 3.0.1 的单标签页兼容 API;生产跨标签页矩阵验证完成后建议随下一个 minor 版本发布。
8
+
9
+ ## 3.0.1 - 2026-09-19
10
+
11
+ - 发布 WebPhone SDK 3.0.1,包含 WSS ticket 通过 `Sec-WebSocket-Protocol` 传递及 API 主机相对路径解析修复。
12
+
13
+ ## 0.1.0 - 2026-09-18
14
+
15
+ - 完成 Headless Core 生命周期、SIP/通话控制、媒体设备、重连与脱敏诊断能力。
16
+ - 提供 ESM、CJS、UMD、类型声明及根入口、`/ui`、`/legacy`、`/diagnostics`、`/styles.css` 导出。
17
+ - 新增旧 `CCBarSDK` 兼容层,按设计映射连接、拨号、当前通话控制和坐席状态方法。
18
+ - `insideCall(number)` 在当前 `DialOptions` 不支持 `type` 时保留原目标号码,不添加隐式前缀。
19
+ - `setBu()` 改为抛出明确的 `DeprecatedError`,不允许浏览器伪造忙碌状态。
20
+ - Legacy 弃用警告仅在开发构建中按方法输出一次;生产构建保持安静。
21
+ - 显式导入 `/legacy` 时才在浏览器附加 `window.CCBarSDK`,并保持 SSR 导入安全。
22
+ - 增加 50 次初始化、连接、拨号、结束和销毁生命周期资源回收测试。
package/LICENSE ADDED
@@ -0,0 +1,2 @@
1
+ Copyright 16X. All rights reserved.
2
+ Private customer distribution only. No redistribution or sublicensing without written permission.
package/README.md ADDED
@@ -0,0 +1,113 @@
1
+ # CCBar WebPhone SDK Core
2
+
3
+ `@16x/webphone-sdk` 是 CCBar WebPhone 的 TypeScript SDK。Core 提供无 UI 的连接、通话、媒体设备、重连和脱敏诊断能力,可用于 Vue、React、原生 Web 与受支持的移动浏览器。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm install @16x/webphone-sdk
9
+ ```
10
+
11
+ 包发布在 npmjs,npm 组织是 `16x`。任何人都可以直接安装,不需要 token。
12
+
13
+ 浏览器只应接收客户服务端签发的短期 WebPhone Access Token。不要把 `appSecret`、固定 SIP 密码或 TURN 密码写入前端代码、示例、日志或构建产物。客户从安装到首通的完整路径见 `docs/quick-start.md`,PC/H5 选择见 `docs/guides/mobile-h5.md`。
14
+
15
+ ## Core 快速开始
16
+
17
+ ```ts
18
+ import { CCBarClient } from '@16x/webphone-sdk';
19
+
20
+ const client = new CCBarClient({
21
+ platform: 'web',
22
+ tokenProvider: async () => {
23
+ const response = await fetch('/api/webphone-token', {
24
+ method: 'POST',
25
+ credentials: 'include',
26
+ });
27
+ if (!response.ok) throw new Error('获取外呼凭证失败');
28
+ return response.json();
29
+ },
30
+ });
31
+
32
+ await client.initialize();
33
+ await client.connect();
34
+
35
+ const call = await client.dial({ destination: '13800138000' });
36
+ await call.hangup();
37
+
38
+ await client.disconnect();
39
+ await client.dispose();
40
+ ```
41
+
42
+ 在 SPA 中应由应用级容器持有一个 `CCBarClient`。`connect()`、`disconnect()` 和 `dispose()` 支持幂等调用;组件卸载或应用退出时必须调用 `dispose()` 释放 Timer、Listener、WebSocket、PeerConnection、Track 和 Audio 资源。
43
+
44
+ 根入口与 `/diagnostics` 可在 SSR/Node 导入阶段安全加载,不会访问 `window`、`document` 或 `navigator`。浏览器媒体能力只在初始化或后续操作时检测。
45
+
46
+ ## 主要 API
47
+
48
+ - `CCBarClient.initialize/connect/disconnect/dispose`
49
+ - `CCBarClient.dial/getCalls/getActiveCall/setActiveCall`
50
+ - `CCBarClient.setAgentStatus`
51
+ - `CCBarClient.media` 设备与音频控制
52
+ - `CCBarClient.on/off` 类型化事件
53
+ - `CCBarClient.getDiagnostics` 脱敏诊断报告
54
+ - `CCBarCall.mute/unmute/hold/resume/sendDtmf/transfer/hangup`
55
+
56
+ PC Web 支持完整 Core 通话能力。移动 H5 首期仅承诺受支持系统浏览器中的前台单路外呼;来电、保持、转接、后台和锁屏通话不在承诺范围内。
57
+
58
+ ## Legacy Adapter
59
+
60
+ 只有显式导入 Legacy 子路径才会在浏览器附加 `window.CCBarSDK`;根入口没有该副作用。Legacy 子路径同样可以安全地在 SSR 中导入。
61
+
62
+ ```ts
63
+ import { CCBarSDK } from '@16x/webphone-sdk/legacy';
64
+
65
+ const legacy = new CCBarSDK({
66
+ platform: 'web',
67
+ tokenProvider: async () => fetch('/api/webphone-token', {
68
+ method: 'POST',
69
+ credentials: 'include',
70
+ }).then(response => response.json()),
71
+ });
72
+
73
+ await legacy.login();
74
+ const call = await legacy.call('13800138000');
75
+ await legacy.hangup();
76
+ await legacy.signOut();
77
+ ```
78
+
79
+ 旧方法映射如下:
80
+
81
+ | Legacy | Core |
82
+ |---|---|
83
+ | `getToken()` / `getAccount()` / `login()` | `client.connect()` |
84
+ | `call(number)` | `client.dial({ destination: number })` |
85
+ | `insideCall(number)` | `client.dial({ destination: number, type: 'extension' })` |
86
+ | `answer()` | 当前 `call.answer()` |
87
+ | `hangup()` | 当前 `call.hangup()` |
88
+ | `holdCall()` / `unholdCall()` | 当前 `call.hold()` / `call.resume()` |
89
+ | `transSo(number)` | 当前 `call.transfer({ target: number, type: 'blind' })` |
90
+ | `setId()` / `setRe()` | `client.setAgentStatus('available' / 'break')` |
91
+ | `signOut()` | `client.disconnect()` 后 `client.dispose()` |
92
+
93
+ `insideCall(number)` 会使用 `type: 'extension'` 标记 SIP 呼叫,浏览器不拼接客户前缀;后端按当前会话租户解析分机并路由到同租户坐席。普通 `dial()` 不传 type,继续按外呼处理。
94
+
95
+ `setBu()` 不会伪造 `busy`。该方法抛出 `DeprecatedError`,因为忙碌状态应由通话状态或服务端状态策略驱动。所有 Legacy 方法仅在开发构建中各警告一次,生产构建不输出弃用日志。`signOut()` 是终态操作;如需保留实例以便重新连接,请直接使用 Core 的 `disconnect()`。
96
+
97
+ ## 开发与验收
98
+
99
+ ```bash
100
+ npm run lint
101
+ npm run typecheck
102
+ npm test
103
+ npm run build
104
+ npm run pack:check
105
+ ```
106
+
107
+ 正式包通过 `exports` 提供根入口、`/ui`、`/legacy`、`/diagnostics` 和 `/styles.css`,不包含测试、示例、Source Map 或凭证文件。
108
+
109
+ ## License
110
+
111
+ Copyright 16X. All rights reserved.
112
+
113
+ Private customer distribution only. No redistribution or sublicensing without written permission.