123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
- <meta name="applicable-device"content="mobile" />
- <!-- <script>
- var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
- CSS.supports('top: constant(a)'))
- document.write(
- '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
- (coverSupport ? ', viewport-fit=cover' : '') + '" />')
- </script> -->
-
- <script src="./sdk1.js"></script>
-
- </head>
- <body>
- <!-- 媒体播放dom树 -->
- <audio id='remoteAudio' autoPlay></audio>
- <!-- <audio id='notifySound' autoPlay></audio> -->
- </body>
-
-
- <script>
- console.log("-----qxj iframe------");
- var _phone = null;
- var user = ''; // OPEN API放回
- var ha1 = ''; // OPEN API放回
- var realm = ''; // OPEN API放回
-
- // var user = '1010'; // OPEN API放回
- // var ha1 = 'e9cf8476ccdb5ab51b274e5ec4091cda'; // OPEN API放回
- // var realm = 'call.yjf.runtzh.com'; // OPEN API放回
-
- var server = 'call.yjf.runtzh.com'; // OPEN的IP地址和端口
- var mobile="";
- var sessionId='';
- JsSIP.C.SESSION_EXPIRES=120,JsSIP.C.MIN_SESSION_EXPIRES=360;
-
- var remoteAudio=document.getElementById('remoteAudio');
-
-
- // 事件处理
- function webphoneHandle(type, data, options) {
- console.log("qxj webphoneHandle type:"+type, "\n\n data:"+JSON.stringify(data), "\n\n options:"+JSON.stringify(options));
- // var outgoing="outgoing";
- // if(type=="outgoing.connecting"){
- // outgoing="connecting";
- // }
- // else if(type=="outgoing.progress"){
- // outgoing="progress";
- // }
- // else if(type=="outgoing.ended"){
- // outgoing="ended";
- // }
- sendData(type);
- }
-
- // 启动软电话
- function startPhone () {
- if(_phone==null){
- _phone = new WebPhoneSDK({
- lib: JsSIP,
- debug: true,
- debugLib: true,
- user: user,
- ha1: ha1,
- realm: realm,
- server: server,
- audioElement: document.getElementById('remoteAudio'),
- httpsConfirmFrame: 'httpsConfirmFrame',
- pcConfig:{"iceServers":[{"urls":["stun:211.159.161.254"]}]},
- events: {
- 'ua.connecting': (type, data) => webphoneHandle(type, data),
- 'ua.connected': (type, data) => webphoneHandle(type, data),//WEBPHONE链接OK
- 'ua.disconnected': (type, data) => webphoneHandle(type, data),//WEBPHONE链接断开
- 'reg.registered': (type, data) => webphoneHandle(type, data),//WEBPHONE 分机注册
- 'reg.unregistered': (type, data) => webphoneHandle(type, data),//WEBPHONE 分机取消注册
- 'reg.failed': (type, data) => webphoneHandle(type, data),//WEBPHONE 注册失败
- 'incoming.notify': (type, data, options) => this.webphoneHandle(type, data, options), //有电话进来了
- 'incoming.failed': (type, data, options) => this.webphoneHandle(type, data, options),//WEBPHONE 有电话进来,然后处理失败了(如,我们拒绝了,或者客户侧直接挂断了)
- 'incoming.ended': (type, options) => this.webphoneHandle(type, options),// WEBPHONE 有电话进来了,呼叫正常结束了
- 'incoming.accecpted': (type, options) => this.webphoneHandle(type, options),//有电话进来了,呼叫接听了
- 'outgoing.connecting': (type, options) => this.webphoneHandle(type, options),//WEBPHONE正在尝试呼出
- 'outgoing.progress': (type, options) => this.webphoneHandle(type, options),//WEBPHONE开始振铃了
- 'outgoing.failed': (type, data, options) => this.webphoneHandle(type, data, options),//WEBPHONE呼出失败了,如被叫拒绝了,线路异常呼出失败了
- 'outgoing.ended': (type, options) => this.webphoneHandle(type, options),//呼出正常结束
- 'outgoing.accecpted': (type, data, options) => this.webphoneHandle(type, data, options),//呼出被叫接听
- 'call.hold': (type, data) => webphoneHandle(type, data),//呼叫保持
- 'call.unhold': (type, data) => webphoneHandle(type, data)//呼叫解除保持
- }
- });
- }
- _phone.start({});
- }
-
-
- // 一定等到页面加载OK之后
- window.onload = function() {
- //startPhone();
- setVolume(0.5);
- }
-
- window.addEventListener('message', function (e) {
- console.log("qxj iframe getmsg:", JSON.stringify(e.data));
- if(e.data.act==0){ //初始化
- user=e.data.user;
- ha1=e.data.ha1;
- realm=e.data.realm;
- mobile=e.data.mobile;
- startPhone();
- }
- else if(e.data.act==1){ //呼叫
- sessionId=e.data.sessionId;
- callNumber();
- }
- else if(e.data.act==2){ //挂断
- hungUp();
- }
- else if(e.data.act==3){ //通话静音设置
- setMuted(true);
- }
- else if(e.data.act==4){ //音量设置
- setVolume(e.data.volume);
- }
- else if(e.data.act==5){ //恢复通话
- setMuted(false);
- }
- else if(e.data.act==6){ //关闭免提
- setVolume(e.data.volume);
- }
- else if(e.data.act==7){ //7 停用sdk
- stopPhone();
- }
- else if(e.data.act==8){ //8 重置phone
- stopPhone();
- _phone=null;
- }
- });
-
-
- //停用软电话
- function stopPhone(){
- _phone.stop();
- }
-
-
- // 发起呼叫
- function callNumber() {
- console.log("qxj callNumber sessionId:",sessionId);
- if (_phone) {
- _phone.call(mobile,{userdata:sessionId});
- }
- }
-
-
- function hungUp(){
- _phone.reject();
- }
-
-
- function setMuted(isMuted){
- console.log("isMuted",isMuted);
- remoteAudio.muted=isMuted;
- }
-
- function setVolume(volume){ //volume 属于是控制audio 播放音乐的音量,其范围0-1,1表示音量最大
- remoteAudio.volume =volume;
- }
-
-
- function sendData(type){ //将值传入uniapp页面
- //var param={data:type};
- window.parent.postMessage(type, '*');
- }
-
- </script>
-
-
- </html>
|