{"_id":"@94ai/softphone","_rev":"36-f1827d07985b231aa9f5d9fd19e792a0","name":"@94ai/softphone","dist-tags":{"latest":"6.0.0"},"versions":{"4.0.1":{"name":"@94ai/softphone","version":"4.0.1","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@4.0.1","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"9ce2c654ae716d62e335bd7bbc91d2456e58c7c9","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-4.0.1.tgz","fileCount":31,"integrity":"sha512-Zm737AkIltX+LB9K+sNnju+lh7cXIxsyjz3jnh76aov7tJ+2s61xiTUAxQn7e1mXv3Gh8tf1N6UIyN67nGHfMQ==","signatures":[{"sig":"MEQCIHmBcpM+c0yGWOAooPDYvQqZdWK+cKoegy3FDj3jx70xAiAEyOkuMpFxLXHMy2d76lKlQ197rTc8EKAGBK0SL9piBA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1936916},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"a804ab506606b8b28f59809df17de0bb3f3c1ccd","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"https://gitee.com/xccjh/open-softphone-demo","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.2.2","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_4.0.1_1732683644122_0.7582644553440132","host":"s3://npm-registry-packages"}},"5.0.1":{"name":"@94ai/softphone","version":"5.0.1","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.1","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"ac8f634a3f4567a18017fb6b8c60f2b87afced7a","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.1.tgz","fileCount":26,"integrity":"sha512-Taw+QLpbakcY3Yyi3zrP8ydMWay71CzA/LhfGbnJVcjfK6ul1BSVxknpSWUvNYdiWmh0zW2iiqs1vrDm7Ly8xg==","signatures":[{"sig":"MEQCIHc/qM6ULSU/zix7+fsLuW5+lB6MQBgA8nynaxrTKOskAiBI+HM6ASMqWlMwkmzIGq4IotK6fO0wDG66qBU1QeQAAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1856569},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"f5b05b6ca37bc92ae779f81d058d78b3eb485a19","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"https://gitee.com/xccjh/open-softphone-demo","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.1_1734428863963_0.7826104470251201","host":"s3://npm-registry-packages-npm-production"}},"5.0.2":{"name":"@94ai/softphone","version":"5.0.2","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.2","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"1d1ba9fb822ae9ac3b09f2115751d0a4936f4cfd","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.2.tgz","fileCount":28,"integrity":"sha512-UCrZ9nRGZl21cBMRnXRRd0zSEieATRNg2JFg/ikLwUKpBo2srm8a4zvyhbRD9obVY7Gp+zf40tA8nqOGn322Fw==","signatures":[{"sig":"MEQCIDjnZg2Nn1O92RqYf7AH9ijULtqA0lV+1CJqVbvqMDDJAiBkfXqhYa//iIJdBTYgR76LFhfz3WvQ3WG46UsqEicamw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2439205},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"2367cdebae9eb824572a8db6c71a145f270709b2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"https://gitee.com/xccjh/open-softphone-demo","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.2_1739948023801_0.10736140473003886","host":"s3://npm-registry-packages-npm-production"}},"5.0.3":{"name":"@94ai/softphone","version":"5.0.3","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.3","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"3adb16144db9c6d29da5cca4d1e7173b001738db","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.3.tgz","fileCount":28,"integrity":"sha512-8jmStoKH6aHTP8NjRYEuPIzfR923R42DVnR3/PLhQZkCADVjQP7educLt9+kbjSrHm6YKLp8XScTziqG7PRbiQ==","signatures":[{"sig":"MEUCIQCnJX+KI0cD7NriS7p56gpwDIrakrFSCwA/mlCydFp4AwIgTqygcOJHritdue4MiyXhgauZqsYawlbN1SThdDhi4VE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2439484},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"0baaf014f4b0e15d4a339ed0208dd8ef3c8dc49b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"https://gitee.com/xccjh/open-softphone-demo","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.3_1740034623345_0.47733407820200613","host":"s3://npm-registry-packages-npm-production"}},"5.0.4":{"name":"@94ai/softphone","version":"5.0.4","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.4","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"ab6a23cd60fc72001b90c765a225dd3843b38fde","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.4.tgz","fileCount":28,"integrity":"sha512-W3Mrw6XvvTtwbD+g0bzYca8cNV4pWn9Gl1IhTdCPzNuoxePL4bb7EAWYO5BO8JU7iYz+YIA3dsHa57hQcGZUnA==","signatures":[{"sig":"MEQCIEu4vN5WDRtpm6zQKpOVQQ21JLRvlOevC78U4sDyHc62AiApzBTNu1g9450gaGMvMRAwoQ1OehlPfXqNDEowstqcxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2439957},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"12a42d20eca17819612fcdaea84b5c4ccfb75ff7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"https://gitee.com/xccjh/open-softphone-demo","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.4_1740059004078_0.11733763693654553","host":"s3://npm-registry-packages-npm-production"}},"5.0.5":{"name":"@94ai/softphone","version":"5.0.5","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.5","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"12e0728b9138b2f7b37349bc9b31b6e4b29a9653","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.5.tgz","fileCount":28,"integrity":"sha512-delnY/TZjfNBWw7TEc/LJnRE+WdLSdba0P6she0TyIAPNUBRY3LzboLVFfnRSHeUw0dA3oIJEs5we27QrmSXug==","signatures":[{"sig":"MEUCIHstsmc1pFNepWPyh6ahzrfO4zw2UlhKtX8n2Mr4z4fHAiEA2UhfdZgZ1X2AW0AKFv4z2vbSYv2cUuY5NXuEVDta8no=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2440104},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"12a42d20eca17819612fcdaea84b5c4ccfb75ff7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.5_1740059545259_0.4601991940514658","host":"s3://npm-registry-packages-npm-production"}},"5.0.6":{"name":"@94ai/softphone","version":"5.0.6","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.6","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"d82b08bd835660984314fc828cb93f862439c026","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.6.tgz","fileCount":28,"integrity":"sha512-vFFYRA8YQTceJTYh4figdgsy0xSEomtQI21sWfTnSoKwSleF8RwfuIpL7awxMX4c81gppqUUjDQqE5I2Tx4zaA==","signatures":[{"sig":"MEUCIGGiinprvpcnzncpBDkzoxdWyU/gVUkAb27sZPnfh7jQAiEAvd/6oFzkjI0NOSxt5fv5QuANjgCyCMROK2vRX5WT/7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2440140},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"12a42d20eca17819612fcdaea84b5c4ccfb75ff7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.6_1740059719170_0.09187231343432511","host":"s3://npm-registry-packages-npm-production"}},"5.0.7":{"name":"@94ai/softphone","version":"5.0.7","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.7","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"0aaa094c57ced7d7f9e6c6e43b7c63491ac78bf4","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.7.tgz","fileCount":29,"integrity":"sha512-O0nj2TgJVnREGNsrMNjrYUf0PtVwQ+itmbaYJe2vXYIZy5lMXhfBbqdDxbbmGeKokZY3/7b5Odf1J3RNvBb3WQ==","signatures":[{"sig":"MEYCIQCNivSnJkV2Q3US73CTVbEHnwpT391wYtA6cHLwAdPq6wIhAMzpL0cfzUdC3MF9+7StehtRWS70UGx6ESbb4HYVbu11","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2442925},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"88b85549a7f19a773473959268e53b5bb9d516bb","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.7_1747812239138_0.9149287744199395","host":"s3://npm-registry-packages-npm-production"}},"5.0.8":{"name":"@94ai/softphone","version":"5.0.8","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.8","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"be44d48b816f2271e144da0a7269a2d3b0f943eb","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.8.tgz","fileCount":30,"integrity":"sha512-FBMVSxQuSvzAZ6SZL+7RZjiJ04G86vq7/XFWQVpAH2jMwVJTf4qCNiWQ2P81DO/Hm12q3554GgJZbwRimf74zw==","signatures":[{"sig":"MEUCIDScxWC6svA+rMnEOIyjxC7NeOCRYZYeVUfAF/CWwjRFAiEAzzNFHc1D7rkeGV/aKncEJsyoNiC62Lg5WUEvXZGWTcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2467253},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"e8c672a5dc1de4bdb9acf5863e40d2679b1da9c9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.8_1748521801098_0.15143559762706427","host":"s3://npm-registry-packages-npm-production"}},"5.0.9":{"name":"@94ai/softphone","version":"5.0.9","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.9","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"a63a799d8d9e4e6feb81a1e7b678cf156028e0bc","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.9.tgz","fileCount":29,"integrity":"sha512-X10zTR4iQg5gq1YSB3jH57iRunmSScxv8M62ZPh9kltBOmK86UakMAza/cgHl/sK6wEgeWbbVq+kkBI91aroWQ==","signatures":[{"sig":"MEUCIQD7biQ1YJ1dhE0q7uZcJyiwF4SCJE0z3au41SDH3uMGUgIgIOt42VZE8iHnbNMKp1y2MhXkXg+I6yQSr3DgTV6sr4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1937826},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"eb9092cd67eec50be1f60b6c9db6e720ef1445f2","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","actor":{"name":"nfai","type":"user","email":"zjh15018707394@gmail.com"},"email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.9_1750389530103_0.025410830253529637","host":"s3://npm-registry-packages-npm-production"}},"5.0.10":{"name":"@94ai/softphone","version":"5.0.10","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.10","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"4c8a5ca78bf98c0e6555fd6f02eda630b8a8198a","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.10.tgz","fileCount":29,"integrity":"sha512-NwvfsheqzsgPbhBo8U62jOoQHKrrgPcS88ghBreKGoFb7G1DTn/uqtEOSr3BEf68lBRlcZ30z3MOPBdo8U7G+w==","signatures":[{"sig":"MEUCIDqWKHFLnkAieq7sVnI4XbEM2PaKDxcp3parpim8NHbAAiEA7a7XsIScBfLLRYr9nskja84TqULZpKupG6ja/2nxRek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1935051},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"0fc4fe97ec2ddf1f3b850c1f12ef4b034d265e80","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.10_1761541657212_0.5161975723925563","host":"s3://npm-registry-packages-npm-production"}},"5.0.11":{"name":"@94ai/softphone","version":"5.0.11","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.11","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"c60a4f8754b34570d564f154b5b16eb17f165461","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.11.tgz","fileCount":30,"integrity":"sha512-W/vPWpZNxDHEc4ZRhAfNhQf8jndelQEEzrGlQsm44Vq1StIeijhLkIbYlANgD0daK0y2k9Ws0vLGsYBc2Z+W1g==","signatures":[{"sig":"MEYCIQCui9zU8KfPqPRaAP1WT2K1EIn+VzVzjrw8QFvir4VSuAIhAMEc1Xzqamg3+9RHqrNoVj64sEL88a+hNJHhaPIPMVe+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1958711},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"07753f7651f709caeee658e13fddbcad70cbae40","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"10.8.2","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"20.19.5","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.11_1764906382234_0.7144982194401661","host":"s3://npm-registry-packages-npm-production"}},"5.0.12":{"name":"@94ai/softphone","version":"5.0.12","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.12","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"8b56d85b8a9f91cb26dfb3e57185bd355f29d665","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.12.tgz","fileCount":44,"integrity":"sha512-gEUoB3yFJv3AkWBbadfCAS40WIMThLtOC244lVwUD5f+8eY22mDjjc3VwkvWL4pFiY/By6CCZgs811VlaV6uuQ==","signatures":[{"sig":"MEQCIATx7k07Xl9NINRsLVF88vpunvONVsccAJlGkrSByxFsAiBShxMa17a3TmfzSp7YTK9TIghaZxQcLL+YV1Xdmt5oaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24850165},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"d226793cdd2d1147e377c0fcbf31d21d6628b0b9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"9.8.1","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"18.18.0","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.12_1772610807363_0.895736599171248","host":"s3://npm-registry-packages-npm-production"}},"5.0.13":{"name":"@94ai/softphone","version":"5.0.13","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.13","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"db7e8d5b3b3c8805db609a3722a9438f3125319a","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.13.tgz","fileCount":44,"integrity":"sha512-MRSvwAZ4IuVPxTONhfgjH3Zx8RZ8qedv5MeprEMwI76D/NgBY6s/mzND1g9KP8kEa9wt/0MbNsKgFJN1OL2d3Q==","signatures":[{"sig":"MEUCIB61tySSqbX7xeAw48zdIoMQwcJn50UTNNhHT9rKhNqaAiEA+mG0b3rGjvU3IKxSH9V24S2oga17ck8NZbhh8k5RSIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24851699},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"130211b1c9eb8dce67613018d45dbc974214ce38","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"9.8.1","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"18.18.0","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.13_1774261934878_0.8374163105089067","host":"s3://npm-registry-packages-npm-production"}},"5.0.14":{"name":"@94ai/softphone","version":"5.0.14","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.14","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"e0d2fc9db303814b74f4274b726a93f97c6599c5","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.14.tgz","fileCount":44,"integrity":"sha512-eYF8f8ohpl+gypOxtEQkYITPbivwJA8v4ISoA4Hf5XLPVNxQGVWDxK9uxmzP+mb4I8pY77b3+kQ3ryzgF1Y5RQ==","signatures":[{"sig":"MEUCIQDntni9qjlANqHKipKK09/FT+EnPJkGEU7bYnHWHBNx2gIgQfUEeKwFOhaxIBbPbV2NlXPP2pjknpLR27+I7FTgLbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24851304},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"d8ce1245d07a48a069947732452fa5ccbfeb6b56","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"9.8.1","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"18.18.0","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.14_1776680479312_0.44618953079206225","host":"s3://npm-registry-packages-npm-production"}},"5.0.15":{"name":"@94ai/softphone","version":"5.0.15","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.15","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"c68b9cd0801e2b67f4c1a23335cafdf71b2a9494","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.15.tgz","fileCount":44,"integrity":"sha512-Kel0frOLoOWVEsod0OprIYrN89fmS+hkFrT6fMwa1b/Gus5Fxyq2PvndFiUd5IdUtx79L+WQuu5Ytvx1BlBonA==","signatures":[{"sig":"MEUCIFr5WHd9oiNRuVDtNii6sz5Og1fpCiS/l3bPtOytVr+IAiEA+OYEbVLg7LfAQqcx3BJfvxDl9uXbji/v85IhfvJaKEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24852039},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"ea946bcf01ab5c2250abed463997dce7ec66eafc","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"9.8.1","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"18.18.0","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.15_1778472545676_0.44746630999749715","host":"s3://npm-registry-packages-npm-production"}},"5.0.16":{"name":"@94ai/softphone","version":"5.0.16","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.16","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"40e34c847ca518ef92fa7237bc2c7b2639f0905c","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.16.tgz","fileCount":43,"integrity":"sha512-L+5PrNsmXMPwLKiMn9oeqWJJ6sdV3lgEn+tBn4DKiMo4BnCrgtLJxjVDG+gnzuzRC94E96UPYGUEdx6otsgDqA==","signatures":[{"sig":"MEYCIQC+7ApxmD0yswcB/uLlpXSw8E8Yqh6Nua8EIQv4ShtCdwIhANi0tCPhF9CWMdLzV8DiDxpQ9lxlrI226AKgqol6zjL2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13665611},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"29bd77abe1171f267dbc9dcf52ecc9e96324a992","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"10.8.2","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"20.19.5","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.16_1781602536952_0.2474684467814814","host":"s3://npm-registry-packages-npm-production"}},"5.0.17":{"name":"@94ai/softphone","version":"5.0.17","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"author":{"name":"xccjh"},"license":"ISC","_id":"@94ai/softphone@5.0.17","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"f2c90f6e2262c1b00d2f7763d50c56459034f592","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-5.0.17.tgz","fileCount":51,"integrity":"sha512-0iO1PoK6dc4SAv0z0nEKr9rueu3/rW8VrU5C5cq0NRSOE7ppgXQDqcsrKEH9dL9PyK/Y72+58CRXM4aFaohXZQ==","signatures":[{"sig":"MEUCIHe1/hg9DiNAq/sja1XpLvpIl5JAOLxiGsBjKgleOn+EAiEAsiu+9x4u0x/utQO00VCtJK+8qOSn/4UuUE4zNr+WJEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17104219},"main":"lib/softphone.cjs.min.cjs","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","module":"lib/softphone.esm-bundler.min.mjs","gitHead":"6d46d2fd76fd1815568ca8f7c37fcd33bcf6e3c4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"tmp":"tmp/softphone_5.0.17_1787127155621_0.3258083361700779","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"_id":"@94ai/softphone@6.0.0","bin":{"softphone-cli":"bin/index.js"},"dist":{"shasum":"d8aa216b252d9fd8d77e9ec488a3547c5d9467a7","tarball":"https://registry.npmjs.org/@94ai/softphone/-/softphone-6.0.0.tgz","fileCount":51,"integrity":"sha512-FEiACg96MrPRT/SeCDZ4ESvbax5o/d7dV8RXYmXMNJn8IzmxfkLuH3D0aVbcRDYIPEjNEpfbxl88JVG2tK9Hvg==","signatures":[{"sig":"MEUCIBmry9/8m+n80mpFb3MrAIAiq+bQ8a4NsvT+/K2pz0wrAiEAmbYZjR+R7fEANjtpe4CL+2GrRn9AsArs+8cJKFg31U8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAmXP/QvsODDTNtKwI4KxoOFAQjSXO4/YFXMlGkdorZgAiBBBwbMcIPKwItwXboa5EcUnjicFsLZjmSWXRekvlvjJw=="}],"unpackedSize":17275099},"main":"lib/softphone.cjs.min.cjs","name":"@94ai/softphone","babel":{"env":{"runtime":{"plugins":[["@babel/plugin-transform-runtime",{"corejs":{"version":3,"proposals":true},"useESModules":true}]]}},"presets":[["@babel/env",{"modules":false}]]},"types":"lib/index.d.ts","author":{"name":"xccjh"},"module":"lib/softphone.esm-bundler.min.mjs","gitHead":"6d46d2fd76fd1815568ca8f7c37fcd33bcf6e3c4","license":"ISC","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"npm run build:common && npm run build:umd","build:umd":"cross-env rollup -c","build:common":"cross-env BABEL_ENV=runtime rollup -c"},"version":"6.0.0","_npmUser":{"name":"nfai","email":"zjh15018707394@gmail.com"},"keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"_npmVersion":"8.19.3","description":"94 Intelligent Technology Co., Ltd softphone SDK","directories":{},"maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"_nodeVersion":"16.19.1","dependencies":{"sip.js":"^0.21.15","crypto-js":"4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.18.0","cross-env":"7.0.3","typescript":"^4.9.5","@babel/core":"^7.21.4","@types/crypto-js":"^4.2.2","@babel/preset-env":"^7.21.4","rollup-plugin-dts":"^5.3.0","@rollup/plugin-babel":"^6.0.3","eslint-define-config":"^1.16.0","rollup-plugin-terser":"^7.0.2","@babel/runtime-corejs3":"^7.21.0","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-typescript2":"^0.34.1","rollup-plugin-node-resolve":"^5.2.0","@babel/plugin-transform-runtime":"^7.21.4","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"sip.js":"^0.21.15","crypto-js":"^4.1.1","on-change":"^4.0.2","@babel/runtime-corejs3":"^7.21.0","@fingerprintjs/fingerprintjs":"^4.2.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/softphone_6.0.0_1789349678294_0.37601029029050115"}}},"time":{"created":"2024-11-27T05:00:44.025Z","modified":"2026-09-14T01:34:38.741Z","1.0.0":"2023-04-26T00:46:25.890Z","1.0.1":"2023-04-26T01:09:34.298Z","1.0.2":"2023-04-26T01:11:52.989Z","1.0.4":"2023-04-26T01:28:43.923Z","1.0.5":"2023-04-26T01:57:33.022Z","1.0.6":"2023-04-26T02:51:12.555Z","1.0.7":"2023-04-26T03:27:29.406Z","1.0.8":"2023-04-26T03:57:04.748Z","1.0.9":"2023-04-26T07:27:56.757Z","1.0.10":"2023-04-26T09:34:23.161Z","3.0.10":"2024-11-11T04:04:23.840Z","4.0.0":"2024-11-19T11:03:27.060Z","4.0.1":"2024-11-27T05:00:44.521Z","5.0.1":"2024-12-17T09:47:44.192Z","5.0.2":"2025-02-19T06:53:44.088Z","5.0.3":"2025-02-20T06:57:03.633Z","5.0.4":"2025-02-20T13:43:24.417Z","5.0.5":"2025-02-20T13:52:25.536Z","5.0.6":"2025-02-20T13:55:19.432Z","5.0.7":"2025-05-21T07:23:59.400Z","5.0.8":"2025-05-29T12:30:01.334Z","5.0.9":"2025-06-20T03:18:50.324Z","5.0.10":"2025-10-27T05:07:37.463Z","5.0.11":"2025-12-05T03:46:22.461Z","5.0.12":"2026-03-04T07:53:28.045Z","5.0.13":"2026-03-23T10:32:15.696Z","5.0.14":"2026-04-20T10:21:20.077Z","5.0.15":"2026-05-11T04:09:06.393Z","5.0.16":"2026-06-16T09:35:37.226Z","5.0.17":"2026-08-19T08:12:35.981Z","6.0.0":"2026-09-14T01:34:38.579Z"},"author":{"name":"xccjh"},"license":"ISC","keywords":["94ai, 94 Intelligent Technology Co., Ltd, softphone SDK"],"repository":{"url":"http://gitlab.94ai.pro/ui/open-softphone.git","type":"git"},"description":"94 Intelligent Technology Co., Ltd softphone SDK","maintainers":[{"name":"nfai","email":"zjh15018707394@gmail.com"},{"name":"louislxx","email":"liuxiangxiang1992@gmail.com"}],"readme":"# 前言\n\n94ai软电话前端SDK，框架无关（支持vue，react，angular等）\n\n项目参考demo: https://gitee.com/softphone-demo（有权限问题，具体找94智能开发同事拉入团队组织即可）\n\n本地调试：\nyarn add sip.js@portal:../SIP修改v2.js\n\n# 安装\n94智能sdk目前暂不在公网公布sdk源码，如有需要，可以联系94智能开发同事加入团队，具体步骤：\n\n## 获取加入团队邀请链接\n1. 向94智能开发同事申请到【加入到团队的连接】，如：\n   https://account-devops.aliyun.com/account/invite?sign=ab965d478dbed5dad3cc145a5a5b406c&next_url=https%3A%2F%2Fpackages.aliyun.com%3ForgId%3D644f755a97d94d909e43534c\n\n2. 进入上述链接后，进到阿里云登录页\n\n- 如果你是主账号，直接登录即可：\n\n  ![img.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img.png)\n\n- 如果你是RAM子账号，选择下面RAM用户登录：\n\n  ![img_1.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_1.png)\n\n  进入RAM 用户登录页登录即可:\n\n  ![img_2.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_2.png)\n\n## 阿里的数字安全码\n\n登录过程会提示你填写 验证虚拟MFA设备数字安全码\n\n### 1.如果以前使用过阿里云产品并绑定过\n可以直接在【阿里云app】或使用【虚拟MFA验证小程序】获取【数字安全码】填写即可，如下：\n- 下载阿里云app\n\n![1.jpg](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_11.jpg)\n\n- 定位首页的mfa图标\n\n![2.jpg](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_12.jpg)\n\n- 找到对应账号的数字安全码\n\n![3.jpg](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_13.jpg)\n\n### 2.如果以前没有绑定过\n- 如下面选择 虚拟 MFA 设备\n\n  ![img_5.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_5.png)\n\n- 然后在手机安装【阿里云app】或使用【小程序虚拟MFA验证】，然后扫码绑定设备\n\n  ![img_6.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_6.png)\n\n- 在设备添加账号点确定\n\n  ![img_7.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_17.png)\n\n- 之后会每隔一小段时间会刷新获取到最新的【数字安全码】\n\n  ![img_18.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_18.png)\n\n### 3.如果使用小程序\n\n在微信搜索mfa二次验证如下，具体可以百度下：\n\n![20230501-205150.jpg](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/20230501-205150.jpg)\n\n### 4.设置昵称申请加入\n\n登录成功后会提示你加入团队，设置号昵称点加入\n\n![img_4.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_4.png)\n\n![img_7.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_7.png)\n\n## 查看个人账号信息\n\n等待审核通过后，刷新页面，点击进入企业\n\n![img_8.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_8.png)\n\n### 1.选择角色\n\n选择作为研发者，开始工作\n\n![img_9.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_9.png)\n\n### 2.进入制品仓库\n在工作台选择【制品仓库】进入\n\n![Snipaste_2023-05-01_21-22-33.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/Snipaste_2023-05-01_21-22-33.png)\n\n### 3.查看账号密码\n\n选择设置查看个人账号信息\n\n![Snipaste_2023-05-01_21-24-27.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/Snipaste_2023-05-01_21-24-27.png)\n\n![Snipaste_2023-05-01_21-26-20.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/Snipaste_2023-05-01_21-26-20.png)\n\n## 设置私库源\n\n### 1.新建rc文件\n\n在需要使用94智能sdk的项目根目录,新建一个rc文件：\n\n- 如果你使用的npm或pnpm，新建.npmrc，内容如下：\n```hell\n@94ai:registry=https://packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/\n//packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:username=username\n//packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:_password=password\n//packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:always-auth=true\n```\n\n- 如果你使用的yarn1,新建.yarnrc，内容如下：\n```shell\n\"@94ai:registry\" \"https://packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/\"\n\"//packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:username\" \"username\"\n\"//packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:_password\" \"password\"\n\"//packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:always-auth\" true\n```\n\n- 如果你使用的yarn2~3,新建.yarnrc.yml，内容如下：\n```shell\nenableImmutableInstalls: false\nnodeLinker: node-modules\nyarnPath: .yarn/releases/yarn-3.1.1.cjs\n#npmRegistryServer: \"https://nexusdev.k8s.94ai.pro/repository/npm-group/\"\nnpmScopes:\n  94ai:\n    npmRegistryServer: \"https://packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/\"\n    npmAlwaysAuth: true\n    npmAuthIdent: \"username:password\"\n#unsafeHttpWhitelist:\n#  - 192.168.20.9\n```\n\n### 2.配置个人账号信息\n\n1. 把对应rc文件`username`替换成你的账号名称\n\n2. 如果你使用的是yarn1,npm或pnpm，则把你的账号密码做base64加密之后替换掉对应rc文件`password`,如在这里[在线base64加密](https://stackoverflow.org.cn/base64/)获取base64加密的密码\n\n![img_10.png](https://xccjhzjh.oss-cn-hongkong.aliyuncs.com/xccjh-images/img_10.png)\n\n3. 如果你使用的是yarn2~3,则把你的账号密码直接替换掉对应rc文件`password`\n\n### 3.安装依赖\n\n之后该项目只要是@94ai域的私包都会经过94智能私服抓取\n\n其他包【包括@94ai域私包的子包（非@94ai域）】都会经由个人电脑配置的npm包registry源抓取\n\n执行install命令即可成功安装@94ai域的所有私包，包括sdk,如\n\n```shell\n$ yarn add @94ai/softphone\n# or\n$ npm i @94ai/softphone\n# or\n$ pnpm add @94ai/softphone\n```\n\n# 使用\n## 初始化\n### 1.作为NPM包使用\n```ts\n// Example:\n// 1.softphone.ts\nimport { UserAgent, UserAgentManager, URI } from '@94ai/softphone'\nimport FingerprintJS from '@fingerprintjs/fingerprintjs'\nimport useToast from '@/utils/useToast'\n\nexport function createRandomToken(size, base = 32) {\n  let token = \"\";\n  for (let i = 0; i < size; i++) {\n    const r = Math.floor(Math.random() * base);\n    token += r.toString(base);\n  }\n  return token;\n}\n\n// transport层配置\nexport interface TransportOptions {\n  /** websocket协商地址, server和wsServers 必须二选一*/\n  server?: string\n  /** 多个地址开启负载均衡模式 */\n  wsServers?: string | string[] | {\n    /** websocket协商地址 */\n    ws_uri: string,\n    /** 权重 */\n    weight: number\n  }[]\n  /**\n   * websocke初始化连接等待超时时间\n   * @default 5\n   */\n  connectionTimeout?: number\n  /**\n   * transport层客户端保活最大重连尝试次数\n   * @default 3\n   */\n  maxReconnectionAttempts?: number\n  /**\n   * transport层客户端保活重连动作执行间隔时间，单位秒，同UserAgentOptions.reconnectionDelay\n   * @default 4\n   */\n  reconnectionTimeout?: number\n  /**\n   * transport层The time (Number) in seconds to wait in between CLRF keepAlive sequences are sent.\n   * @default 0\n   */\n  keepAliveInterval?: number\n  /**\n   * transport层The time (Number) in seconds to debounce sending CLRF keepAlive sequences by\n   * @default 10\n   */\n  keepAliveDebounce?: number\n  /**\n   * transport层If true, messages sent and received by the transport are logged.\n   * @default false\n   */\n  traceSip?: boolean\n}\n// sip层配置\nexport interface UserAgentOptions {\n  /**\n   * 通过openApi获取坐席账号分机密码\n   * @default ''\n   */\n  authorizationPassword: string,\n  /**\n   * 通过openApi获取坐席账号分机用户名\n   * @default ''\n   */\n  authorizationUsername: string,\n  /**\n   * 指纹,唯一标志,用来排查线路故障,默认随机指纹,可选\n   * @default createRandomToken(12) + \".invalid\"\n   */\n  viaHost?: string,\n  /**\n   * sip服务地址,必填，需要服务可达的地址\n   * @default new URI(\"sip\", \"anonymous.\" + createRandomToken(6), \"anonymous.invalid\") })\n   */\n  uri: URI,\n  /**\n   * sip日志查看等级，一般情况下生产开error,开发用debugger\n   * @default 'log'\n   */\n  logLevel?: 'debug' | 'log' | 'warn' | 'error',\n  /**\n   * 一般设置同authorizationUsername，相当于MicroSIP的显示名称\n   * @default createRandomToken(8)\n   */\n  contactName?: string\n  /**\n   * 签入来电后多长时间不执行接听会话自动结束会话，单位秒\n   * @default 60\n   */\n  noAnswerTimeout?: number,\n  /**\n   * transport层协议配置\n   */\n  transportOptions: TransportOptions,\n  /**\n   * sip层 - 重连尝试间隔，为了兼容sipjs，同reconnectionInterval\n   * @default 3\n   */\n  reconnectionDelay?: number,\n  /**\n   * sip层 - 重连尝试间隔，单位秒\n   * @default 3\n   */\n  reconnectionInterval?: number,\n  /**\n   * sip层 - 重连失败最大尝试次数\n   * @default 100\n   */\n  reconnectionAttempts?: number,\n  /**\n   * sip层 - 重连成功后尝试重新注册检间隔，单位秒\n   * @default 3\n   */\n  registerInterval?: number,\n  /**\n   * sip层 - 重连成功最大尝试注册次数\n   * @default 3\n   */\n  registerAttempts?: number\n  /**\n   * sip层 - ping动作间隔，单位秒\n   * @default 8\n   */\n  optionsPingInterval?: number\n  /**\n   * sip层 - ping最大失败尝试次数后开始重连，防止网络抖动引起非必要重连\n   * @default 3\n   */\n  optionsPingAttempts?: number\n  /**\n   * sip层 - 自定义通讯header\n   */\n  sipHeaders?: Array<string>;\n}\n\nexport class SoftphoneManager {\n  static #getDeviceId: () => Promise<string>\n  #userAgentManager: InstanceType<typeof UserAgentManager>\n\n  static {\n    /**\n     * 获取指纹\n     */\n    SoftphoneManager.#getDeviceId = (() => {\n      let visitorId = ''\n      return async (): Promise<string> => {\n        if (visitorId) return visitorId\n        const fp = await FingerprintJS.load()\n        const result = await fp.get()\n        visitorId = result.visitorId\n        return visitorId\n      }\n    })()\n  }\n  public async getUserAgentManager = () => {\n    if (!this.#userAgentManager) {\n      this.#userAgentManager = UserAgentFactory.getUserAgentManager(await this.initSeatsInfo()) // 👈 得到softphone代理对象\n    }\n    return this.#userAgentManager\n  }\n  public getUserAgentManagerSync = (config?: UserAgentOptions) => {\n    if (!this.#userAgentManager) {\n      this.#userAgentManager = UserAgentFactory.getUserAgentManager(config) // 👈 得到softphone代理对象\n    }\n    return this.#userAgentManager\n  }\n  /**\n   * 通过openApi获取分机信息\n   */\n  public async initSeatsInfo = (): Promise<UserAgentOptions> => {\n    const result = await getSeatsInfo()\n    if (result.code === 200) {\n      const {\n        extPassword, // 分机密码\n        extensionNumber, // 分机号\n        wsRegisterAddress, // socket地址\n        wsProtocol // socket协议\n      } = result.data\n      return {\n        authorizationPassword: extPassword,\n        authorizationUsername: extensionNumber,\n        viaHost: `${await SoftphoneManager.#getDeviceId()}.sip`,\n        uri: UserAgent.makeURI(`sip:${extensionNumber}@${wsRegisterAddress}`),\n        logLevel: 'error',\n        transportOptions: {\n          server: `${wsProtocol}://${wsRegisterAddress}`\n        },\n        contactName: extensionNumber\n      }\n    }\n    useToast.showToast('获取分机信息失败')\n    throw new Error('获取分机信息失败')\n  }\n  /**\n   * 签入\n   */\n  public connect = async () => {\n    try {\n      await this.getUserAgentManagerSync().prepareUserAgent(\n        /** config */\n        {\n          /** 当软电话状态变化时会实时刷新这个方法 */\n          refresh: (path: keyof typeof userAgentStatusDefault, value: boolean) => {\n\n          }\n        },\n        /** event */\n        {\n          /** 当有外呼过来 */\n          onInvite: async (invitation: Invitation) => {\n\n          }\n        })\n    } catch (e) {\n      const errorInfo = e as Error\n      if (errorInfo.message === 'sip register fail with code 503' ||\n              errorInfo.message.indexOf('WebSocket closed') > -1 && errorInfo.message.indexOf('code: 1006') > -1) {\n        useToast.showToast('软电话服务器异常，签入失败')\n      } else {\n        useToast.showToast(errorInfo.message)\n      }\n      throw e\n    }\n  }\n  // ...\n}\nexport default new SoftphoneManager()\n\n// 2.App.vue\nimport commonSoftphone from './softphone.ts'\nonBeforeMount(async () => {\n  await commonSoftphone.getUserAgentManager()\n})\n\n// 3. softphone.vue\n// <button @click=\"connect\">签入</button>\nimport commonSoftphone from './softphone.ts'\n// 签入\nconst connect = async () => {\n  await commonSoftphone.connect()\n}\n```\n### 2.直接在JavaScript中使用\n1. 获取umd文件\n- 确保安装了node，随手新建一个目录，打开cmd或bash。\n- 设置@4ai域账号授权，依次执行执行如下,其中`:username=xxxx`替换你的账号名字,`:_password=xxxx`替换你的账号密码在做base64加密后的结果\n```shell\nnpm config set @94ai:registry=https://packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/\nnpm config set //packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:username=xxx\nnpm config set //packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:_password=xxx\nnpm config set //packages.aliyun.com/644f755a97d94d909e43534c/npm/npm-registry/:always-auth=true\n```\n- 最后执行`npx -y @94ai/softphone -- sdk-umd`,之后在当前执行命令路径下即可获取到`softphone.umd.min.js`\n\n2. 在index.html引入`softphone.umd.min.js`文件\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\"\n        content=\"width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no\" />\n  <title>softphone</title>\n  <style>\n  #softphone-app {\n    text-align: center;\n    padding-top: 50px;\n  }\n  </style>\n</head>\n<body>\n<div id=\"softphone-app\">\n  <button id=\"connectToServer\">连接服务器</button>\n  <br>\n  <br>\n  <button id=\"disconnect\" disabled>断开连接服务器</button>\n  <br>\n  <br>\n  <button id=\"ignore\" disabled>忽略</button>\n  <br>\n  <br>\n  <button id=\"answer\" disabled>接听</button>\n  <br>\n  <br>\n  <button id=\"hangUp\" disabled>挂断</button>\n  <br>\n  <br>\n  <button id=\"press\" disabled>按*转人工</button>\n  <br>\n  <br>\n  <button id=\"localVoiceAccess\" disabled>本地声音接入</button>\n  <br>\n  <br>\n  <button id=\"remoteSoundAccess\" disabled>远程声音接入</button>\n  <br>\n  <br>\n  <button id=\"localSoundDisconnection\" disabled>本地声音断开</button>\n  <br>\n  <br>\n  <button id=\"remoteSoundDisconnection\" disabled>远程声音断开</button>\n  <br>\n  <br>\n  <audio\n          id=\"remoteAudio\"\n          controls\n          style=\"display:none\"\n  >\n    <p>Your browser doesn't support HTML5 audio - remoteAudio</p>\n  </audio>\n  <audio\n          id=\"localAudio\"\n          style=\"display:none\"\n          src=\"./antique_phone.mp3\"\n          controls\n          loop\n  >\n    <p>Your browser doesn't support HTML5 audio - localAudio</p>\n  </audio>\n</div>\n<script src=\"../lib/softphone.umd.min.js\"></script>\n<script src=\"./fp.umd.min.js\"></script>\n<script>\n/**\n *  1.确保你的企业 【坐席外呼依赖】配置项 是【标识】 （默认是【登录】，如果不确定联系94运维在管理后台查看以及配置）\n *  2. 使用 【https://94ai.yuque.com/staff-kqoz0c/xed39g/obnqst?singleDoc# 《SG-九四智能API开放文档（全）》 密码：tvgm】 3.1 获取坐席信息，以及3.2 修改坐席状态接口，保证坐席状态在线\n *  3. 点击连接服务器\n *  4. 在决策外呼一个任务，确保你的坐席账号在任务配置的坐席组里\n *  5. 电话过来后会触发签入注册好的onInvite，这个时候就可以接听，挂断，忽略，转人工，静音等等\n *  6. 《SG-九四智能API开放文档（全）》该文档获取授权调用接口的问题找 航航同学\n */\n\nconst getDeviceId = (() => {\n  let visitorId = ''\n  return async () => {\n    if (visitorId) return visitorId\n    const fp = await FingerprintJS.load()\n    const result = await fp.get()\n    visitorId = result.visitorId\n    return visitorId\n  }\n})()\ndocument.addEventListener('DOMContentLoaded', async (event) => {\n  const phoneRing = './antique_phone.mp3' // 👈 铃声自己当以一个音频即可\n  const ignore = document.getElementById('ignore')\n  const answer = document.getElementById('answer')\n  const hangUp = document.getElementById('hangUp')\n  const connectToServer = document.getElementById('connectToServer')\n  const disconnect = document.getElementById('disconnect')\n  const press = document.getElementById('press')\n  const localVoiceAccess = document.getElementById('localVoiceAccess')\n  const remoteSoundAccess = document.getElementById('remoteSoundAccess')\n  const localSoundDisconnection = document.getElementById('localSoundDisconnection')\n  const remoteSoundDisconnection = document.getElementById('remoteSoundDisconnection')\n  const localAudio = document.getElementById('localAudio')\n  const remoteAudio = document.getElementById('remoteAudio')\n  const viaHost = `${await getDeviceId()}.sip`\n  /** 接口获取开始 */\n  /** 通过接口获取  https://94ai.yuque.com/staff-kqoz0c/xed39g/obnqst?singleDoc# 《SG-九四智能API开放文档（全）》 密码：tvgm 👈 不知道怎么调接口找 航航同学 */\n  /** 3.1坐席相关接口查询坐席信息 */\n  const extensionNumber = '9288'\n  const extPassword = 'zjh13542240708'\n  const wsProtocol = 'wss'\n  const wsRegisterAddress = 's28.94ai.com:7443'\n  const sipServerHost = `sip:${extensionNumber}@${wsRegisterAddress}`\n  const wsAddress = `${wsProtocol}://${wsRegisterAddress}`\n  /** 3.2修改坐席账号状态 */\n  const request = {\n    post(url) {\n      console.log('写你的调用的openapi改坐席状态，要写好它')\n    }\n  }\n  const editSeats = async (params) => {\n    return request.post('/seats/editLineStatus')\n  }\n  await editSeats({ lineStatus: 1 })\n  /** 接口获取结束 */\n\n  const {\n    UserAgentFactory,\n    UserAgent,\n    playMedia,\n    pauseMedia,\n    SessionState,\n    getMedia\n  } = softphone // 👈 sdk\n\n  /**\n   * 开启电话响铃\n   */\n  const phoneRings = () => {\n    remoteAudio.src = phoneRing\n    playMedia('localAudio')\n  }\n\n  /**\n   * 关闭电话响铃\n   */\n  const stopPhoneRings = () => {\n    remoteAudio.src = ''\n    pauseMedia('localAudio')\n  }\n\n  /**\n   * 获取软电话代理实例\n   */\n  const userAgentManager = UserAgentFactory.getUserAgentManager({\n    authorizationPassword: extPassword,\n    authorizationUsername: extensionNumber,\n    viaHost,\n    uri: UserAgent.makeURI(sipServerHost),\n    logLevel: 'error',\n    transportOptions: {\n      server: wsAddress\n    },\n    contactName: extensionNumber\n  })\n\n  /**\n   * 签入\n   */\n  const connect = () => {\n    userAgentManager.prepareUserAgent(\n            { // config\n              refresh (path, value) { // 当软电话状态变化时会实时刷新这个方法\n                console.log(path, value)\n              }\n            },\n            { // event\n              onInvite (invitation) { // 当有外呼过来\n                syncSipMessage(invitation.incomingInviteRequest.message.headers)\n                phoneRings() // 播放模拟来电响铃\n                ignore.disabled = false\n                answer.disabled = false\n                localSoundDisconnection.disabled = false\n                remoteSoundDisconnection.disabled = false\n                invitation.stateChange.addListener((state) => { // 一旦接听（执行accept）,监听会话的生命周期\n                  switch (state) {\n                    case SessionState.Initial:\n                      break\n                    case SessionState.Establishing:\n                      break\n                    case SessionState.Established: // session建立后就可拿到webrtc的各种基础api，如userAgentManager.getPeerConnection(),如userAgentManager.getSenders()等等\n                      const mediaElement1 = getMedia('remoteAudio')\n                      mediaElement1.srcObject = userAgentManager.getStream() // 获取流\n                      mediaElement1.play() // 把softphone流导入到audio接入用户语音\n                      hangUp.disabled = false\n                      break\n                    case SessionState.Terminating:\n                    case SessionState.Terminated: // 在挂断电话时候会执行\n                      ignore.disabled = true\n                      answer.disabled = true\n                      hangUp.disabled = true\n                      localSoundDisconnection.disabled = true\n                      remoteSoundDisconnection.disabled = true\n                      localVoiceAccess.disabled = true\n                      remoteSoundAccess.disabled = true\n                      const mediaElement2 = getMedia('remoteAudio') // 获取audio dom\n                      mediaElement2.srcObject = null\n                      mediaElement2.pause() // 释放audio\n                      stopPhoneRings()\n                      break\n                    default:\n                      throw new Error('Unknown session state.')\n                  }\n                })\n              }\n            }\n    )\n    disconnect.disabled = false\n    connectToServer.disabled = true\n    ignore.disabled = true\n    answer.disabled = true\n    hangUp.disabled = true\n    localSoundDisconnection.disabled = true\n    remoteSoundDisconnection.disabled = true\n    localVoiceAccess.disabled = true\n    remoteSoundAccess.disabled = true\n  }\n\n  /**\n   * 签出\n   */\n  const disConnect = () => {\n    userAgentManager.dispose() // 👈 一个方法安全销毁\n    connectToServer.disabled = false\n    disconnect.disabled = true\n    ignore.disabled = true\n    answer.disabled = true\n    hangUp.disabled = true\n    localSoundDisconnection.disabled = true\n    remoteSoundDisconnection.disabled = true\n    localVoiceAccess.disabled = true\n    remoteSoundAccess.disabled = true\n  }\n\n  /**\n   * 先监听后接听\n   */\n  let monitorFirstAnswerAfter = true // 先监听任务需要 按*号转人工 才可以让用户听到坐席声音\n  /**\n   * sip协议通讯\n   */\n  const syncSipMessage = (headers) => {\n    monitorFirstAnswerAfter = !(String(headers['X-Aftertransferlabour'] && headers['X-Aftertransferlabour'][0].raw) === '1')\n  }\n\n  /**\n   * 按*号转人工\n   */\n\n  const sendStarDtmf = () => {\n    if (monitorFirstAnswerAfter) {\n      userAgentManager.sendStarDtmf()\n      press.disabled = true\n    }\n  }\n\n  /**\n   * 挂断\n   */\n  const hangUpInvite = () => {\n    stopPhoneRings() // 暂停来电铃声\n    userAgentManager.hangUpInvite() // 👈\n    ignore.disabled = true\n    answer.disabled = true\n    hangUp.disabled = true\n    localSoundDisconnection.disabled = true\n    remoteSoundDisconnection.disabled = true\n    localVoiceAccess.disabled = true\n    remoteSoundAccess.disabled = true\n  }\n  /**\n   * 忽略\n   */\n  const ignoreInvite = () => {\n    stopPhoneRings() // 暂停来电铃声\n    userAgentManager.ignoreInvite()\n    ignore.disabled = true\n    answer.disabled = true\n    hangUp.disabled = true\n    localSoundDisconnection.disabled = true\n    remoteSoundDisconnection.disabled = true\n    localVoiceAccess.disabled = true\n    remoteSoundAccess.disabled = true\n  }\n  /**\n   * 接听\n   */\n  const acceptInvite = () => {\n    stopPhoneRings() // 暂停来电铃声\n    userAgentManager.acceptInvite()\n    if (monitorFirstAnswerAfter) {\n      press.disabled = false\n    }\n    hangUp.disabled = false\n    answer.disabled = true\n    ignore.disabled = true\n  }\n\n  /**\n   * 传输本地声音到远端\n   */\n  const unMuteLocalAudio = () => {\n    localVoiceAccess.disabled = true\n    localSoundDisconnection.disabled = false\n    userAgentManager.unMuteLocalAudio()\n  }\n  /**\n   * 不传输本地声音到远端\n   */\n  const muteLocalAudio = () => {\n    remoteSoundAccess.disabled = true\n    remoteSoundDisconnection.disabled = false\n    userAgentManager.muteLocalAudio()\n  }\n  /**\n   * 接听远端声音\n   */\n  const unMuteRemoteAudio = () => {\n    localSoundDisconnection.disabled = true\n    localVoiceAccess.disabled = false\n    userAgentManager.unMuteRemoteAudio()\n  }\n  /**\n   * 不接听远端声音\n   */\n  const muteRemoteAudio = () => {\n    remoteSoundDisconnection.disabled = true\n    remoteSoundAccess.disabled = false\n    userAgentManager.muteRemoteAudio()\n  }\n\n  /** 注册事件开始 */\n  ignore.addEventListener('click', ignoreInvite)\n  answer.addEventListener('click', acceptInvite)\n  hangUp.addEventListener('click', hangUpInvite)\n  connectToServer.addEventListener('click', connect)\n  disconnect.addEventListener('click', disConnect)\n  press.addEventListener('click', sendStarDtmf)\n  localVoiceAccess.addEventListener('click', unMuteLocalAudio)\n  remoteSoundAccess.addEventListener('click', muteLocalAudio)\n  localSoundDisconnection.addEventListener('click', unMuteRemoteAudio)\n  remoteSoundDisconnection.addEventListener('click', muteRemoteAudio)\n  /** 注册事件结束 */\n})\n\n\n</script>\n</body>\n</html>\n```\n[](https://cdn.nlark.com/yuque/0/2023/gif/548727/1684390483858-5531b7e1-8f1d-4319-b18f-dcc123dceae6.gif)\n\n> 1. tip 获取fingerprintjs: https://unpkg.com/@fingerprintjs/fingerprintjs@3.4.1/dist/fp.umd.min.js\n> 2. const phoneRing = './antique_phone.mp3' // 👈 铃声自己当以一个音频即可\n> 3. ￳直接双击打开的html的demo打电话这个模拟不了线上域名部署环境可能出现的问题，可以实现看各种接听挂断签入转人工等效果，file协议和localhost默认在浏览器安全域名内。注意线上环境浏览器是有限制要https协议的，http是使用不了浏览器webrtc的api的，要配置下浏览器安全上下文域名白名单\n\n## 签入\n```js\nimport { playMedia, getMedia, SessionState } from '@94ai/softphone'\nimport { ref } from 'vue'\nimport popNotice from './usePopNotice.ts'  // 通知工具，见下面demo说明\n\nconst userAgentStatus = ref({ // 视图层响应式\n  connectStatus: false, // 软电话是否已签入\n  registerStatus: false, // 软电话是否已注册\n  invitatingStatus: false, // 软电话是否正拨出\n  incomingStatus: false, // 软电话是否正来电\n  answerStatus: false, // 软电话是否正接听\n  reconnectStatus: false, // 软电话是否正重连\n})\n\nuserAgentManager.prepareUserAgent(\n        { // config\n          refresh(path, value) { // 当软电话状态变化时会实时刷新这个方法\n            userAgentStatus[path] = value // 外部想要响应状态可以实时更新外部的userAgentStatus\n          }\n        },\n        { // event\n          onInvite(invitation) { // 当有外呼过来\n            playMedia('localAudio') // 播放模拟来电响铃\n            popNotice.popNotification('来电了') // 提示通知   来电了\n            invitation.stateChange.addListener((state) => { // 一旦接听（执行accept）,监听会话的生命周期\n              switch (state) {\n                case SessionState.Initial:\n                  break\n                case SessionState.Establishing:\n                  break\n                case SessionState.Established: // session建立后就可拿到webrtc的各种基础api，如userAgentManager.getPeerConnection(),如userAgentManager.getSenders()等等\n                  const mediaElement1 = getMedia('remoteAudio')\n                  mediaElement1.srcObject = userAgentManager.getStream() // 获取流\n                  mediaElement1.play() // 把softphone流导入到audio接入用户语音\n                  break\n                case SessionState.Terminating:\n                case SessionState.Terminated: // 在挂断电话时候会执行\n                  const mediaElement2 = getMedia('remoteAudio') // 获取audio dom\n                  mediaElement2.srcObject = null\n                  mediaElement2.pause() // 释放audio\n                  break\n                default:\n                  throw new Error('Unknown session state.')\n              }\n            })\n          }\n        })\n```\n## 接听\n```js\nimport { refreshShowTime, pauseMedia } from '@94ai/softphone'\n\nconst acceptInvite = () => {\n  refreshShowTime() // 重新计算通话时长(非必须)\n  pauseMedia('localAudio') // 暂停来电铃声(非必须)\n  userAgentManager.acceptInvite() // 👈 接入电话流\n}\n```\n## 忽略\n```js\nimport { pauseMedia } from '@94ai/softphone'\n\nconst ignoreInvite = () => {\n  pauseMedia('localAudio') // 暂停来电铃声(非必须)\n  userAgentManager.ignoreInvite() // 👈 忽略\n}\n```\n## 挂断\n```js\nimport { refreshShowTime } from '@94ai/softphone'\n\nconst hangUpInvite = () => {\n  refreshShowTime() // 重新计算通话时长(非必须)\n  userAgentManager.hangUpInvite() // 👈 挂断\n}\n```\n## 按*号转人工\n```js\nimport { refreshShowTime } from '@94ai/softphone'\n\nconst sendStarDtmf = () => {\n  refreshShowTime() // 重新计算通话时长(非必须)\n  userAgentManager.sendStarDtmf() // 👈 按*号转人工\n}\n```\n\n## 销毁\n```js\nimport { refreshShowTime } from '@94ai/softphone'\n\nconst disconnect = () => {\n  refreshShowTime() // 重新计算通话时长(非必须)\n  userAgentManager.dispose() // 👈 一个方法安全销毁\n}\n```\n## 传输本地声音到远端\n```js\nconst unMuteLocalAudio = () => {\n  userAgentManager.unMuteLocalAudio() // 👈 通过webrtc的方式控制 本地音频流 推送到 远端\n}\n```\n## 不传输本地声音到远端\n```js\nconst muteLocalAudio = () => {\n  userAgentManager.muteLocalAudio() // 👈 通过webrtc的方式控制 本地音频流 禁用推送\n}\n```\n## 接听远端声音\n```js\nconst unMuteRemoteAudio = () => {\n  userAgentManager.unMuteRemoteAudio() // 👈 通过webrtc的方式控制 是否接受 远端音频流\n} \n```\n## 不接听远端声音\n```js\nconst muteRemoteAudio = () => {\n  userAgentManager.muteRemoteAudio() // 👈 通过webrtc的方式控制 是否接受 远端音频流\n}\n```\n## 获取webrtc基础api\n```js\nconst senders = userAgentManager.getSenders()\nconst receivers = userAgentManager.getReceivers()\nconst peerConnection = userAgentManager.getPeerConnection()\n```\n## 获取代理用户相关sip协议通讯实例\n```js\nconst userAgent = userAgentManager.getUserAgent()\nconst sessionDescriptionHandler = userAgentManager.getSessionDescriptionHandler()\nconst currentInvitation = userAgentManager.getCurrentInvitation()\nconst currentInviter = userAgentManager.getCurrentInviter()\nconst localMixedMediaStream = userAgentManager.getStream()\n```\n## 查看代理用户目前状态\n```ts\ninterface userAgentStatus {\n  connectStatus: boolean, // 软电话是否已签入\n  registerStatus: boolean, // 软电话是否已注册\n  invitatingStatus: boolean, // 软电话是否正拨出\n  incomingStatus: boolean, // 软电话是否正来电\n  answerStatus: boolean, // 软电话是否正接听\n  reconnectStatus: boolean, // 软电话是否正在重连，网络断掉，服务器重启，宕机等引起服务不可达时软电话代理会尝试重新连接并签入。这个时候用户拨出等动作可以通过此状态做拦截，通知用户软电话服务器可能正重启或断网等导致服务不可用\n}\nconst userAgentStatus: userAgentStatus = userAgentManager.getUserAgentStatue()\n```\n\n> 软电话状态可以根据企业特定业务流程定制扩展额外的状态，如94智能决策系统 额外扩展了 【监听中】，【整理中】，【小休中】等状态\n\n","readmeFilename":"README.md"}