@16x/webphone-sdk 3.1.17 → 3.1.19
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.
- package/CHANGELOG.md +267 -31
- package/LICENSE +1 -1
- package/README.md +214 -161
- package/dist/{Diagnostics-CK0ai_sy.cjs → Diagnostics-CgDSPlQx.cjs} +1 -1
- package/dist/{Diagnostics-B6xGNl8M.js → Diagnostics-DJdBDGad.js} +1 -1
- package/dist/{JsSipAdapter-l97xq1ao.cjs → JsSipAdapter-CgBtmR16.cjs} +1 -1
- package/dist/{JsSipAdapter-B8ueIoBA.js → JsSipAdapter-CiqM4KOq.js} +1 -1
- package/dist/SharedWorkerProtocol-4VARy5ma.cjs +1 -0
- package/dist/SharedWorkerProtocol-DvLUl0JZ.js +93 -0
- package/dist/core/CCBarCall.d.ts +1 -1
- package/dist/createJsSipFactory-9CPsweDR.js +9665 -0
- package/dist/createJsSipFactory-Dr8HbLl-.cjs +75 -0
- package/dist/crypto/legacySipTicket.d.ts +40 -0
- package/dist/diagnostics/index.cjs +1 -1
- package/dist/diagnostics/index.js +1 -1
- package/dist/errors/CCBarError.d.ts +2 -0
- package/dist/i18n/index.d.ts +22 -0
- package/dist/i18n/messages/en-US.d.ts +2 -0
- package/dist/i18n/messages/es-ES.d.ts +2 -0
- package/dist/i18n/messages/id-ID.d.ts +2 -0
- package/dist/i18n/messages/index.d.ts +7 -0
- package/dist/i18n/messages/zh-CN.d.ts +2 -0
- package/dist/i18n/types.d.ts +5 -0
- package/dist/i18n-BbEy6K9z.cjs +1 -0
- package/dist/i18n-D-DdHtGz.js +150 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -8
- package/dist/index.umd.js +69 -16
- package/dist/legacy/index.cjs +1 -1
- package/dist/legacy/index.js +10 -276
- package/dist/legacy/legacySessionProvider.d.ts +20 -9
- package/dist/legacySessionProvider-CKJyrade.cjs +1 -0
- package/dist/{CCBarClient-C2sC86Xi.js → legacySessionProvider-DBrRBB3S.js} +795 -493
- package/dist/shared/SharedWorkerFactory.d.ts +2 -0
- package/dist/shared/SharedWorkerProtocol.d.ts +2 -0
- package/dist/shared-worker.cjs +1 -1
- package/dist/shared-worker.js +65 -64
- package/dist/styles.css +7 -7
- package/dist/ui/i18n/es-ES.d.ts +2 -0
- package/dist/ui/i18n/id-ID.d.ts +2 -0
- package/dist/ui/i18n/index.d.ts +2 -0
- package/dist/ui/index.cjs +1 -1
- package/dist/ui/index.js +278 -170
- package/dist/version.d.ts +1 -1
- package/package.json +114 -109
- package/dist/CCBarClient-GQ3yxDur.cjs +0 -1
- package/dist/SharedWorkerProtocol-C-4KpECM.cjs +0 -1
- package/dist/SharedWorkerProtocol-CffZrUXg.js +0 -119
- package/dist/createJsSipFactory-B1ORbJiP.cjs +0 -22
- package/dist/createJsSipFactory-CoWZN-BC.js +0 -7410
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 老平台坐席密码的解密:`seat/account/get` 返回的 `password`(或 `registerPassword`)
|
|
3
|
+
* 是 **AES-128-CBC / Pkcs7 的密文,Base64 编码**,需要解密才有明文 SIP 密码。
|
|
4
|
+
*
|
|
5
|
+
* key/iv 各 16 字节,老平台是固定值(旧版 `ccbar.js` 里同样是硬编码),可用 options 覆盖。
|
|
6
|
+
* 在浏览器与 Node 里都能用(走 WebCrypto,无需额外依赖;需要安全上下文或 Node 18+)。
|
|
7
|
+
*
|
|
8
|
+
* 这里是**唯一实现**:`/legacy` 子入口的 `decryptSipPassword` 与 core 会话入口的兜底
|
|
9
|
+
* `tryDecryptSipTicket` 共用它,平台 AES 细节不多写一份。
|
|
10
|
+
*/
|
|
11
|
+
export interface DecryptSipPasswordOptions {
|
|
12
|
+
/** AES key(16 字节,UTF-8),默认用老平台内置值 */
|
|
13
|
+
key?: string;
|
|
14
|
+
/** AES iv(16 字节,UTF-8),默认用老平台内置值 */
|
|
15
|
+
iv?: string;
|
|
16
|
+
/** 解密实现所用的 WebCrypto(测试可注入),默认全局 crypto.subtle */
|
|
17
|
+
subtle?: SubtleCrypto;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 解出 SIP 密码明文。
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { decryptSipPassword } from '@16x/webphone-sdk/legacy';
|
|
24
|
+
*
|
|
25
|
+
* const res = await fetch(`${host}/openapi/token/v1/seat/account/get`, { method: 'POST', headers: { Authorization: token }, body: '{}' });
|
|
26
|
+
* const { data } = await res.json();
|
|
27
|
+
* const password = await decryptSipPassword(data.password); // 明文 SIP 密码
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* 失败时抛 `CCBarError`:可读原因在 `error.cause` 上(密文为空 / 不是合法 Base64 / 解密失败)。
|
|
31
|
+
*/
|
|
32
|
+
export declare function decryptSipPassword(cipherText: string, options?: DecryptSipPasswordOptions): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* 会话入口的兜底:值看着就是老平台密文时解出明文,否则返回 `undefined`(调用方保持原值)。
|
|
35
|
+
*
|
|
36
|
+
* **永不抛错** —— 判错了一定要退回原值,不能把接入方本来正确的会话搞坏。
|
|
37
|
+
* 判定条件收得很紧,避免把明文密码误当密文(见 `looksLikeCipher`/`looksLikePlainText`):
|
|
38
|
+
* 合法 Base64、长度是 4 的倍数、解出来是 16 字节的整数倍、AES 解出的文本没有替换符与控制字符。
|
|
39
|
+
*/
|
|
40
|
+
export declare function tryDecryptSipTicket(ticket: string, options?: DecryptSipPasswordOptions): Promise<string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../Diagnostics-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../Diagnostics-CgDSPlQx.cjs"),t=require("../redact-Bq26pObO.cjs");require("../createJsSipFactory-Dr8HbLl-.cjs"),exports.Diagnostics=e.t,exports.RingBuffer=e.n,exports.diagnosticsVersion=e.r,exports.redactText=t.t,exports.redactValue=t.n;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as e, r as t, t as n } from "../Diagnostics-
|
|
1
|
+
import { n as e, r as t, t as n } from "../Diagnostics-DJdBDGad.js";
|
|
2
2
|
import { n as r, t as i } from "../redact-DB3CMbsK.js";
|
|
3
3
|
export { n as Diagnostics, e as RingBuffer, t as diagnosticsVersion, i as redactText, r as redactValue };
|
|
@@ -21,4 +21,6 @@ export declare class CCBarError extends Error {
|
|
|
21
21
|
readonly platformCode?: number;
|
|
22
22
|
readonly status?: number;
|
|
23
23
|
constructor(code: CCBarErrorCode, category: CCBarErrorCategory, retryable: boolean, options?: CCBarErrorOptions);
|
|
24
|
+
/** 指定语言下的客户可读文案;缺省用当前语言(与 message 一致)。 */
|
|
25
|
+
localizedMessage(locale?: string | null): string;
|
|
24
26
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CCBarErrorCode } from '../types.js';
|
|
2
|
+
import { SupportedLocale } from './types.js';
|
|
3
|
+
export type { ErrorMessages, SupportedLocale } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* 语言来源的优先级:接入方显式传的 `options.locale` → 浏览器语言 → 默认 zh-CN。
|
|
6
|
+
*
|
|
7
|
+
* SDK 嵌在宿主页面里,界面语言应当跟着宿主走,所以显式参数永远优先;
|
|
8
|
+
* 浏览器语言只是「接入方没传」时的合理兜底 —— 不读它,没传参数的接入方
|
|
9
|
+
* 就永远只能看到默认语言。
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_LOCALE: SupportedLocale;
|
|
12
|
+
/** BCP 47 语言码按前缀归一化到 SDK 支持的四种语言;不认识的回落默认语言。 */
|
|
13
|
+
export declare function normalizeLocale(input: string | null | undefined): SupportedLocale;
|
|
14
|
+
/** 读浏览器语言(Worker / 测试等无 navigator 的环境返回 undefined)。 */
|
|
15
|
+
export declare function detectBrowserLocale(): string | undefined;
|
|
16
|
+
/** 显式参数 → 浏览器语言 → 默认语言。 */
|
|
17
|
+
export declare function resolveLocale(explicit?: string | null): SupportedLocale;
|
|
18
|
+
/** 换当前语言(CCBarClient 构造、SharedWorker attach 时调用)。 */
|
|
19
|
+
export declare function setCurrentLocale(locale?: string | null): SupportedLocale;
|
|
20
|
+
export declare function getCurrentLocale(): SupportedLocale;
|
|
21
|
+
/** 错误码 → 某语言下的客户可读文案;locale 缺省用当前语言。 */
|
|
22
|
+
export declare function errorMessage(code: CCBarErrorCode, locale?: string | null): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ErrorMessages, SupportedLocale } from '../types.js';
|
|
2
|
+
export type { ErrorMessages } from '../types.js';
|
|
3
|
+
export { enUS } from './en-US.js';
|
|
4
|
+
export { esES } from './es-ES.js';
|
|
5
|
+
export { idID } from './id-ID.js';
|
|
6
|
+
export { zhCN } from './zh-CN.js';
|
|
7
|
+
export declare const errorMessages: Record<SupportedLocale, ErrorMessages>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={"zh-CN":{AUTH_TOKEN_UNAVAILABLE:`获取登录凭证失败,请检查凭证获取服务后重试。`,AUTH_TOKEN_EXPIRED:`登录凭证已过期,请重新获取凭证后登录。`,AUTH_TOKEN_REJECTED:`服务端未接受当前登录凭证,请核实凭证类型和权限。`,AUTH_PERMISSION_DENIED:`当前账号没有执行此操作的权限,请联系管理员。`,CONFIG_INVALID:`配置不完整或格式不正确,请检查软电话配置。`,CONFIG_ORIGIN_NOT_ALLOWED:`当前页面域名未获授权,请联系管理员配置访问域名。`,NETWORK_OFFLINE:`网络连接已断开,请检查网络后重试。`,NETWORK_TIMEOUT:`请求超时,请检查网络后重试。`,SIP_WS_UNAVAILABLE:`无法连接 SIP 服务,请检查 SIP WSS 地址和网络。`,REGISTRATION_FAILED:`SIP 注册失败,请检查坐席配置后重试。`,REGISTRATION_REJECTED:`SIP 服务拒绝了当前账号,请核对分机和 SIP 凭证。`,MEDIA_PERMISSION_DENIED:`麦克风权限未开启,请在浏览器设置中允许使用麦克风。`,MEDIA_DEVICE_NOT_FOUND:`未找到可用的音频设备,请连接麦克风或耳机后重试。`,MEDIA_DEVICE_IN_USE:`音频设备正在被其他程序使用,请关闭占用设备的程序后重试。`,MEDIA_PLAYBACK_BLOCKED:`浏览器阻止了声音播放,请点击页面并检查浏览器音频设置。`,CALL_INVALID_DESTINATION:`被叫号码格式不正确,请检查后重试。`,CALL_INVALID_USERDATA:`通话附加数据格式不正确,请检查后重试。`,CALL_ALREADY_EXISTS:`当前已有进行中的通话,请先结束当前通话。`,CALL_REJECTED:`对方或呼叫平台拒绝了本次呼叫。`,CALL_BUSY:`对方正在通话中,请稍后重试。`,CALL_NOT_CONNECTED:`当前没有可操作的通话,请先拨打或接听电话。`,NOT_SIGNED_IN:`请先登录,并等待 SIP 注册成功后再操作。`,CALL_OPERATION_NOT_ALLOWED:`当前通话状态不支持此操作,请检查通话状态后重试。`,CAPABILITY_NOT_SUPPORTED:`当前浏览器或设备不支持此功能。`,H5_BACKGROUND_NOT_SUPPORTED:`页面在后台时无法执行此操作,请返回通话页面后重试。`,SDK_ALREADY_DISPOSED:`软电话实例已关闭,请重新创建实例后操作。`,SDK_INTERNAL_ERROR:`软电话发生异常,请稍后重试;如问题持续,请联系技术支持。`,LEGACY_PLATFORM_UNREACHABLE:`无法连接坐席服务,请检查 API host 和网络。`,LEGACY_PLATFORM_REJECTED:`坐席服务未能完成请求,请核对账号权限和接口配置。`},"en-US":{AUTH_TOKEN_UNAVAILABLE:`Could not get the sign-in credential. Check the credential service and try again.`,AUTH_TOKEN_EXPIRED:`The sign-in credential has expired. Get a new credential and sign in again.`,AUTH_TOKEN_REJECTED:`The server rejected the sign-in credential. Check the credential type and permissions.`,AUTH_PERMISSION_DENIED:`This account has no permission for this action. Contact your administrator.`,CONFIG_INVALID:`The configuration is incomplete or invalid. Check the softphone configuration.`,CONFIG_ORIGIN_NOT_ALLOWED:`This page origin is not allowed. Contact your administrator to configure the allowed origins.`,NETWORK_OFFLINE:`The network connection is down. Check your network and try again.`,NETWORK_TIMEOUT:`The request timed out. Check your network and try again.`,SIP_WS_UNAVAILABLE:`Cannot connect to the SIP service. Check the SIP WSS address and network.`,REGISTRATION_FAILED:`SIP registration failed. Check the agent configuration and try again.`,REGISTRATION_REJECTED:`The SIP service rejected this account. Check the extension and SIP credentials.`,MEDIA_PERMISSION_DENIED:`Microphone access is not allowed. Enable microphone access in the browser settings.`,MEDIA_DEVICE_NOT_FOUND:`No audio device found. Connect a microphone or headset and try again.`,MEDIA_DEVICE_IN_USE:`The audio device is in use by another program. Close that program and try again.`,MEDIA_PLAYBACK_BLOCKED:`The browser blocked audio playback. Click the page and check the browser audio settings.`,CALL_INVALID_DESTINATION:`The destination number is invalid. Check it and try again.`,CALL_INVALID_USERDATA:`The call user data is invalid. Check it and try again.`,CALL_ALREADY_EXISTS:`A call is already in progress. End the current call first.`,CALL_REJECTED:`The call was rejected by the other party or the call platform.`,CALL_BUSY:`The other party is on another call. Try again later.`,CALL_NOT_CONNECTED:`There is no call to operate on. Dial or answer a call first.`,NOT_SIGNED_IN:`Sign in first and wait until SIP registration completes.`,CALL_OPERATION_NOT_ALLOWED:`This operation is not allowed in the current call state. Check the call state and try again.`,CAPABILITY_NOT_SUPPORTED:`This browser or device does not support this feature.`,H5_BACKGROUND_NOT_SUPPORTED:`This operation cannot run while the page is in the background. Return to the call page and try again.`,SDK_ALREADY_DISPOSED:`The softphone instance is closed. Create a new instance and try again.`,SDK_INTERNAL_ERROR:`The softphone hit an unexpected error. Try again later; contact support if it persists.`,LEGACY_PLATFORM_UNREACHABLE:`Cannot connect to the agent service. Check the API host and network.`,LEGACY_PLATFORM_REJECTED:`The agent service could not complete the request. Check the account permissions and API configuration.`},"id-ID":{AUTH_TOKEN_UNAVAILABLE:`Gagal mendapatkan kredensial masuk. Periksa layanan kredensial lalu coba lagi.`,AUTH_TOKEN_EXPIRED:`Kredensial masuk telah kedaluwarsa. Dapatkan kredensial baru lalu masuk kembali.`,AUTH_TOKEN_REJECTED:`Server tidak menerima kredensial masuk saat ini. Periksa jenis kredensial dan izinnya.`,AUTH_PERMISSION_DENIED:`Akun ini tidak memiliki izin untuk operasi ini. Hubungi administrator.`,CONFIG_INVALID:`Konfigurasi tidak lengkap atau tidak valid. Periksa konfigurasi softphone.`,CONFIG_ORIGIN_NOT_ALLOWED:`Domain halaman ini tidak diizinkan. Hubungi administrator untuk mengatur domain yang diizinkan.`,NETWORK_OFFLINE:`Koneksi jaringan terputus. Periksa jaringan Anda lalu coba lagi.`,NETWORK_TIMEOUT:`Permintaan waktu habis. Periksa jaringan Anda lalu coba lagi.`,SIP_WS_UNAVAILABLE:`Tidak dapat terhubung ke layanan SIP. Periksa alamat WSS SIP dan jaringan.`,REGISTRATION_FAILED:`Registrasi SIP gagal. Periksa konfigurasi agen lalu coba lagi.`,REGISTRATION_REJECTED:`Layanan SIP menolak akun ini. Periksa ekstensi dan kredensial SIP.`,MEDIA_PERMISSION_DENIED:`Izin mikrofon tidak diaktifkan. Izinkan penggunaan mikrofon di pengaturan browser.`,MEDIA_DEVICE_NOT_FOUND:`Perangkat audio tidak ditemukan. Hubungkan mikrofon atau headset lalu coba lagi.`,MEDIA_DEVICE_IN_USE:`Perangkat audio sedang digunakan oleh program lain. Tutup program tersebut lalu coba lagi.`,MEDIA_PLAYBACK_BLOCKED:`Browser memblokir pemutaran audio. Klik halaman dan periksa pengaturan audio browser.`,CALL_INVALID_DESTINATION:`Format nomor tujuan tidak valid. Periksa lalu coba lagi.`,CALL_INVALID_USERDATA:`Format data tambahan panggilan tidak valid. Periksa lalu coba lagi.`,CALL_ALREADY_EXISTS:`Panggilan sedang berlangsung. Akhiri panggilan saat ini terlebih dahulu.`,CALL_REJECTED:`Panggilan ditolak oleh pihak lain atau platform panggilan.`,CALL_BUSY:`Pihak lain sedang menerima panggilan lain. Coba lagi nanti.`,CALL_NOT_CONNECTED:`Tidak ada panggilan yang dapat dioperasikan. Hubungi atau jawab panggilan terlebih dahulu.`,NOT_SIGNED_IN:`Masuk terlebih dahulu dan tunggu hingga registrasi SIP selesai.`,CALL_OPERATION_NOT_ALLOWED:`Status panggilan saat ini tidak mendukung operasi ini. Periksa status panggilan lalu coba lagi.`,CAPABILITY_NOT_SUPPORTED:`Browser atau perangkat ini tidak mendukung fitur ini.`,H5_BACKGROUND_NOT_SUPPORTED:`Operasi ini tidak dapat dijalankan saat halaman berada di latar belakang. Kembali ke halaman panggilan lalu coba lagi.`,SDK_ALREADY_DISPOSED:`Instance softphone telah ditutup. Buat instance baru lalu coba lagi.`,SDK_INTERNAL_ERROR:`Softphone mengalami kesalahan tak terduga. Coba lagi nanti; hubungi dukungan jika berlanjut.`,LEGACY_PLATFORM_UNREACHABLE:`Tidak dapat terhubung ke layanan agen. Periksa host API dan jaringan.`,LEGACY_PLATFORM_REJECTED:`Layanan agen tidak dapat menyelesaikan permintaan. Periksa izin akun dan konfigurasi API.`},"es-ES":{AUTH_TOKEN_UNAVAILABLE:`No se pudo obtener la credencial de acceso. Verifique el servicio de credenciales e inténtelo de nuevo.`,AUTH_TOKEN_EXPIRED:`La credencial de acceso ha caducado. Obtenga una nueva credencial e inicie sesión de nuevo.`,AUTH_TOKEN_REJECTED:`El servidor rechazó la credencial de acceso. Verifique el tipo de credencial y los permisos.`,AUTH_PERMISSION_DENIED:`La cuenta actual no tiene permiso para realizar esta operación. Contacte al administrador.`,CONFIG_INVALID:`La configuración está incompleta o es incorrecta. Verifique la configuración del softphone.`,CONFIG_ORIGIN_NOT_ALLOWED:`El dominio de esta página no está autorizado. Contacte al administrador para configurar los dominios permitidos.`,NETWORK_OFFLINE:`La conexión de red se ha interrumpido. Verifique la red e inténtelo de nuevo.`,NETWORK_TIMEOUT:`La solicitud expiró. Verifique la red e inténtelo de nuevo.`,SIP_WS_UNAVAILABLE:`No se puede conectar al servicio SIP. Verifique la dirección WSS de SIP y la red.`,REGISTRATION_FAILED:`Falló el registro SIP. Verifique la configuración del agente e inténtelo de nuevo.`,REGISTRATION_REJECTED:`El servicio SIP rechazó la cuenta actual. Verifique la extensión y las credenciales SIP.`,MEDIA_PERMISSION_DENIED:`El permiso del micrófono no está habilitado. Permita el uso del micrófono en la configuración del navegador.`,MEDIA_DEVICE_NOT_FOUND:`No se encontró ningún dispositivo de audio. Conecte un micrófono o auriculares e inténtelo de nuevo.`,MEDIA_DEVICE_IN_USE:`El dispositivo de audio está siendo usado por otro programa. Cierre ese programa e inténtelo de nuevo.`,MEDIA_PLAYBACK_BLOCKED:`El navegador bloqueó la reproducción de audio. Haga clic en la página y revise la configuración de audio del navegador.`,CALL_INVALID_DESTINATION:`El formato del número de destino no es correcto. Verifíquelo e inténtelo de nuevo.`,CALL_INVALID_USERDATA:`El formato de los datos adjuntos de la llamada no es correcto. Verifíquelo e inténtelo de nuevo.`,CALL_ALREADY_EXISTS:`Ya hay una llamada en curso. Finalice la llamada actual primero.`,CALL_REJECTED:`La llamada fue rechazada por la otra parte o por la plataforma de llamadas.`,CALL_BUSY:`La otra parte está en otra llamada. Inténtelo más tarde.`,CALL_NOT_CONNECTED:`No hay ninguna llamada para operar. Realice o responda una llamada primero.`,NOT_SIGNED_IN:`Inicie sesión primero y espere a que finalice el registro SIP.`,CALL_OPERATION_NOT_ALLOWED:`El estado actual de la llamada no admite esta operación. Verifique el estado de la llamada e inténtelo de nuevo.`,CAPABILITY_NOT_SUPPORTED:`Este navegador o dispositivo no admite esta función.`,H5_BACKGROUND_NOT_SUPPORTED:`Esta operación no se puede ejecutar con la página en segundo plano. Vuelva a la página de llamadas e inténtelo de nuevo.`,SDK_ALREADY_DISPOSED:`La instancia del softphone está cerrada. Cree una nueva instancia e inténtelo de nuevo.`,SDK_INTERNAL_ERROR:`El softphone ha encontrado un error inesperado. Inténtelo más tarde; contacte al soporte si persiste.`,LEGACY_PLATFORM_UNREACHABLE:`No se puede conectar al servicio del agente. Verifique el host de la API y la red.`,LEGACY_PLATFORM_REJECTED:`El servicio del agente no pudo completar la solicitud. Verifique los permisos de la cuenta y la configuración de la API.`}},t=`zh-CN`;function n(e){let n=String(e??``).trim().toLowerCase();return n.startsWith(`zh`)?`zh-CN`:n.startsWith(`en`)?`en-US`:n.startsWith(`id`)||n.startsWith(`in`)?`id-ID`:n.startsWith(`es`)?`es-ES`:t}function r(){if(typeof navigator<`u`)return navigator.language}function i(e){return n(e??r())}var a=t;function o(e){return a=i(e),a}function s(){return a}function c(t,r){return e[n(r??a)][t]}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
//#endregion
|
|
2
|
+
//#region src/i18n/messages/index.ts
|
|
3
|
+
var e = {
|
|
4
|
+
"zh-CN": {
|
|
5
|
+
AUTH_TOKEN_UNAVAILABLE: "获取登录凭证失败,请检查凭证获取服务后重试。",
|
|
6
|
+
AUTH_TOKEN_EXPIRED: "登录凭证已过期,请重新获取凭证后登录。",
|
|
7
|
+
AUTH_TOKEN_REJECTED: "服务端未接受当前登录凭证,请核实凭证类型和权限。",
|
|
8
|
+
AUTH_PERMISSION_DENIED: "当前账号没有执行此操作的权限,请联系管理员。",
|
|
9
|
+
CONFIG_INVALID: "配置不完整或格式不正确,请检查软电话配置。",
|
|
10
|
+
CONFIG_ORIGIN_NOT_ALLOWED: "当前页面域名未获授权,请联系管理员配置访问域名。",
|
|
11
|
+
NETWORK_OFFLINE: "网络连接已断开,请检查网络后重试。",
|
|
12
|
+
NETWORK_TIMEOUT: "请求超时,请检查网络后重试。",
|
|
13
|
+
SIP_WS_UNAVAILABLE: "无法连接 SIP 服务,请检查 SIP WSS 地址和网络。",
|
|
14
|
+
REGISTRATION_FAILED: "SIP 注册失败,请检查坐席配置后重试。",
|
|
15
|
+
REGISTRATION_REJECTED: "SIP 服务拒绝了当前账号,请核对分机和 SIP 凭证。",
|
|
16
|
+
MEDIA_PERMISSION_DENIED: "麦克风权限未开启,请在浏览器设置中允许使用麦克风。",
|
|
17
|
+
MEDIA_DEVICE_NOT_FOUND: "未找到可用的音频设备,请连接麦克风或耳机后重试。",
|
|
18
|
+
MEDIA_DEVICE_IN_USE: "音频设备正在被其他程序使用,请关闭占用设备的程序后重试。",
|
|
19
|
+
MEDIA_PLAYBACK_BLOCKED: "浏览器阻止了声音播放,请点击页面并检查浏览器音频设置。",
|
|
20
|
+
CALL_INVALID_DESTINATION: "被叫号码格式不正确,请检查后重试。",
|
|
21
|
+
CALL_INVALID_USERDATA: "通话附加数据格式不正确,请检查后重试。",
|
|
22
|
+
CALL_ALREADY_EXISTS: "当前已有进行中的通话,请先结束当前通话。",
|
|
23
|
+
CALL_REJECTED: "对方或呼叫平台拒绝了本次呼叫。",
|
|
24
|
+
CALL_BUSY: "对方正在通话中,请稍后重试。",
|
|
25
|
+
CALL_NOT_CONNECTED: "当前没有可操作的通话,请先拨打或接听电话。",
|
|
26
|
+
NOT_SIGNED_IN: "请先登录,并等待 SIP 注册成功后再操作。",
|
|
27
|
+
CALL_OPERATION_NOT_ALLOWED: "当前通话状态不支持此操作,请检查通话状态后重试。",
|
|
28
|
+
CAPABILITY_NOT_SUPPORTED: "当前浏览器或设备不支持此功能。",
|
|
29
|
+
H5_BACKGROUND_NOT_SUPPORTED: "页面在后台时无法执行此操作,请返回通话页面后重试。",
|
|
30
|
+
SDK_ALREADY_DISPOSED: "软电话实例已关闭,请重新创建实例后操作。",
|
|
31
|
+
SDK_INTERNAL_ERROR: "软电话发生异常,请稍后重试;如问题持续,请联系技术支持。",
|
|
32
|
+
LEGACY_PLATFORM_UNREACHABLE: "无法连接坐席服务,请检查 API host 和网络。",
|
|
33
|
+
LEGACY_PLATFORM_REJECTED: "坐席服务未能完成请求,请核对账号权限和接口配置。"
|
|
34
|
+
},
|
|
35
|
+
"en-US": {
|
|
36
|
+
AUTH_TOKEN_UNAVAILABLE: "Could not get the sign-in credential. Check the credential service and try again.",
|
|
37
|
+
AUTH_TOKEN_EXPIRED: "The sign-in credential has expired. Get a new credential and sign in again.",
|
|
38
|
+
AUTH_TOKEN_REJECTED: "The server rejected the sign-in credential. Check the credential type and permissions.",
|
|
39
|
+
AUTH_PERMISSION_DENIED: "This account has no permission for this action. Contact your administrator.",
|
|
40
|
+
CONFIG_INVALID: "The configuration is incomplete or invalid. Check the softphone configuration.",
|
|
41
|
+
CONFIG_ORIGIN_NOT_ALLOWED: "This page origin is not allowed. Contact your administrator to configure the allowed origins.",
|
|
42
|
+
NETWORK_OFFLINE: "The network connection is down. Check your network and try again.",
|
|
43
|
+
NETWORK_TIMEOUT: "The request timed out. Check your network and try again.",
|
|
44
|
+
SIP_WS_UNAVAILABLE: "Cannot connect to the SIP service. Check the SIP WSS address and network.",
|
|
45
|
+
REGISTRATION_FAILED: "SIP registration failed. Check the agent configuration and try again.",
|
|
46
|
+
REGISTRATION_REJECTED: "The SIP service rejected this account. Check the extension and SIP credentials.",
|
|
47
|
+
MEDIA_PERMISSION_DENIED: "Microphone access is not allowed. Enable microphone access in the browser settings.",
|
|
48
|
+
MEDIA_DEVICE_NOT_FOUND: "No audio device found. Connect a microphone or headset and try again.",
|
|
49
|
+
MEDIA_DEVICE_IN_USE: "The audio device is in use by another program. Close that program and try again.",
|
|
50
|
+
MEDIA_PLAYBACK_BLOCKED: "The browser blocked audio playback. Click the page and check the browser audio settings.",
|
|
51
|
+
CALL_INVALID_DESTINATION: "The destination number is invalid. Check it and try again.",
|
|
52
|
+
CALL_INVALID_USERDATA: "The call user data is invalid. Check it and try again.",
|
|
53
|
+
CALL_ALREADY_EXISTS: "A call is already in progress. End the current call first.",
|
|
54
|
+
CALL_REJECTED: "The call was rejected by the other party or the call platform.",
|
|
55
|
+
CALL_BUSY: "The other party is on another call. Try again later.",
|
|
56
|
+
CALL_NOT_CONNECTED: "There is no call to operate on. Dial or answer a call first.",
|
|
57
|
+
NOT_SIGNED_IN: "Sign in first and wait until SIP registration completes.",
|
|
58
|
+
CALL_OPERATION_NOT_ALLOWED: "This operation is not allowed in the current call state. Check the call state and try again.",
|
|
59
|
+
CAPABILITY_NOT_SUPPORTED: "This browser or device does not support this feature.",
|
|
60
|
+
H5_BACKGROUND_NOT_SUPPORTED: "This operation cannot run while the page is in the background. Return to the call page and try again.",
|
|
61
|
+
SDK_ALREADY_DISPOSED: "The softphone instance is closed. Create a new instance and try again.",
|
|
62
|
+
SDK_INTERNAL_ERROR: "The softphone hit an unexpected error. Try again later; contact support if it persists.",
|
|
63
|
+
LEGACY_PLATFORM_UNREACHABLE: "Cannot connect to the agent service. Check the API host and network.",
|
|
64
|
+
LEGACY_PLATFORM_REJECTED: "The agent service could not complete the request. Check the account permissions and API configuration."
|
|
65
|
+
},
|
|
66
|
+
"id-ID": {
|
|
67
|
+
AUTH_TOKEN_UNAVAILABLE: "Gagal mendapatkan kredensial masuk. Periksa layanan kredensial lalu coba lagi.",
|
|
68
|
+
AUTH_TOKEN_EXPIRED: "Kredensial masuk telah kedaluwarsa. Dapatkan kredensial baru lalu masuk kembali.",
|
|
69
|
+
AUTH_TOKEN_REJECTED: "Server tidak menerima kredensial masuk saat ini. Periksa jenis kredensial dan izinnya.",
|
|
70
|
+
AUTH_PERMISSION_DENIED: "Akun ini tidak memiliki izin untuk operasi ini. Hubungi administrator.",
|
|
71
|
+
CONFIG_INVALID: "Konfigurasi tidak lengkap atau tidak valid. Periksa konfigurasi softphone.",
|
|
72
|
+
CONFIG_ORIGIN_NOT_ALLOWED: "Domain halaman ini tidak diizinkan. Hubungi administrator untuk mengatur domain yang diizinkan.",
|
|
73
|
+
NETWORK_OFFLINE: "Koneksi jaringan terputus. Periksa jaringan Anda lalu coba lagi.",
|
|
74
|
+
NETWORK_TIMEOUT: "Permintaan waktu habis. Periksa jaringan Anda lalu coba lagi.",
|
|
75
|
+
SIP_WS_UNAVAILABLE: "Tidak dapat terhubung ke layanan SIP. Periksa alamat WSS SIP dan jaringan.",
|
|
76
|
+
REGISTRATION_FAILED: "Registrasi SIP gagal. Periksa konfigurasi agen lalu coba lagi.",
|
|
77
|
+
REGISTRATION_REJECTED: "Layanan SIP menolak akun ini. Periksa ekstensi dan kredensial SIP.",
|
|
78
|
+
MEDIA_PERMISSION_DENIED: "Izin mikrofon tidak diaktifkan. Izinkan penggunaan mikrofon di pengaturan browser.",
|
|
79
|
+
MEDIA_DEVICE_NOT_FOUND: "Perangkat audio tidak ditemukan. Hubungkan mikrofon atau headset lalu coba lagi.",
|
|
80
|
+
MEDIA_DEVICE_IN_USE: "Perangkat audio sedang digunakan oleh program lain. Tutup program tersebut lalu coba lagi.",
|
|
81
|
+
MEDIA_PLAYBACK_BLOCKED: "Browser memblokir pemutaran audio. Klik halaman dan periksa pengaturan audio browser.",
|
|
82
|
+
CALL_INVALID_DESTINATION: "Format nomor tujuan tidak valid. Periksa lalu coba lagi.",
|
|
83
|
+
CALL_INVALID_USERDATA: "Format data tambahan panggilan tidak valid. Periksa lalu coba lagi.",
|
|
84
|
+
CALL_ALREADY_EXISTS: "Panggilan sedang berlangsung. Akhiri panggilan saat ini terlebih dahulu.",
|
|
85
|
+
CALL_REJECTED: "Panggilan ditolak oleh pihak lain atau platform panggilan.",
|
|
86
|
+
CALL_BUSY: "Pihak lain sedang menerima panggilan lain. Coba lagi nanti.",
|
|
87
|
+
CALL_NOT_CONNECTED: "Tidak ada panggilan yang dapat dioperasikan. Hubungi atau jawab panggilan terlebih dahulu.",
|
|
88
|
+
NOT_SIGNED_IN: "Masuk terlebih dahulu dan tunggu hingga registrasi SIP selesai.",
|
|
89
|
+
CALL_OPERATION_NOT_ALLOWED: "Status panggilan saat ini tidak mendukung operasi ini. Periksa status panggilan lalu coba lagi.",
|
|
90
|
+
CAPABILITY_NOT_SUPPORTED: "Browser atau perangkat ini tidak mendukung fitur ini.",
|
|
91
|
+
H5_BACKGROUND_NOT_SUPPORTED: "Operasi ini tidak dapat dijalankan saat halaman berada di latar belakang. Kembali ke halaman panggilan lalu coba lagi.",
|
|
92
|
+
SDK_ALREADY_DISPOSED: "Instance softphone telah ditutup. Buat instance baru lalu coba lagi.",
|
|
93
|
+
SDK_INTERNAL_ERROR: "Softphone mengalami kesalahan tak terduga. Coba lagi nanti; hubungi dukungan jika berlanjut.",
|
|
94
|
+
LEGACY_PLATFORM_UNREACHABLE: "Tidak dapat terhubung ke layanan agen. Periksa host API dan jaringan.",
|
|
95
|
+
LEGACY_PLATFORM_REJECTED: "Layanan agen tidak dapat menyelesaikan permintaan. Periksa izin akun dan konfigurasi API."
|
|
96
|
+
},
|
|
97
|
+
"es-ES": {
|
|
98
|
+
AUTH_TOKEN_UNAVAILABLE: "No se pudo obtener la credencial de acceso. Verifique el servicio de credenciales e inténtelo de nuevo.",
|
|
99
|
+
AUTH_TOKEN_EXPIRED: "La credencial de acceso ha caducado. Obtenga una nueva credencial e inicie sesión de nuevo.",
|
|
100
|
+
AUTH_TOKEN_REJECTED: "El servidor rechazó la credencial de acceso. Verifique el tipo de credencial y los permisos.",
|
|
101
|
+
AUTH_PERMISSION_DENIED: "La cuenta actual no tiene permiso para realizar esta operación. Contacte al administrador.",
|
|
102
|
+
CONFIG_INVALID: "La configuración está incompleta o es incorrecta. Verifique la configuración del softphone.",
|
|
103
|
+
CONFIG_ORIGIN_NOT_ALLOWED: "El dominio de esta página no está autorizado. Contacte al administrador para configurar los dominios permitidos.",
|
|
104
|
+
NETWORK_OFFLINE: "La conexión de red se ha interrumpido. Verifique la red e inténtelo de nuevo.",
|
|
105
|
+
NETWORK_TIMEOUT: "La solicitud expiró. Verifique la red e inténtelo de nuevo.",
|
|
106
|
+
SIP_WS_UNAVAILABLE: "No se puede conectar al servicio SIP. Verifique la dirección WSS de SIP y la red.",
|
|
107
|
+
REGISTRATION_FAILED: "Falló el registro SIP. Verifique la configuración del agente e inténtelo de nuevo.",
|
|
108
|
+
REGISTRATION_REJECTED: "El servicio SIP rechazó la cuenta actual. Verifique la extensión y las credenciales SIP.",
|
|
109
|
+
MEDIA_PERMISSION_DENIED: "El permiso del micrófono no está habilitado. Permita el uso del micrófono en la configuración del navegador.",
|
|
110
|
+
MEDIA_DEVICE_NOT_FOUND: "No se encontró ningún dispositivo de audio. Conecte un micrófono o auriculares e inténtelo de nuevo.",
|
|
111
|
+
MEDIA_DEVICE_IN_USE: "El dispositivo de audio está siendo usado por otro programa. Cierre ese programa e inténtelo de nuevo.",
|
|
112
|
+
MEDIA_PLAYBACK_BLOCKED: "El navegador bloqueó la reproducción de audio. Haga clic en la página y revise la configuración de audio del navegador.",
|
|
113
|
+
CALL_INVALID_DESTINATION: "El formato del número de destino no es correcto. Verifíquelo e inténtelo de nuevo.",
|
|
114
|
+
CALL_INVALID_USERDATA: "El formato de los datos adjuntos de la llamada no es correcto. Verifíquelo e inténtelo de nuevo.",
|
|
115
|
+
CALL_ALREADY_EXISTS: "Ya hay una llamada en curso. Finalice la llamada actual primero.",
|
|
116
|
+
CALL_REJECTED: "La llamada fue rechazada por la otra parte o por la plataforma de llamadas.",
|
|
117
|
+
CALL_BUSY: "La otra parte está en otra llamada. Inténtelo más tarde.",
|
|
118
|
+
CALL_NOT_CONNECTED: "No hay ninguna llamada para operar. Realice o responda una llamada primero.",
|
|
119
|
+
NOT_SIGNED_IN: "Inicie sesión primero y espere a que finalice el registro SIP.",
|
|
120
|
+
CALL_OPERATION_NOT_ALLOWED: "El estado actual de la llamada no admite esta operación. Verifique el estado de la llamada e inténtelo de nuevo.",
|
|
121
|
+
CAPABILITY_NOT_SUPPORTED: "Este navegador o dispositivo no admite esta función.",
|
|
122
|
+
H5_BACKGROUND_NOT_SUPPORTED: "Esta operación no se puede ejecutar con la página en segundo plano. Vuelva a la página de llamadas e inténtelo de nuevo.",
|
|
123
|
+
SDK_ALREADY_DISPOSED: "La instancia del softphone está cerrada. Cree una nueva instancia e inténtelo de nuevo.",
|
|
124
|
+
SDK_INTERNAL_ERROR: "El softphone ha encontrado un error inesperado. Inténtelo más tarde; contacte al soporte si persiste.",
|
|
125
|
+
LEGACY_PLATFORM_UNREACHABLE: "No se puede conectar al servicio del agente. Verifique el host de la API y la red.",
|
|
126
|
+
LEGACY_PLATFORM_REJECTED: "El servicio del agente no pudo completar la solicitud. Verifique los permisos de la cuenta y la configuración de la API."
|
|
127
|
+
}
|
|
128
|
+
}, t = "zh-CN";
|
|
129
|
+
function n(e) {
|
|
130
|
+
let n = String(e ?? "").trim().toLowerCase();
|
|
131
|
+
return n.startsWith("zh") ? "zh-CN" : n.startsWith("en") ? "en-US" : n.startsWith("id") || n.startsWith("in") ? "id-ID" : n.startsWith("es") ? "es-ES" : t;
|
|
132
|
+
}
|
|
133
|
+
function r() {
|
|
134
|
+
if (typeof navigator < "u") return navigator.language;
|
|
135
|
+
}
|
|
136
|
+
function i(e) {
|
|
137
|
+
return n(e ?? r());
|
|
138
|
+
}
|
|
139
|
+
var a = t;
|
|
140
|
+
function o(e) {
|
|
141
|
+
return a = i(e), a;
|
|
142
|
+
}
|
|
143
|
+
function s() {
|
|
144
|
+
return a;
|
|
145
|
+
}
|
|
146
|
+
function c(t, r) {
|
|
147
|
+
return e[n(r ?? a)][t];
|
|
148
|
+
}
|
|
149
|
+
//#endregion
|
|
150
|
+
export { n as a, s as i, r as n, i as o, c as r, o as s, t };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./i18n-BbEy6K9z.cjs"),t=require("./SharedWorkerProtocol-4VARy5ma.cjs"),n=require("./legacySessionProvider-CKJyrade.cjs"),r=require("./Diagnostics-CgDSPlQx.cjs"),i=require("./redact-Bq26pObO.cjs");require("./diagnostics/index.cjs"),require("./createJsSipFactory-Dr8HbLl-.cjs");function a(e){if(e.code!==`OK`)throw TypeError(`Unexpected session response code: ${e.code}`);if(e.data===void 0||e.data===null)throw TypeError(`Unexpected session response: missing data`);return e.data}function o(e={}){return{version:`0.1.0`,options:e}}var s=`0.1.0`;exports.CCBarCall=n.c,exports.CCBarClient=n.r,exports.CCBarError=t.i,exports.CallManager=n.s,exports.CallStateError=n.l,exports.DEFAULT_LOCALE=e.t,exports.Diagnostics=r.t,exports.RingBuffer=r.n,exports.TypedEventBus=n.m,exports.assertCallTransition=n.u,exports.canTransition=n.d,exports.createSdk=o,exports.createSharedWorkerSelection=n.i,exports.createTokenSessionProvider=n.n,exports.detectBrowserLocale=e.n,exports.diagnosticsVersion=r.r,exports.errorMessage=e.r,exports.getCurrentLocale=e.i,exports.normalizeLocale=e.a,exports.parseSessionResponse=a,exports.redactText=i.t,exports.redactValue=i.n,exports.resolveLocale=e.o,exports.resolveWorkerUrl=n.a,exports.setCurrentLocale=e.s,exports.transition=n.f,exports.transitions=n.p,exports.version=s;
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare function createSdk(options?: CcBarSdkOptions): CcBarSdk;
|
|
|
9
9
|
export declare const version = "0.1.0";
|
|
10
10
|
export * from './types.js';
|
|
11
11
|
export * from './errors/CCBarError.js';
|
|
12
|
+
export * from './i18n/index.js';
|
|
12
13
|
export * from './events/TypedEventBus.js';
|
|
13
14
|
export * from './state/callStateMachine.js';
|
|
14
15
|
export * from './api/contracts.js';
|
|
@@ -17,3 +18,4 @@ export * from './core/CallManager.js';
|
|
|
17
18
|
export * from './core/CCBarClient.js';
|
|
18
19
|
export * from './diagnostics/index.js';
|
|
19
20
|
export * from './shared/SharedWorkerFactory.js';
|
|
21
|
+
export { createTokenSessionProvider, type TokenSessionProvider, type TokenSessionProviderOptions, type TokenSessionSeatAccount, type TokenSessionTokenResult, } from './legacy/legacySessionProvider.js';
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./i18n-D-DdHtGz.js";
|
|
2
|
+
import { i as s } from "./SharedWorkerProtocol-DvLUl0JZ.js";
|
|
3
|
+
import { a as c, c as l, d as u, f as d, i as f, l as p, m, n as h, p as g, r as _, s as v, u as y } from "./legacySessionProvider-DBrRBB3S.js";
|
|
4
|
+
import { n as b, r as x, t as S } from "./Diagnostics-DJdBDGad.js";
|
|
5
|
+
import { n as C, t as w } from "./redact-DB3CMbsK.js";
|
|
5
6
|
import "./diagnostics/index.js";
|
|
6
7
|
//#region src/api/contracts.ts
|
|
7
|
-
function
|
|
8
|
+
function T(e) {
|
|
8
9
|
if (e.code !== "OK") throw TypeError(`Unexpected session response code: ${e.code}`);
|
|
9
10
|
if (e.data === void 0 || e.data === null) throw TypeError("Unexpected session response: missing data");
|
|
10
11
|
return e.data;
|
|
11
12
|
}
|
|
12
13
|
//#endregion
|
|
13
14
|
//#region src/index.ts
|
|
14
|
-
function
|
|
15
|
+
function E(e = {}) {
|
|
15
16
|
return {
|
|
16
17
|
version: "0.1.0",
|
|
17
18
|
options: e
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
var
|
|
21
|
+
var D = "0.1.0";
|
|
21
22
|
//#endregion
|
|
22
|
-
export {
|
|
23
|
+
export { l as CCBarCall, _ as CCBarClient, s as CCBarError, v as CallManager, p as CallStateError, o as DEFAULT_LOCALE, S as Diagnostics, b as RingBuffer, m as TypedEventBus, y as assertCallTransition, u as canTransition, E as createSdk, f as createSharedWorkerSelection, h as createTokenSessionProvider, n as detectBrowserLocale, x as diagnosticsVersion, i as errorMessage, t as getCurrentLocale, e as normalizeLocale, T as parseSessionResponse, w as redactText, C as redactValue, r as resolveLocale, c as resolveWorkerUrl, a as setCurrentLocale, d as transition, g as transitions, D as version };
|