Skip to content

Instantly share code, notes, and snippets.

@kidker
Created October 9, 2017 00:17
Show Gist options
  • Save kidker/99d84e12769dd3b5485c43acc5e3e10a to your computer and use it in GitHub Desktop.
Save kidker/99d84e12769dd3b5485c43acc5e3e10a to your computer and use it in GitHub Desktop.
SIPml5: MINIMAL VERSION FOR UNDERSTAND (09.10.2017)
var globalSIPml = {
sipStack: {},
config: {},
can_call: false,
//SESSION
sipStackSessionEventsListener: function (e) {
console.info('sipStackSessionEvent: ' + e.type);
var self = this;
if (e.type == 'connected' && e.session == self.registerSession) {
console.log('соединение установлено');
self.can_call = true;
}
},
//STACK
sipStackEventsListener: function (e) {
var self = this;
console.log(e.type);
if (e.type == 'started') {
self.login();
} else if (e.type == 'i_new_call') { // incoming audio/video call
//событие входящего звонка
self.acceptCall(e);
}
},
login: function () {
var self = this;
self.registerSession = self.sipStack.newSession('register', {
events_listener: {
events: '*',
listener: self.sipStackSessionEventsListener.bind(this)
}
});
self.registerSession.register();
},
/* CALLS BEGIN*/
callSession: {},
callEventsListener: function (e) {
console.log(e.type);
//здесь находятся события по звонку
},
acceptCall: function (e) {
e.newSession.accept();
},
makeCall: function (number) {
console.log(number);
var self = this;
self.callSession = self.sipStack.newSession('call-audio', {
audio_remote: document.getElementById('audio-remote'),
events_listener: {events: '*', listener: self.callEventsListener} // optional: '*' means all events
});
self.callSession.call(number);
},
/* CALLS end */
init: function () {
var self = this;
//1. Init engine
SIPml.setDebugLevel('errors');
self.config = {
realm: '',//website: pbx.domain.com
impi: '',//inner-indentificator: 100-999
impu: '',//sip-user: sip:[email protected]
password: '',//password: md5/sha
display_name: '',//BATMAN
websocket_proxy_url: '',//websoket url: wss://domain
enable_rtcweb_breaker: true,
enable_early_ims: false,
enable_media_stream_cache: true,
ice_servers: [{url: 'stun:stun.l.google.com:19302'}], //
bandwidth: null,
//events_listener: { events: '*', listener: onSipEventStack },
video_size: null,
//outbound_proxy_url: 'udp://192.168.0.12:5060', // optional
events_listener: {events: '*', listener: self.sipStackEventsListener.bind(this)}, //optional
sip_headers: [ //optional
{name: 'User-Agent', value: 'IM-client/OMA1.0 sipML5-v1.0.89.0'},
{name: 'Organization', value: 'Doubango Telecom'}
]
};
SIPml.init(
function () {
self.sipStack = new SIPml.Stack(self.config);
self.sipStack.start();
},
function () {
console.error('Ошибка инициализации движка: ' + e.message);
}
);
}
};
globalSIPml.init();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment