ZZDianXin_UI - 郑州电信 演示

softphone.js 6.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. var outgoingSession = null;
  2. var incomingSession = null;
  3. var currentSession = null;
  4. var videoView = document.getElementById('videoView');
  5. var constraints = {
  6. audio: true,
  7. video: false,
  8. mandatory: {
  9. maxWidth: 640,
  10. maxHeight: 360
  11. }
  12. };
  13. URL = window.URL || window.webkitURL;
  14. var localStream = null;
  15. var userAgent = null;
  16. function testStart() {
  17. var sip_uri_ = huayi.config.sip_uri_.toString();
  18. var sip_password_ = huayi.config.sip_password_.toString();
  19. var ws_uri_ = huayi.config.ws_uri_.toString();
  20. console.log(sip_uri_+'-'+sip_password_+'-'+ws_uri_)
  21. console.info("get input info: sip_uri = ", sip_uri_, " sip_password = ", sip_password_, " ws_uri = ", ws_uri_);
  22. JsSIP.C.SESSION_EXPIRES = 120, JsSIP.C.MIN_SESSION_EXPIRES = 120;
  23. var socket = new JsSIP.WebSocketInterface(ws_uri_);
  24. var configuration = {
  25. sockets: [socket],
  26. outbound_proxy_set: ws_uri_,
  27. uri: sip_uri_,
  28. password: sip_password_,
  29. register: true,
  30. session_timers: true
  31. };
  32. userAgent = new JsSIP.UA(configuration);
  33. //注册成功
  34. userAgent.on('registered', function(data) {
  35. $(".tooltip_text").text("初始化成功...");
  36. //setTimeout(function(){$(".tooltip_text").text("分机号:"+$.cookie("extno")"); }, 3000);
  37. console.info("registered: ", data.response.status_code, ",", data.response.reason_phrase);
  38. });
  39. //注册失败
  40. userAgent.on('registrationFailed', function(data) {
  41. $(".tooltip_text").text("注册失败...")
  42. console.log("registrationFailed, ", data);
  43. //console.warn("registrationFailed, ", data.response.status_code, ",", data.response.reason_phrase, " cause - ", data.cause);
  44. });
  45. //注册超时
  46. userAgent.on('registrationExpiring', function() {
  47. $(".tooltip_text").text("注册超时...")
  48. console.warn("registrationExpiring");
  49. });
  50. userAgent.on('newRTCSession', function(data) {
  51. console.info('onNewRTCSession: ', data);
  52. //通话呼入
  53. if(data.originator == 'remote') {
  54. if(data.request.data.split("Extension ")[1]){
  55. var stringHr_1=data.request.data.split("Extension ")[1].split('"')[0]
  56. }
  57. console.info("incomingSession, answer the call----------------------");
  58. incomingSession = data.session;
  59. data.session.answer({
  60. 'mediaConstraints': {
  61. 'audio': true,
  62. 'video': false,
  63. mandatory: {
  64. maxWidth: 640,
  65. maxHeight: 360
  66. }
  67. },
  68. 'mediaStream': localStream
  69. });
  70. } else {
  71. console.info("outgoingSession");
  72. outgoingSession = data.session;
  73. outgoingSession.on('connecting', function(data) {
  74. console.info('onConnecting - ', data.request);
  75. currentSession = outgoingSession;
  76. outgoingSession = null;
  77. });
  78. }
  79. data.session.on('accepted', function(data) {
  80. console.info('onAccepted - ', data);
  81. if(data.originator == 'remote' && currentSession == null) {
  82. currentSession = incomingSession;
  83. incomingSession = null;
  84. //layer.msg("setCurrentSession - ", currentSession);
  85. }
  86. });
  87. data.session.on('confirmed', function(data) {
  88. $(".tooltip_text").text("通话中...") //呼入建立
  89. if(stringHr_1){
  90. var p = '<a href="javascript:;" class="active J_menuTab" data-id="./callScreen/callScreen.html?Number=' + stringHr_1+'">来电弹屏<i class="fa fa-times-circle"></i></a>';
  91. $(".J_menuTab").removeClass("active");
  92. var nif = '<iframe class="J_iframe J_iframeNew" name="iframe" width="100%" height="100%" src="./callScreen/callScreen.html?Number=' + stringHr_1+'"></iframe>';
  93. $(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
  94. $(".J_menuTabs .page-tabs-content").append(p);
  95. }
  96. console.info('onConfirmed - ', data);
  97. if(data.originator == 'remote' && currentSession == null) {
  98. currentSession = incomingSession;
  99. incomingSession = null;
  100. //layer.msg("setCurrentSession - ", currentSession);
  101. }
  102. });
  103. data.session.on('sdp', function(data) {
  104. console.info('onSDP, type - ', data.type, ' sdp - ', data.sdp);
  105. });
  106. data.session.on('progress', function(data) {
  107. $(".tooltip_text").text("呼入振铃...")
  108. //layer.msg('onProgress - ', data.originator);
  109. if(data.originator == 'remote') {
  110. //layer.msg('onProgress, response - ', data.response);
  111. }
  112. });
  113. data.session.on('peerconnection', function(data) {
  114. $(".tooltip_text").text("呼叫建立...")//呼入建立
  115. //layer.msg('onPeerconnection - ', data.peerconnection);
  116. data.peerconnection.onaddstream = function(ev) {
  117. //layer.msg('onaddstream from remote ----------- ', ev);
  118. //<!-- videoView.src = URL.createObjectURL(ev.stream); -->
  119. videoView.srcObject = ev.stream;
  120. };
  121. });
  122. });
  123. userAgent.on('newMessage', function(data) {
  124. if(data.originator == 'local') {
  125. console.info('onNewMessage , OutgoingRequest - ', data.request);
  126. } else {
  127. console.info('onNewMessage , IncomingRequest - ', data.request);
  128. }
  129. });
  130. //console.info("call register");
  131. userAgent.start();
  132. }
  133. var eventHandlers = {
  134. 'progress': function(e) {
  135. $(".tooltip_text").text("呼出振铃...");
  136. },
  137. 'failed': function(e) {
  138. $(".tooltip_text").text("呼叫失败...");
  139. //layer.msg('呼叫失败', e);
  140. },
  141. 'ended': function(e) {
  142. $(".tooltip_text").text("通话结束...");
  143. //layer.msg('呼叫结束', e); //对方挂机,通话结束
  144. },
  145. 'confirmed': function(e) {
  146. $(".tooltip_text").text("呼叫建立...");
  147. //layer.msg('呼叫建立');
  148. }
  149. };
  150. function testCall() {
  151. var sip_phone_number_ = document.getElementById("sip_phone_number").value.toString();
  152. var options = {
  153. 'eventHandlers': eventHandlers,
  154. 'mediaConstraints': {
  155. 'audio': true,
  156. 'video': false,
  157. mandatory: {
  158. maxWidth: 640,
  159. maxHeight: 360
  160. }
  161. },
  162. 'mediaStream': localStream
  163. };
  164. outgoingSession = userAgent.call(sip_phone_number_, options);
  165. var p = '<a style="background: #24c792; color: #FFFFFF;" href="javascript:;" class="active J_menuTab" data-id="./callScreen/callScreen.html?Number=' + sip_phone_number_+'">外呼弹屏<i class="fa fa-times-circle"></i></a>';
  166. $(".J_menuTab").removeClass("active");
  167. var nif = '<iframe class="J_iframe J_iframeNew" name="iframe" width="100%" height="100%" src="./callScreen/callScreen.html?Number=' + sip_phone_number_+'"></iframe>';
  168. $(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
  169. $(".J_menuTabs .page-tabs-content").append(p);
  170. }
  171. function reg() {
  172. $(".tooltip_text").text("注册...");
  173. //console.log('register----------->');
  174. userAgent.register();
  175. }
  176. function unReg() {
  177. $(".tooltip_text").text("注销...");
  178. //console.log('unregister----------->');
  179. userAgent.unregister(true);
  180. }
  181. function hangup() {
  182. debugger
  183. //window.frames[1].clearInter();
  184. $(".tooltip_text").text("挂断...");
  185. //console.log('hangup----------->');
  186. userAgent.terminateSessions();
  187. }