...
Code Block | ||||
---|---|---|---|---|
| ||||
var registerRequired = $("#sipRegisterRequired").is(':checked'); var sipOptions = { login: $("#sipLogin").val(), authenticationName: $("#sipAuthenticationName").val(), password: $("#sipPassword").val(), domain: $("#sipDomain").val(), outboundProxy: $("#sipOutboundProxy").val(), port: $("#sipPort").val(), registerRequired: registerRequired }; if (authToken) { connectionOptions = { urlServer: url, authToken: authToken, keepAlive: true }; } else { connectionOptions = { urlServer: url, sipOptions: sipOptions, keepAlive: true }; } //create session console.log("Create new session with url " + url); Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){ setStatus("#regStatus", SESSION_STATUS.ESTABLISHED);... }); |
3. Получение от сервера события, подтверждающего успешное соединение.
ConnectionStatusEvent ESTABLISHED код
Code Block | ||||
---|---|---|---|---|
| ||||
$("#authToken"Flashphoner.createSession(connectionOptions).valon(connection.SESSION_STATUS.ESTABLISHED, function(session, connection){ setStatus("#regStatus", SESSION_STATUS.ESTABLISHED); $("#authToken").val(connection.authToken); onConnected(session); if (!registerRequired) { disableOutgoing(false); } }).on(SESSION_STATUS.REGISTERED, function(session){ setStatus("#regStatus", ... }).on(SESSION_STATUS.REGISTERED); onConnected(session); if (registerRequired) DISCONNECTED, function(){ disableOutgoing(false); } ... }).on(SESSION_STATUS.DISCONNECTEDFAILED, function(){ setStatus("#regStatus", SESSION_STATUS.DISCONNECTED); ... onDisconnected(); }).on(SESSION_STATUS.FAILEDINCOMING_CALL, function(call){ setStatus("#regStatus", SESSION_STATUS.FAILED);... onDisconnected(); }}); |
4. Получение от сервера события, подтверждающего успешную регистрацию на SIP-сервере.
ConnectionStatusEvent REGISTERED код
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.INCOMING_CALLESTABLISHED, function(callsession, connection){ ... call}).on(CALLSESSION_STATUS.RINGREGISTERED, function(session){ setStatus("#callStatus#regStatus", CALLSESSION_STATUS.RINGREGISTERED); }).on(CALL_STATUS.ESTABLISHED, function(){ onConnected(session); if setStatus("#callStatus", CALL_STATUS.ESTABLISHED);(registerRequired) { $disableOutgoing("#holdBtn").prop('disabled',false); enableMuteToggle(true); false); } }).on(CALLSESSION_STATUS.HOLDDISCONNECTED, function() { ... $("#holdBtn"}).prop('disabled',false);on(SESSION_STATUS.FAILED, function(){ ... }).on(CALLSESSION_STATUS.FINISHINCOMING_CALL, function(call){ setStatus("#callStatus", CALL_STATUS.FINISH); onHangupIncoming(); currentCall = null; ... }).on(CALL_STATUS.FAILED, function(; |
5. Получение от сервера события, сигнализирующего о входящем звонке.
ConnectionStatusEvent INCOMING_CALL код
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){ ... setStatus("#callStatus", CALL}).on(SESSION_STATUS.FAILED);REGISTERED, function(session){ ... onHangupIncoming}).on(SESSION_STATUS.DISCONNECTED, function();{ ... }).on(SESSION_STATUS.FAILED, function(){ currentCall = null; ... }); onIncomingCall(call); }); |
3. Получение от сервера события, подтверждающего успешное соединение.
ConnectionStatusEvent ESTABLISHED код
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession(connectionOptions)..on(SESSION_STATUS.ESTABLISHEDINCOMING_CALL, function(session, connectioncall){ setStatus("#regStatus", SESSIONcall.on(CALL_STATUS.ESTABLISHED); RING, function(){ $("#authToken").val(connection.authToken);... onConnected(session}); if onIncomingCall(!registerRequiredcall) {; disableOutgoing(false); } }).on(SESSION_STATUS.REGISTERED, function(session){ setStatus("#regStatus", SESSION_STATUS.REGISTERED); onConnected(session); if (registerRequired) { disableOutgoing(false); } }).on(SESSION_STATUS.DISCONNECTED, function(){ setStatus("#regStatus", SESSION_STATUS.DISCONNECTED); onDisconnected(); }).on(SESSION_STATUS.FAILED, function(){ setStatus("#regStatus", SESSION_STATUS.FAILED); onDisconnected(); }).on(SESSION_STATUS.INCOMING_CALL, function(call){ call.on(CALL_STATUS.RING, function(){ setStatus("#callStatus", CALL_STATUS.RING); }).on(CALL_STATUS.ESTABLISHED, function(){ setStatus("#callStatus", CALL_STATUS.ESTABLISHED); $("#holdBtn").prop('disabled',false); enableMuteToggle(true); }).on(CALL_STATUS.HOLD, function() { $("#holdBtn").prop('disabled',false); }).on(CALL_STATUS.FINISH, function(){ setStatus("#callStatus", CALL_STATUS.FINISH); onHangupIncoming(); currentCall = null; }).on(CALL_STATUS.FAILED, function(){ setStatus("#callStatus", CALL_STATUS.FAILED); onHangupIncoming(); currentCall = null; }); onIncomingCall(call); }); |
4. Получение от сервера события, подтверждающего успешную регистрацию на SIP-сервере.
ConnectionStatusEvent REGISTERED код
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){
setStatus("#regStatus", SESSION_STATUS.ESTABLISHED);
$("#authToken").val(connection.authToken);
onConnected(session);
if (!registerRequired) {
disableOutgoing(false);
}
}).on(SESSION_STATUS.REGISTERED, function(session){
setStatus("#regStatus", SESSION_STATUS.REGISTERED);
onConnected(session);
if (registerRequired) {
disableOutgoing(false);
}
}).on(SESSION_STATUS.DISCONNECTED, function(){
setStatus("#regStatus", SESSION_STATUS.DISCONNECTED);
onDisconnected();
}).on(SESSION_STATUS.FAILED, function(){
setStatus("#regStatus", SESSION_STATUS.FAILED);
onDisconnected();
}).on(SESSION_STATUS.INCOMING_CALL, function(call){
call.on(CALL_STATUS.RING, function(){
setStatus("#callStatus", CALL_STATUS.RING);
}).on(CALL_STATUS.ESTABLISHED, function(){
setStatus("#callStatus", CALL_STATUS.ESTABLISHED);
$("#holdBtn").prop('disabled',false);
enableMuteToggle(true);
}).on(CALL_STATUS.HOLD, function() {
$("#holdBtn").prop('disabled',false);
}).on(CALL_STATUS.FINISH, function(){
setStatus("#callStatus", CALL_STATUS.FINISH);
onHangupIncoming();
currentCall = null;
}).on(CALL_STATUS.FAILED, function(){
setStatus("#callStatus", CALL_STATUS.FAILED);
onHangupIncoming();
currentCall = null;
});
onIncomingCall(call);
}); |
5. Получение от сервера события, сигнализирующего о входящем звонке.
ConnectionStatusEvent INCOMING_CALL код
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){
setStatus("#regStatus", SESSION_STATUS.ESTABLISHED);
$("#authToken").val(connection.authToken);
onConnected(session);
if (!registerRequired) {
disableOutgoing(false);
}
}).on(SESSION_STATUS.REGISTERED, function(session){
setStatus("#regStatus", SESSION_STATUS.REGISTERED);
onConnected(session);
if (registerRequired) {
disableOutgoing(false);
}
}).on(SESSION_STATUS.DISCONNECTED, function(){
setStatus("#regStatus", SESSION_STATUS.DISCONNECTED);
onDisconnected();
}).on(SESSION_STATUS.FAILED, function(){
setStatus("#regStatus", SESSION_STATUS.FAILED);
onDisconnected();
}).on(SESSION_STATUS.INCOMING_CALL, function(call){
call.on(CALL_STATUS.RING, function(){
setStatus("#callStatus", CALL_STATUS.RING);
}).on(CALL_STATUS.ESTABLISHED, function(){
setStatus("#callStatus", CALL_STATUS.ESTABLISHED);
$("#holdBtn").prop('disabled',false);
enableMuteToggle(true);
}).on(CALL_STATUS.HOLD, function() {
$("#holdBtn").prop('disabled',false);
}).on(CALL_STATUS.FINISH, function(){
setStatus("#callStatus", CALL_STATUS.FINISH);
onHangupIncoming();
currentCall = null;
}).on(CALL_STATUS.FAILED, function(){
setStatus("#callStatus", CALL_STATUS.FAILED);
onHangupIncoming();
currentCall = null;
});
onIncomingCall(call);
}); |
6. Исходящий звонок.
session.createCall(), call() код
При создании передаются следующие параметры
- callee - SIP имя пользователя вызываемого
- visibleName - отображаемое имя
- localVideoDisplay - div-элемент локального дисплея (в случае Flash медиа-провайдера будет использован для диалога настроек Flash-плеера)
- remoteVideoDisplay - div-элемент для получаемого аудио
- constraints - ограничения для звонка (в данном случае параметр 'video' установлен в 'false' для аудиозвонка)
- receiveAudio - установлен в 'true' для получения аудио
- receiveVideo - установлен в 'false', чтобы не получать видео
Code Block | ||||
---|---|---|---|---|
| ||||
var constraints = { audio: true, video: false }; //prepare outgoing call var outCall = session.createCall({ callee: $("#callee").val(), visibleName: $("#sipLogin").val(), localVideoDisplay: localDisplay, remoteVideoDisplay: remoteDisplay, constraints: constraints, receiveAudio: true, receiveVideo: false }).on(CALL_STATUS.RING, function(){ setStatus("#callStatus", CALL_STATUS.RING); }).on(CALL_STATUS.ESTABLISHED, function(){ setStatus("#callStatus", CALL_STATUS.ESTABLISHED); $("#holdBtn").prop('disabled',false); onAnswerOutgoing(); }).on(CALL_STATUS.HOLD, function() { $("#holdBtn").prop('disabled',false); }).on(CALL_STATUS.FINISH, function(){ setStatus("#callStatus", CALL_STATUS.FINISH); onHangupOutgoing(); currentCall = null; }).on(CALL_STATUS.FAILED, function(){ setStatus("#callStatus", CALL_STATUS.FAILED); onHangupIncoming(); currentCall = null;}); |
6. Исходящий звонок.
session.createCall(), call() код
При создании передаются следующие параметры
- callee - SIP имя пользователя вызываемого
- visibleName - отображаемое имя
- localVideoDisplay - div-элемент локального дисплея (в случае Flash медиа-провайдера будет использован для диалога настроек Flash-плеера)
- remoteVideoDisplay - div-элемент для получаемого аудио
- constraints - ограничения для звонка (в данном случае параметр 'video' установлен в 'false' для аудиозвонка)
- receiveAudio - установлен в 'true' для получения аудио
- receiveVideo - установлен в 'false', чтобы не получать видео
Code Block | ||||
---|---|---|---|---|
| ||||
var constraints = {
audio: true,
video: false
};
//prepare outgoing call
var outCall = session.createCall({
callee: $("#callee").val(),
visibleName: $("#sipLogin").val(),
localVideoDisplay: localDisplay,
remoteVideoDisplay: remoteDisplay,
constraints: constraints,
receiveAudio: true,
receiveVideo: false
...
});
outCall.call() |
7. Ответ на входящий звонок.
...
Code Block | ||||
---|---|---|---|---|
| ||||
$("#answerBtn").off('click').click(function(){
$(this).prop('disabled', true);
var constraints = {
audio: true,
video: false
};
inCall.answer({
localVideoDisplay: localDisplay,
remoteVideoDisplay: remoteDisplay,
receiveVideo: false,
constraints: constraints
});
showAnswered();
}).prop('disabled', false); |
...