@94ai/softphone 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarnrc.yml +19 -0
- package/README.md +941 -0
- package/bin/index.js +50 -0
- package/html-softphone-demo/CryptoJS.js +3 -0
- package/html-softphone-demo/README.md +10 -0
- package/html-softphone-demo/RootCA.pem +20 -0
- package/html-softphone-demo/antique_phone.mp3 +0 -0
- package/html-softphone-demo/cert.pem +21 -0
- package/html-softphone-demo/fp.umd.min.js +9 -0
- package/html-softphone-demo/gg.xccjh.top.key +27 -0
- package/html-softphone-demo/gg.xccjh.top.pem +61 -0
- package/html-softphone-demo/index-test.html +867 -0
- package/html-softphone-demo/index.html +845 -0
- package/html-softphone-demo/localhost.crt +21 -0
- package/html-softphone-demo/localhost.key +28 -0
- package/html-softphone-demo/pcm-player.js +131 -0
- package/html-softphone-demo/private.key +28 -0
- package/html-softphone-demo/softphone.umd.min.js +2 -0
- package/html-softphone-demo/tapd_35238004_base64_1695010473_859.gif +0 -0
- package/html-softphone-demo/test.html +190 -0
- package/html-softphone-demo.7z +0 -0
- package/lib/index.d.ts +531 -0
- package/lib/softphone.cjs.min.cjs +1 -0
- package/lib/softphone.esm-bundler.min.mjs +1 -0
- package/lib/softphone.umd.min.js +2 -0
- package/package.json +88 -0
- package/src/const/index.ts +120 -0
- package/src/index.ts +123 -0
- package/src/sdk/index.ts +1986 -0
- package/src/types/index.ts +343 -0
- package/src/utils/index.ts +301 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDczCCAlugAwIBAgIUXpQZ+3iWD7bb+5y4bQmV0h7IX60wDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwJzELMAkGA1UEBhMCVVMxGDAWBgNVBAMMD0V4YW1wbGUtUm9vdC1DQTAeFw0x
|
|
4
|
+
OTA5MTkwNDA0MjdaFw0yMjA3MDkwNDA0MjdaMG0xCzAJBgNVBAYTAlVTMRIwEAYD
|
|
5
|
+
VQQIDAlZb3VyU3RhdGUxETAPBgNVBAcMCFlvdXJDaXR5MR0wGwYDVQQKDBRFeGFt
|
|
6
|
+
cGxlLUNlcnRpZmljYXRlczEYMBYGA1UEAwwPbG9jYWxob3N0LmxvY2FsMIIBIjAN
|
|
7
|
+
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoud24POt5P3Tx6hLOHSQeW/W+nk+
|
|
8
|
+
rE4/3M/wAXN6HXKZApb8h2xkXbwUmEZ1qenxZz6bQ/i9cBgZrEjtg1z+Vw5fa01L
|
|
9
|
+
mWUIVSd5U+xOazJP6276JGs4nwz0H5FP8BsghVjX26TF27XXzI6eg0SEOJWCoyfB
|
|
10
|
+
E7S/4/wuXeAdERu+KSQadtT8B4Q5Y0AGm/AK9nQYsDgBkn5oibRRhwzFPiWOJN2N
|
|
11
|
+
W9M2SgQfOQXpf4kWrt+IJ4UUWZ6gX7sXwhAV3rYkp1jCCZEClhR4AP22M2+1Ebxf
|
|
12
|
+
21WiHo8lrtnF7NMHqFiVd8dk9XutoQ94/5VUXAPwX8rg2ina6p9wcJJAZQIDAQAB
|
|
13
|
+
o1EwTzAfBgNVHSMEGDAWgBTy0wbamFk9icegmCuR2nwNxn8lvzAJBgNVHRMEAjAA
|
|
14
|
+
MAsGA1UdDwQEAwIE8DAUBgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQEL
|
|
15
|
+
BQADggEBABUZaFT9qdvrjEpWHlCFjsy2CmrCx4ns5dHbPoCQz8R7GOQn35A1hAS5
|
|
16
|
+
65UbM0+sU193jcswgv19AfXw3NHP9FQNnMZ5nS0iFGCv7D418oxOhjnnSo+ExTf7
|
|
17
|
+
7iKq/9Jc3hlWD6Te1INwlHWT1VYU2LeUf7rShsY1SgDjhkHk2B+s63OVO/aMm1XH
|
|
18
|
+
Lnhn7jdhdgyEcttD4iOmvDPCz13zCSyM8l1vlg+uX3/OpYJIB0onXPNI5Kn25uLQ
|
|
19
|
+
ujLU77qhVuarC/gUx1yTHpIrwcTii4I1kTMgivxe0yBewWtuArgaMknP3pd7X2fN
|
|
20
|
+
VTfNjktqeAK+qZCqLcqjJfZzKimxuH8=
|
|
21
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCi53bg863k/dPH
|
|
3
|
+
qEs4dJB5b9b6eT6sTj/cz/ABc3odcpkClvyHbGRdvBSYRnWp6fFnPptD+L1wGBms
|
|
4
|
+
SO2DXP5XDl9rTUuZZQhVJ3lT7E5rMk/rbvokazifDPQfkU/wGyCFWNfbpMXbtdfM
|
|
5
|
+
jp6DRIQ4lYKjJ8ETtL/j/C5d4B0RG74pJBp21PwHhDljQAab8Ar2dBiwOAGSfmiJ
|
|
6
|
+
tFGHDMU+JY4k3Y1b0zZKBB85Bel/iRau34gnhRRZnqBfuxfCEBXetiSnWMIJkQKW
|
|
7
|
+
FHgA/bYzb7URvF/bVaIejyWu2cXs0weoWJV3x2T1e62hD3j/lVRcA/BfyuDaKdrq
|
|
8
|
+
n3BwkkBlAgMBAAECggEBAIoP75GRFETp1q309ONA7xzsa19WmIZBvyAuXvNr4gfJ
|
|
9
|
+
EuK+AgHoHFvQxgeUV66MpdphlgeSbULuOfvoxts5WhmABeCT3sl/dgNtdAdrU77I
|
|
10
|
+
IjGfmYJ6GL+7o76JUh1lcDdzZ2YwjLu7rswf5znLPOAT3mbWj21bF/JpzQYkpZ3T
|
|
11
|
+
8Z8xIjCHaZjjYhc3BXTqsC916wCgo3xrMFuuVvHJNVFQLyrdVONa9ny0EJeqipDf
|
|
12
|
+
3L/InMi5Dv+Mi0jMsGv3FgCTpgUmtJL1csKOyH4uE4AB4YQFmbGjpYjHXpp4zz8b
|
|
13
|
+
THmBMxoti6bL3gzbKm05r55b/TUwj4YeUmpUjdz0D/UCgYEA2MFGaCYYVT4D8vQj
|
|
14
|
+
4siXwoEwOrLhV+p1DEsk/yo6i5qyJLNU5Amy2u2B6Zk/rM9sKFmFovgYR4ogLdKQ
|
|
15
|
+
asoCV6JoKrtldqT8P55DXxXburbPBpOa9kV3yc8gIUNHIVa4KXgup5a1LS39wJM9
|
|
16
|
+
/obwdt5AVQY+gnzfUIzqoS1BdVMCgYEAwGYrxsytBro/9e4Dxy8iHMzwFPRbbrvw
|
|
17
|
+
nYu+h32MnnHt0QzHI1sYpYzPEFofNXyYhQJb7NuWVofOmEi4+WSgZMx1ZjUaC0J3
|
|
18
|
+
AcVTq9dQ25izF6J1XOLrQag9ufY9EXFtpMUE1mPH1VZ4oFVI+vcF/gReTCgLLbHF
|
|
19
|
+
YNJdqmNmRGcCgYAzw3xv9OEMwmGpDLrhNuxfLAD7k6qTF0/anrt4IHqYylnOv/D/
|
|
20
|
+
AH3xIJVM1ydIusRmonJyp/MMaqUirE2G4zVJ/mQICHbDrcT74GzQcWTnIy8vr+Jq
|
|
21
|
+
+84OqONQbkO3Z4FVjfj+VtRvtLML4V4Fwe39RThx1arp+K5QC0chNLCUNwKBgC/Y
|
|
22
|
+
uMZFnDnyE3nraREdzZPv+zya0ConntzvJcC4HkJA/u1gCh3mx6hT7iKY5u38QEnD
|
|
23
|
+
nmy25xo5x8zjOOz8c07d8cwrJIDsVIAiPH6dm0QhI1ibVCh3Xh4D4uXeMK2n0aaK
|
|
24
|
+
QHu4cLfDO1hUHUQcLmdPWswBoVYJwZYkepqnAYW9AoGAU9OZXkLySmLO+Hqnfnqu
|
|
25
|
+
b8Uk448QK/AQfqeCqIEFyXELqEGaP5dN08uqqoSJZ+RNlfnnJP+B/kZtjBavEfHI
|
|
26
|
+
+SVoyIXnz0fR9OByM/Pwxfa6i5qatMPIWKmKQ8H4A6H6cnDT9OI8h2I2GwF3uw7n
|
|
27
|
+
OLn5GfsNI0aM8EEfynUI/ck=
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
function PCMPlayer(option) {
|
|
2
|
+
this.init(option);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
PCMPlayer.prototype.init = function(option) {
|
|
6
|
+
var defaults = {
|
|
7
|
+
encoding: '16bitInt',
|
|
8
|
+
channels: 1,
|
|
9
|
+
sampleRate: 8000,
|
|
10
|
+
flushingTime: 1000
|
|
11
|
+
};
|
|
12
|
+
this.option = Object.assign({}, defaults, option);
|
|
13
|
+
this.samples = new Float32Array();
|
|
14
|
+
this.flush = this.flush.bind(this);
|
|
15
|
+
this.interval = setInterval(this.flush, this.option.flushingTime);
|
|
16
|
+
this.maxValue = this.getMaxValue();
|
|
17
|
+
this.typedArray = this.getTypedArray();
|
|
18
|
+
this.createContext();
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
PCMPlayer.prototype.getMaxValue = function () {
|
|
22
|
+
var encodings = {
|
|
23
|
+
'8bitInt': 128,
|
|
24
|
+
'16bitInt': 32768,
|
|
25
|
+
'32bitInt': 2147483648,
|
|
26
|
+
'32bitFloat': 1
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return encodings[this.option.encoding] ? encodings[this.option.encoding] : encodings['16bitInt'];
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
PCMPlayer.prototype.getTypedArray = function () {
|
|
33
|
+
var typedArrays = {
|
|
34
|
+
'8bitInt': Int8Array,
|
|
35
|
+
'16bitInt': Int16Array,
|
|
36
|
+
'32bitInt': Int32Array,
|
|
37
|
+
'32bitFloat': Float32Array
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return typedArrays[this.option.encoding] ? typedArrays[this.option.encoding] : typedArrays['16bitInt'];
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
PCMPlayer.prototype.createContext = function() {
|
|
44
|
+
this.audioCtx = new (window.AudioContext || window.webkitAudioContext)();
|
|
45
|
+
|
|
46
|
+
// context needs to be resumed on iOS and Safari (or it will stay in "suspended" state)
|
|
47
|
+
this.audioCtx.resume();
|
|
48
|
+
this.audioCtx.onstatechange = () => console.log(this.audioCtx.state); // if you want to see "Running" state in console and be happy about it
|
|
49
|
+
|
|
50
|
+
this.gainNode = this.audioCtx.createGain();
|
|
51
|
+
this.gainNode.gain.value = 1;
|
|
52
|
+
this.gainNode.connect(this.audioCtx.destination);
|
|
53
|
+
this.startTime = this.audioCtx.currentTime;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
PCMPlayer.prototype.isTypedArray = function(data) {
|
|
57
|
+
return (data.byteLength && data.buffer && data.buffer.constructor == ArrayBuffer);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
PCMPlayer.prototype.feed = function(data) {
|
|
61
|
+
if (!this.isTypedArray(data)) return;
|
|
62
|
+
data = this.getFormatedValue(data);
|
|
63
|
+
var tmp = new Float32Array(this.samples.length + data.length);
|
|
64
|
+
tmp.set(this.samples, 0);
|
|
65
|
+
tmp.set(data, this.samples.length);
|
|
66
|
+
this.samples = tmp;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
PCMPlayer.prototype.getFormatedValue = function(data) {
|
|
70
|
+
var data = new this.typedArray(data.buffer),
|
|
71
|
+
float32 = new Float32Array(data.length),
|
|
72
|
+
i;
|
|
73
|
+
|
|
74
|
+
for (i = 0; i < data.length; i++) {
|
|
75
|
+
float32[i] = data[i] / this.maxValue;
|
|
76
|
+
}
|
|
77
|
+
return float32;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
PCMPlayer.prototype.volume = function(volume) {
|
|
81
|
+
this.gainNode.gain.value = volume;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
PCMPlayer.prototype.destroy = function() {
|
|
85
|
+
if (this.interval) {
|
|
86
|
+
clearInterval(this.interval);
|
|
87
|
+
}
|
|
88
|
+
this.samples = null;
|
|
89
|
+
this.audioCtx.close();
|
|
90
|
+
this.audioCtx = null;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
PCMPlayer.prototype.flush = function() {
|
|
94
|
+
if (!this.samples.length) return;
|
|
95
|
+
var bufferSource = this.audioCtx.createBufferSource(),
|
|
96
|
+
length = this.samples.length / this.option.channels,
|
|
97
|
+
audioBuffer = this.audioCtx.createBuffer(this.option.channels, length, this.option.sampleRate),
|
|
98
|
+
audioData,
|
|
99
|
+
channel,
|
|
100
|
+
offset,
|
|
101
|
+
i,
|
|
102
|
+
decrement;
|
|
103
|
+
|
|
104
|
+
for (channel = 0; channel < this.option.channels; channel++) {
|
|
105
|
+
audioData = audioBuffer.getChannelData(channel);
|
|
106
|
+
offset = channel;
|
|
107
|
+
decrement = 50;
|
|
108
|
+
for (i = 0; i < length; i++) {
|
|
109
|
+
audioData[i] = this.samples[offset];
|
|
110
|
+
/* fadein */
|
|
111
|
+
if (i < 50) {
|
|
112
|
+
audioData[i] = (audioData[i] * i) / 50;
|
|
113
|
+
}
|
|
114
|
+
/* fadeout*/
|
|
115
|
+
if (i >= (length - 51)) {
|
|
116
|
+
audioData[i] = (audioData[i] * decrement--) / 50;
|
|
117
|
+
}
|
|
118
|
+
offset += this.option.channels;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (this.startTime < this.audioCtx.currentTime) {
|
|
123
|
+
this.startTime = this.audioCtx.currentTime;
|
|
124
|
+
}
|
|
125
|
+
console.log('start vs current '+this.startTime+' vs '+this.audioCtx.currentTime+' duration: '+audioBuffer.duration);
|
|
126
|
+
bufferSource.buffer = audioBuffer;
|
|
127
|
+
bufferSource.connect(this.gainNode);
|
|
128
|
+
bufferSource.start(this.startTime);
|
|
129
|
+
this.startTime += audioBuffer.duration;
|
|
130
|
+
this.samples = new Float32Array();
|
|
131
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLTDLHqk88nm2p
|
|
3
|
+
WhAp0g8YdAgZiYe5zXw0pTDGPUYsMmkpUiRaOktI+NS8zYK+4G1uyogP8+ZbrtaC
|
|
4
|
+
QjlhCuVn1Q5r5NuMhoQ5e7ulSDG+IR3cVZ/x6pq6ijeDcq4vVYnH9BinD0hBw4rV
|
|
5
|
+
PWvzQa6GkGCcj/+mvlx90WPnusye/oQpDZCaVXWcmSx/eRp6lZ5bsUNDGlj69ypI
|
|
6
|
+
ZTw2XsZcmM6PEVLJ5HVUStNncy/ReFgprBoLrEi8y2GaUbBPyWZOHd6l5Bu1IwMm
|
|
7
|
+
BgD8e3jbjyU7wTDcP1rGebxOz24dbcnPETA0dVfOIp4f/UUSMoQ84impfBaqKywd
|
|
8
|
+
01XBBQ2FAgMBAAECggEAG7ttQedtn6tM8kki41GQVZmecT1dkm8Bfnz6RlCdffHy
|
|
9
|
+
fnyCEPzawD2RZ5/xMfCTfQWLwgFXbzJOeL5n7WD7IkriCL3TZTwEVYMXedh7UKBb
|
|
10
|
+
3m6fvvRt3vxzzi6arEJS5T/bDQ78oFv4WFZkn25aTGjthO3vxeM54r/pjPbiat23
|
|
11
|
+
E7nTUEEPnNW4qQUvnZn4ozdQfZCd8jvKwExXVq7NUfL5chvr5x0uOpOkM4J4lRzJ
|
|
12
|
+
ungrE2hXXHRs19sAWT3rp5hKpprzMts2VVIobooqdyoazg2TPPddM49zNfvHD4xS
|
|
13
|
+
+cL7bWAx+K2IFWb1FANFOyZ/7FWdVQ5Ndbuu8nF2gQKBgQDlbHdcPldzOCRH6liZ
|
|
14
|
+
U5TdsO4wWlPxSNoxN2adxmzCSRREwejAdLcYo1XQNrKYMvwg4nqIGzPL8Cia5W1X
|
|
15
|
+
iRLoOebIFcDZA+cGrjZC6SV0hEp7leTKX7xsecK0HI942DE4gAPunkOQ1TxSp3Op
|
|
16
|
+
3SfZ50/CpzCtxxTN/22EUglEiQKBgQDi2PeXm2/7WeFvcVZSHE4eU/DmGTG+jREI
|
|
17
|
+
TD0N6fw1xAR/k4FImH8bLjY4tKCh8JJ4W98OV+sQa6AaxZ6V0d94/ul6tCwkoXke
|
|
18
|
+
A2xiiXfkddWdndUIYAfZ8S2AxG8BM7q4TsRCYNQ3MqSGuCKtVY+6ElgDRtxfExc2
|
|
19
|
+
Qd9xCxd6HQKBgQChlYljsIzLG8mB1S3dn56DnW/FInlowVTbwRdHHE/RbsMVwjT6
|
|
20
|
+
B7pFYhS4dy3GQHKPfrOqVO5gPp96qQgf1O06Hj3Kwnd24Wa/r8eLzMWSkPIcpO/l
|
|
21
|
+
ERSWmhNl44+xHyNbld4vG8yen3DDDilKg/bjZCUrBbIlUsf2ZmZuAZGBcQKBgEtm
|
|
22
|
+
IE107bCWvFaFTlK2c8Si0+Q3JZCXZLzkUjrItfrM703UIlmVzlGjd4Q7jVSmGJkG
|
|
23
|
+
uEoVMN1hWHLtkntrqaKW39XYAwAd55rxOlo6JO57uAfOiRtih9mJzz0IjXjRz9Mo
|
|
24
|
+
4xTJCGBcZdEdbPE+CiqnpDdamy7CsqlnFbSGIkSFAoGALkRFt74BvQ7JvgFZzHJQ
|
|
25
|
+
Zg/MMG5uIduSGwDlb5EJKYwzfjdsrmu4vkhxistVbbSHUdfU2wSGEUGAT6cRxYVp
|
|
26
|
+
oXHStiQHQoI+Y5dbnrzZVjVRMhFIF61bgjbVmrgSweYeBHEF0XAzbdDNw/orMpW8
|
|
27
|
+
5bgQEe8Py8ai1ux9gltbbfk=
|
|
28
|
+
-----END RSA PRIVATE KEY-----
|