@exotel-npm-dev/webrtc-client-sdk 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Changelog +12 -0
- package/demo-non-npm/build-local.sh +2 -1
- package/demo-non-npm/cert.pem +21 -0
- package/demo-non-npm/demo.js +35 -29
- package/demo-non-npm/dist/beep.wav +0 -0
- package/demo-non-npm/dist/dtmf.wav +0 -0
- package/demo-non-npm/dist/exotelsdk.js +75 -7
- package/demo-non-npm/dist/exotelsdk.js.map +1 -1
- package/demo-non-npm/dist/ringbacktone.wav +0 -0
- package/demo-non-npm/dist/ringtone.wav +0 -0
- package/demo-non-npm/index.html +11 -13
- package/demo-non-npm/key.pem +28 -0
- package/demo-non-npm/phone.js +4 -4
- package/dist/exotelsdk.js +75 -7
- package/dist/exotelsdk.js.map +1 -1
- package/package.json +3 -3
- package/src/listeners/ExWebClient.js +159 -112
package/Changelog
ADDED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
#openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
|
|
2
2
|
|
|
3
|
-
rm -rf dist;cd ..;npm uninstall @exotel-npm-dev/webrtc-core-sdk;npm install ../webrtc-core-sdk;npm run build;cp -r dist demo-non-npm/;cd demo-non-npm;
|
|
3
|
+
rm -rf dist;cd ..;npm uninstall @exotel-npm-dev/webrtc-core-sdk;npm install ../webrtc-core-sdk;npm run build;cp -r dist demo-non-npm/;cd demo-non-npm;
|
|
4
|
+
http-server -S -C ~/pki/cert.pem -K ~/pki/key.pem
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDazCCAlOgAwIBAgIUPnkjfhKE3f0E3XyUc/6/pMVL4QMwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
|
|
4
|
+
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMzA4MjQxNzU0NDJaFw0zMzA4
|
|
5
|
+
MjExNzU0NDJaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
|
|
6
|
+
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
|
|
7
|
+
AQUAA4IBDwAwggEKAoIBAQDks953etyaeo1SpyY9mXMUtYiSJyOoGfKw27Tp8Pq1
|
|
8
|
+
5J5jdgJaBjpfkypol+GqIHBuwu1jBv1xu5f08hiAsiqPITC/Kf7KiZV6FxJUdAr3
|
|
9
|
+
CFgF0Aec1h10V9N7dpAxFEMmwqiRIpYj+if2kkrOT08OliiH42g4RlZTxUWc2HQz
|
|
10
|
+
rnfXm3lqqJ6C1g0xcYFCGJwLyh+YpY9uTY4GKJQStRsK4ku6Czl6JkXpVVM+4POj
|
|
11
|
+
Eg8qolZJ9txpdGpTaRHA/dH2dDhgwi+EqIeZwc2ZkTiiNsIe8G3Xc2SR4M270Z47
|
|
12
|
+
09ZbzqHHEDCD13YR7NtAtz3zickd04dB/Ib5Z5944FnzAgMBAAGjUzBRMB0GA1Ud
|
|
13
|
+
DgQWBBQ2bhbIwJnqZT9c8te1qKayUznotjAfBgNVHSMEGDAWgBQ2bhbIwJnqZT9c
|
|
14
|
+
8te1qKayUznotjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQDE
|
|
15
|
+
YEcuaKrHnEApFfEktH2Q5g7Ps2KzH+K2HpAMFSTTAEiiEroahJFeAbmk7LTPg1Hz
|
|
16
|
+
JFXUECblPyJGNYjQ/qCbs0I/wva1FhAvixX4c66MuVFKOPzr0iv0bQqff7k0iQgw
|
|
17
|
+
jI1ikFgwADlbEZ3oFs3ylu34rbiEBfQGVJvaDTmWpfTT9UEmv5HybcFA8NBHVoFs
|
|
18
|
+
JwoSD19ULLwql5oc9ZTcZ4dDb6w7gPU/IJzR+Mfn0Pbnq1STU+jr5ldggh5MWx2G
|
|
19
|
+
Q6Xe/PG8S6pt6f4Yjv5ocBAQLTcduHTvo0PazfFGeLPFixhx7Ddr5YHcR05mJTj5
|
|
20
|
+
08LEywwyxNoUd/Gb2jFd
|
|
21
|
+
-----END CERTIFICATE-----
|
package/demo-non-npm/demo.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
const
|
|
1
|
+
const exWebClient = new exotelSDK.ExotelWebClient();
|
|
2
2
|
var call = null;
|
|
3
3
|
function UserAgentRegistration() {
|
|
4
4
|
var sipInfo = JSON.parse(phone)[0];
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
'endpoint':sipInfo.EndPoint
|
|
15
|
-
|
|
5
|
+
var sipAccountInfo = {
|
|
6
|
+
'userName': sipInfo.Username,
|
|
7
|
+
'authUser': sipInfo.Username,
|
|
8
|
+
'sipdomain': sipInfo.Domain,
|
|
9
|
+
'domain': sipInfo.HostServer + ":" + sipInfo.Port,
|
|
10
|
+
'displayname': sipInfo.DisplayName,
|
|
11
|
+
'secret': sipInfo.Password,
|
|
12
|
+
'port': sipInfo.Port,
|
|
13
|
+
'security': sipInfo.Security,
|
|
14
|
+
'endpoint': sipInfo.EndPoint
|
|
15
|
+
};
|
|
16
16
|
exWebClient.initWebrtc(sipAccountInfo, RegisterEventCallBack, CallListenerCallback, SessionCallback)
|
|
17
17
|
console.log("Test.js: Calling DoRegister")
|
|
18
18
|
exWebClient.DoRegister();
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function registerToggle() {
|
|
22
|
-
if(document.getElementById("registerButton").innerHTML === "REGISTER") {
|
|
22
|
+
if (document.getElementById("registerButton").innerHTML === "REGISTER") {
|
|
23
23
|
UserAgentRegistration();
|
|
24
24
|
} else {
|
|
25
25
|
exWebClient.unregister();
|
|
@@ -28,27 +28,27 @@ function registerToggle() {
|
|
|
28
28
|
|
|
29
29
|
function CallListenerCallback(callObj, eventType, phone) {
|
|
30
30
|
call = exWebClient.getCall();
|
|
31
|
-
document.getElementById("call_status").innerHTML = eventType +" "+phone;
|
|
32
|
-
|
|
31
|
+
document.getElementById("call_status").innerHTML = eventType + " " + phone;
|
|
32
|
+
}
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
function RegisterEventCallBack(state, phone) {
|
|
35
35
|
document.getElementById("status").innerHTML = state;
|
|
36
|
-
|
|
36
|
+
if (state === 'registered') {
|
|
37
37
|
document.getElementById("registerButton").innerHTML = "UNREGISTER";
|
|
38
|
-
|
|
38
|
+
} else {
|
|
39
39
|
document.getElementById("registerButton").innerHTML = "REGISTER";
|
|
40
|
-
|
|
40
|
+
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
}
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
function SessionCallback(state, phone) {
|
|
45
|
+
console.log('Session state:', state, 'for number...', phone);
|
|
46
|
+
}
|
|
47
47
|
|
|
48
48
|
function toggleMuteButton() {
|
|
49
|
-
if(call){
|
|
49
|
+
if (call) {
|
|
50
50
|
call.Mute();
|
|
51
|
-
if(document.getElementById("muteButton").innerHTML === "UNMUTE"){
|
|
51
|
+
if (document.getElementById("muteButton").innerHTML === "UNMUTE") {
|
|
52
52
|
document.getElementById("muteButton").innerHTML = "MUTE";
|
|
53
53
|
} else {
|
|
54
54
|
document.getElementById("muteButton").innerHTML = "UNMUTE";
|
|
@@ -57,24 +57,30 @@ function toggleMuteButton() {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
function acceptCall() {
|
|
60
|
-
if(call) {
|
|
60
|
+
if (call) {
|
|
61
61
|
call.Answer();
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
function rejectCall() {
|
|
66
|
-
if(call) {
|
|
66
|
+
if (call) {
|
|
67
67
|
call.Hangup();
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
function toggleHoldButton() {
|
|
72
|
-
if(call) {
|
|
72
|
+
if (call) {
|
|
73
73
|
call.HoldToggle();
|
|
74
|
-
if(document.getElementById("holdButton").innerHTML === "UNHOLD"){
|
|
74
|
+
if (document.getElementById("holdButton").innerHTML === "UNHOLD") {
|
|
75
75
|
document.getElementById("holdButton").innerHTML = "HOLD";
|
|
76
76
|
} else {
|
|
77
77
|
document.getElementById("holdButton").innerHTML = "UNHOLD";
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function sdkReady() {
|
|
83
|
+
exWebClient.checkClientStatus(function (status) {
|
|
84
|
+
console.log("SDK Status " + status);
|
|
85
|
+
});
|
|
80
86
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
*
|
|
3
|
-
* WebRTC CLient SIP version 1.0.
|
|
3
|
+
* WebRTC CLient SIP version 1.0.7
|
|
4
4
|
*
|
|
5
5
|
*/
|
|
6
6
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
@@ -1705,6 +1705,46 @@ class ExotelWebClient {
|
|
|
1705
1705
|
*/
|
|
1706
1706
|
intervalIDMap.set(userName, intervalId);
|
|
1707
1707
|
};
|
|
1708
|
+
checkClientStatus = callback => {
|
|
1709
|
+
// using this function , first it will check mic permission is given or not
|
|
1710
|
+
// then it will check if transport is intialize or not
|
|
1711
|
+
// then it will check if user is registered or not
|
|
1712
|
+
// based on this we can evaludate SDK is ready for call
|
|
1713
|
+
var constraints = {
|
|
1714
|
+
audio: true,
|
|
1715
|
+
video: false
|
|
1716
|
+
};
|
|
1717
|
+
navigator.mediaDevices.getUserMedia(constraints).then(function (mediaStream) {
|
|
1718
|
+
var transportState = _exotel_npm_dev_webrtc_core_sdk__WEBPACK_IMPORTED_MODULE_9__.webrtcSIPPhone.getTransportState();
|
|
1719
|
+
switch (transportState) {
|
|
1720
|
+
case "":
|
|
1721
|
+
callback("not_intialized");
|
|
1722
|
+
break;
|
|
1723
|
+
case "unknown":
|
|
1724
|
+
case "Connecting":
|
|
1725
|
+
callback(transportState);
|
|
1726
|
+
break;
|
|
1727
|
+
default:
|
|
1728
|
+
var registerationState = _exotel_npm_dev_webrtc_core_sdk__WEBPACK_IMPORTED_MODULE_9__.webrtcSIPPhone.getRegistrationState();
|
|
1729
|
+
switch (registerationState) {
|
|
1730
|
+
case "":
|
|
1731
|
+
callback("websocket_connection_failed");
|
|
1732
|
+
break;
|
|
1733
|
+
case "Registered":
|
|
1734
|
+
if (transportState != "Connected") {
|
|
1735
|
+
callback("Disconnected");
|
|
1736
|
+
} else {
|
|
1737
|
+
callback(registerationState);
|
|
1738
|
+
}
|
|
1739
|
+
break;
|
|
1740
|
+
default:
|
|
1741
|
+
callback(registerationState);
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
}).catch(function (error) {
|
|
1745
|
+
callback("media_permission_denied");
|
|
1746
|
+
});
|
|
1747
|
+
};
|
|
1708
1748
|
}
|
|
1709
1749
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExotelWebClient);
|
|
1710
1750
|
|
|
@@ -7727,6 +7767,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7727
7767
|
|
|
7728
7768
|
var SIP = __webpack_require__(/*! ./sip-0.20.0.js */ "../webrtc-core-sdk/src/sip-0.20.0.js");
|
|
7729
7769
|
|
|
7770
|
+
var lastTransportState = "";
|
|
7771
|
+
var lastRegistererState = "";
|
|
7730
7772
|
var videoRemote, videoLocal, audioRemote;
|
|
7731
7773
|
var initializeComplete = false;
|
|
7732
7774
|
var webRTCStatus = "offline"; // ready -> registered, offline -> unregistered,
|
|
@@ -8057,6 +8099,7 @@ function postInit(onInitDoneCallback) {
|
|
|
8057
8099
|
onInitDoneCallback();
|
|
8058
8100
|
}
|
|
8059
8101
|
function sipRegister() {
|
|
8102
|
+
lastRegistererState = "";
|
|
8060
8103
|
cleanupRegistererTimer();
|
|
8061
8104
|
try {
|
|
8062
8105
|
ctxSip.config = {
|
|
@@ -8104,6 +8147,7 @@ function sipRegister() {
|
|
|
8104
8147
|
register_flag = false;
|
|
8105
8148
|
}
|
|
8106
8149
|
let registererStateEventListner = newState => {
|
|
8150
|
+
lastRegistererState = newState;
|
|
8107
8151
|
if (ctxSip.phone && ctxSip.phone.transport && ctxSip.phone.transport.isConnected()) {
|
|
8108
8152
|
sipPhoneLogger("debug", "", "", "sipjslog registerer new state " + newState);
|
|
8109
8153
|
switch (newState) {
|
|
@@ -8126,6 +8170,7 @@ let registererWaitingChangeListener = b => {
|
|
|
8126
8170
|
}
|
|
8127
8171
|
};
|
|
8128
8172
|
let transportStateChangeListener = newState => {
|
|
8173
|
+
lastTransportState = newState;
|
|
8129
8174
|
sipPhoneLogger("debug", "", "", "sipjslog transport new state " + newState);
|
|
8130
8175
|
switch (newState) {
|
|
8131
8176
|
case SIP.TransportState.Connecting:
|
|
@@ -8151,11 +8196,11 @@ function registerPhoneEventListeners() {
|
|
|
8151
8196
|
});
|
|
8152
8197
|
ctxSip.phone.delegate.onInvite = incomingSession => {
|
|
8153
8198
|
if (ctxSip.callActiveID == null) {
|
|
8154
|
-
_webrtcSIPPhoneEventDelegate__WEBPACK_IMPORTED_MODULE_0__["default"].onRecieveInvite(incomingSession);
|
|
8155
|
-
_webrtcSIPPhoneEventDelegate__WEBPACK_IMPORTED_MODULE_0__["default"].sendWebRTCEventsToFSM("i_new_call", "CALL");
|
|
8156
8199
|
var s = incomingSession;
|
|
8157
8200
|
s.direction = 'incoming';
|
|
8158
8201
|
ctxSip.newSession(s);
|
|
8202
|
+
_webrtcSIPPhoneEventDelegate__WEBPACK_IMPORTED_MODULE_0__["default"].onRecieveInvite(incomingSession);
|
|
8203
|
+
_webrtcSIPPhoneEventDelegate__WEBPACK_IMPORTED_MODULE_0__["default"].sendWebRTCEventsToFSM("i_new_call", "CALL");
|
|
8159
8204
|
} else {
|
|
8160
8205
|
incomingSession.reject();
|
|
8161
8206
|
}
|
|
@@ -8669,10 +8714,17 @@ const SIPJSPhone = {
|
|
|
8669
8714
|
getWSSUrl: () => {
|
|
8670
8715
|
console.log("Returning txtWebsocketURL:", txtWebsocketURL);
|
|
8671
8716
|
return txtWebsocketURL;
|
|
8672
|
-
}
|
|
8717
|
+
},
|
|
8673
8718
|
/* NL Additions - End */
|
|
8719
|
+
getTransportState: () => {
|
|
8720
|
+
console.log("Returning Transport State : ", lastTransportState);
|
|
8721
|
+
return lastTransportState;
|
|
8722
|
+
},
|
|
8723
|
+
getRegistrationState: () => {
|
|
8724
|
+
console.log("Returning Registration State : ", lastRegistererState);
|
|
8725
|
+
return lastRegistererState;
|
|
8726
|
+
}
|
|
8674
8727
|
};
|
|
8675
|
-
|
|
8676
8728
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SIPJSPhone);
|
|
8677
8729
|
|
|
8678
8730
|
/***/ }),
|
|
@@ -8820,10 +8872,26 @@ const webrtcSIPPhone = {
|
|
|
8820
8872
|
} catch (e) {
|
|
8821
8873
|
console.log("getWSSUrl: Exception ", e);
|
|
8822
8874
|
}
|
|
8823
|
-
}
|
|
8875
|
+
},
|
|
8824
8876
|
/* NL Addition - End */
|
|
8825
|
-
};
|
|
8826
8877
|
|
|
8878
|
+
getTransportState() {
|
|
8879
|
+
try {
|
|
8880
|
+
return _sipjsphone__WEBPACK_IMPORTED_MODULE_0__["default"].getTransportState();
|
|
8881
|
+
} catch (e) {
|
|
8882
|
+
console.log("getTransportState: Exception ", e);
|
|
8883
|
+
return "unknown";
|
|
8884
|
+
}
|
|
8885
|
+
},
|
|
8886
|
+
getRegistrationState() {
|
|
8887
|
+
try {
|
|
8888
|
+
return _sipjsphone__WEBPACK_IMPORTED_MODULE_0__["default"].getRegistrationState();
|
|
8889
|
+
} catch (e) {
|
|
8890
|
+
console.log("getTransportState: Exception ", e);
|
|
8891
|
+
return "unknown";
|
|
8892
|
+
}
|
|
8893
|
+
}
|
|
8894
|
+
};
|
|
8827
8895
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (webrtcSIPPhone);
|
|
8828
8896
|
|
|
8829
8897
|
/***/ }),
|