var outgoingSession = null,incomingSession = null,currentSession = null,
timeStrart=false,thjsTel=false,timeReg,signState,
videoView = document.getElementById('videoView'),
localStream = null,userAgent = null,
constraints = {
audio: true,
video: false,
mandatory: {
maxWidth: 640,
maxHeight: 360
}
};
URL = window.URL || window.webkitURL;
function testStart() {
var sip_uri_ = huayi.config.sip_uri_.toString();
var sip_password_ = huayi.config.sip_password_.toString();
var ws_uri_ = huayi.config.ws_uri_.toString();
console.log(sip_uri_+'-'+sip_password_+'-'+ws_uri_)
console.info("get input info: sip_uri = ", sip_uri_, " sip_password = ", sip_password_, " ws_uri = ", ws_uri_);
JsSIP.C.SESSION_EXPIRES = 120, JsSIP.C.MIN_SESSION_EXPIRES = 120;
var socket = new JsSIP.WebSocketInterface(ws_uri_);
var configuration = {
sockets: [socket],
outbound_proxy_set: ws_uri_,
uri: sip_uri_,
password: sip_password_,
register: true,
session_timers: true,
contact_uri: 'sip:'+$.cookie("extno")+'@'+huayi.config.socket_ip+';transport=ws',
authorization:$.cookie("extno"),
display_name:$.cookie("extno")
};
userAgent = new JsSIP.UA(configuration);
//注册成功
userAgent.on('registered', function(data) {
if (!timeStrart) {
$(".tooltip_text").text("初始化成功...");
$(".td-call").hide();
}
timeStrart=false;
//setTimeout(function(){$(".tooltip_text").text("分机号:"+$.cookie("extno")"); }, 3000);
console.info("registered: ", data.response.status_code, ",", data.response.reason_phrase);
});
//注册失败
userAgent.on('registrationFailed', function(data) {
if (!timeStrart) {
$(".tooltip_text").text("注册失败...")
}
timeStrart=false;
console.log("registrationFailed, ", data);
//console.warn("registrationFailed, ", data.response.status_code, ",", data.response.reason_phrase, " cause - ", data.cause);
});
//注册超时
userAgent.on('registrationExpiring', function() {
if (!timeStrart) {
//$(".tooltip_text").text("注册超时...")
}
timeStrart=false;
console.warn("registrationExpiring");
});
userAgent.on('newRTCSession', function(data) {
console.info('onNewRTCSession: ', data);
//通话呼入
if(data.originator == 'remote') {
// if(data.request.data.split("Extension ")[1]){
// var stringHr_1=data.request.data.split("Extension ")[1].split('"')[0]
// }
console.info("incomingSession, answer the call----------------------");
incomingSession = data.session;
} else {
console.info("outgoingSession");
outgoingSession = data.session;
outgoingSession.on('connecting', function(data) {
console.info('onConnecting - ', data.request);
currentSession = outgoingSession;
outgoingSession = null;
});
}
data.session.on('accepted', function(data) {
console.info('onAccepted - ', data);
if(data.originator == 'remote' && currentSession == null) {
currentSession = incomingSession;
incomingSession = null;
//layer.msg("setCurrentSession - ", currentSession);
}
});
data.session.on('confirmed', function(data) {
$(".tooltip_text").text("通话中...") //呼入建立
if (signState) {
$(".hwzt").text('通话中');
}
thjsTel=true;
//calling();
// if(stringHr_1){
// var p = '';
// $(".J_menuTab").removeClass("active");
// var nif = '';
// $(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
// $(".J_menuTabs .page-tabs-content").append(p);
// }
console.info('onConfirmed - ', data);
if(data.originator == 'remote' && currentSession == null) {
currentSession = incomingSession;
incomingSession = null;
//layer.msg("setCurrentSession - ", currentSession);
}
});
data.session.on('sdp', function(data) {
console.info('onSDP, type - ', data.type, ' sdp - ', data.sdp);
});
data.session.on('progress', function(data) {
$(".tooltip_text").text("振铃中...")
thjsTel=true;
//layer.msg('onProgress - ', data.originator);
if(data.originator == 'remote') {
//layer.msg('onProgress, response - ', data.response);
}
});
data.session.on('peerconnection', function(data) {
$(".tooltip_text").text("呼叫建立...")//呼入建立
//layer.msg('onPeerconnection - ', data.peerconnection);
data.peerconnection.onaddstream = function(ev) {
//layer.msg('onaddstream from remote ----------- ', ev);
//
videoView.srcObject = ev.stream;
};
});
});
userAgent.on('newMessage', function(data) {
if(data.originator == 'local') {
console.info('onNewMessage , OutgoingRequest - ', data.request);
} else {
console.info('onNewMessage , IncomingRequest - ', data.request);
}
});
userAgent.start();
}
//外呼状态
var eventHandlers = {
'progress': function(e) {
$(".tooltip_text").text("呼出振铃...");
},
'failed': function(e) {
$(".tooltip_text").text("呼叫失败...");
},
'ended': function(e) {
clearInter();
$(".tooltip_text").text("通话结束...");
},
'confirmed': function(e) {
$(".tooltip_text").text("呼叫建立...");
}
};
function inCall () {
if (incomingSession) {
incomingSession.answer({
'mediaConstraints': {
'audio': true,
'video': false,
mandatory: {
maxWidth: 640,
maxHeight: 360
}
},
'mediaStream': localStream
});
incomingSession = null;
}
}
function testCall() {
// 外呼拨打
var sip_phone_number_ = document.getElementById("sip_phone_number").value.toString();
var options = {
'eventHandlers': eventHandlers,
'mediaConstraints': {
'audio': true,
'video': false,
mandatory: {
maxWidth: 640,
maxHeight: 360
}
},
'mediaStream': localStream
};
outgoingSession = userAgent.call(sip_phone_number_, options);
var p = '';
$(".J_menuTab").removeClass("active");
var nif = '';
$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
$(".J_menuTabs .page-tabs-content").append(p);
}
function reg() {
if (!timeReg) {
$(".td-call").hide();
$(".tooltip_text").text("注册成功...");
}
timeReg=false;
console.log('register----------->');
userAgent.register();
}
//定时注册
//regTime();
function regTime(){
setInterval(function() {
timeStrart=true;
timeReg=true;
reg();
}, 1000*60);
}
//注销
function unReg() {
$(".td-call").hide();
$(".tooltip_text").text("注销...");
//console.log('unregister----------->');
userAgent.unregister(true);
}
//挂断
function hangup() {
//window.frames[1].clearInter();
$(".tooltip_text").text("挂断...");
obj.Type = "DropCall";
Send();
userAgent.terminateSessions();
}