Skip to content

Instantly share code, notes, and snippets.

@shamun
Created February 27, 2015 12:47
Show Gist options
  • Save shamun/29dcddab79fbc47debef to your computer and use it in GitHub Desktop.
Save shamun/29dcddab79fbc47debef to your computer and use it in GitHub Desktop.
<html>
<head>
<!-- <script type="text/javascript" src="js/libphonenumber.js"></script>-->
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js" ></script>
<script type="text/javascript" src="http://sipjs.com/download/sip-0.6.4.min.js"></script>
</head>
<body>
<video id="remoteView"></video>
<video id="selfView" muted="muted"></video>
<button id="endCall">End Call</button>
<script>
var MyPhone = null;
var rtcSession = null;
var language = 'en';
var options = {
media: {
constraints: {
audio: true,
video: false
},
render: {
remote: {
video: document.getElementById('remoteView')
},
local: {
video: document.getElementById('selfView')
}
}
}
};
var endButton = document.getElementById('endCall');
endButton.addEventListener("click", function () {
console.info('Call disconnected');
rtcSession.bye();
}, false);
function ws_connected(e) {
console.info('Websocket connected');
};
function ws_disconnected() {
console.info('Websocket disconnected');
};
function make_call() {
try {
rtcSession = MyPhone.call(dial_to, options);
} catch(e){
console.log(e);
$('#beess').fadeOut('slow');
//$('#call_status').html('End');
$('#call_status').html('End: ' + e.message);
return;
}
}
function phone_init() {
var config = {
uri: 'sip:[email protected]',
wsServers: 'wss://webrtc.freeswitch.org:8082',
authorizationUser: '1008',
password: '1234',
register: true,
log: {
builtinEnabled: true,
level: 2
},
traceSip: true,
};
try {
MyPhone = new SIP.UA(config);
} catch(e) {
console.log(e);
return;
}
MyPhone.on('connected', ws_connected);
MyPhone.on('disconnected', ws_disconnected);
MyPhone.on('registered', function(e){
console.info('Registered');
});
MyPhone.on('unregistered', function(e){
console.info('Deregistered');
});
MyPhone.on('registrationFailed', function(e) {
console.info('Registration failure');
});
}
phone_init();
rtcSession = MyPhone.invite('3500', options); //9664
var error_en = {
0:['Session Progress', 'Progress'],
1:['OK'],
2:['Temporarily Unavailable','Invalid Number'],
};
var error_nl = {
0:['Session Progress', 'Progress'],
1:['OK'],
1:['tijdelijk niet beschikbaar', 'Ongeldig nummer']
};
function search_in_error(phrase, language){
var errorGroup = window["error_" + language], errors;
for(var key in errorGroup){
if (!errorGroup.hasOwnProperty(key)){
continue;
}
errors = errorGroup[key];
for (var i = 0; i < errors.length; i++){
if (errors[i] === phrase)
return key;
}
}
return null;
}
// ------------
// EVENTS - SIP.js supports are as following:
// -----------
// 'progress',
// 'accepted',
// 'rejected',
// 'failed',
// 'cancel'
rtcSession.on('progress', function(e) {
console.info('Progress: ', e);
var cause = e.reason_phrase;
console.info(search_in_error(cause, language) );
});
rtcSession.on('failed', function(e) {
console.info('Failed: ', e); // Does not fire when the call is disconnected from the SERVER
try{
var cause = e.reason_phrase;
console.info(cause);
console.info(search_in_error(cause, language) );
} catch(failed_err) {
var cause = e.cause;
console.info(cause);
}
});
rtcSession.on('accepted', function(e) {
console.info('Connected: ' , e);
});
rtcSession.on('rejected', function(e) {
console.info('Rejected: ', e);
});
rtcSession.on('cancel', function(e) {
console.info('Cancel: ', e);
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment