用友中怎么改制单人(用友软件怎样修改制单人员)

币圈行情 阅读 3 2023-04-25 12:27:29

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

音频通话是一项基础的app功能,使用低代码平台,可以很快地完成这一功能开发,实现单人、多人音频通话,下面是详细教程。

一、效果展示


如何让App实现单人/多人音频通话?


二、功能实现的思路

使用之前必须先获取token、init、connect,同时需要到融云后台开通音视频通话功能(开通或者关闭30分钟后生效)。

单人通话逻辑比较简单,主要会用到didReceiveCall、didConnect、didDisconnect等三个事件。


主要通话流程:

(1)发起通话;

(2)监听来电;

(3)接听或者挂断。


多人通话逻辑复杂一点,并且只能应用在群组或者讨论组,会用到didReceiveCall、didConnect、remoteUserDidJoin、remoteUserDidLeft、remoteUserDidInvite、didDisconnect等六个事件。


主要通话流程:

(1)在组里选择几个成员发起通话

(2)成员收到来电

(3)成员接听或者挂断

(4)邀请几个成员加入当前通话

(5)被邀请组员收到来电

(6)被邀请组员接听或挂断来电

(7)通话组员监听是否有新成员加入或成员退出


为了让页面代码逻辑更简单,设计了四个页面:

index.html(融云初始化、所有监听等主要业务代码);

receive-call.html(接收端业务代码,单人多人通话代码);

send-call.html(发送端业务代码,单人多人通话代码);

friends.html(群组或讨论组成员列表)。

index.html首页融云初始化以及监听代码如下:

        var rong = api.require('rongCloud2');        rong.init(function (ret, err) {            if (ret.status == 'success') {                rong.connect({                    token: $api.getStorage('token')                }, function (ret, err) {                 });            }        });        //来电事件        rong.addCallReceiveListener({            target: 'didReceiveCall'        }, function (ret) {            if (ret.callSession.status) {                var callType = 'more';                if (ret.callSession.conversationType == 'PRIVATE') {                    callType = 'one';                }                api.openWin({                    name: 'receive-call',                    url: 'receive-call.html',                    pageParam: {                        uid: ret.callSession.callerUserId,                        userIdList: [ret.callSession.observerUserList],                        callId: ret.callSession.callId,                        callType: callType                    },                    animation: {type: "fade"}                });            }        });        //通话结束事件        rong.addCallSessionListener({            target: 'didDisconnect'        }, function (ret) {            api.sendEvent({                name: 'didDisconnect'            });        });        //对端挂断事件        rong.addCallSessionListener({            target

1、单人通话

调用startCall发起通话,需要注意userIdLis参数必填否则无法建立通话,对方也无法收到来电事件。

    rong.startCall({        targetId: '3001',    //用户id        userIdList: ['3001'] //必填如果不填无法建立通话    }, function (ret) {        if (ret.callSession.callId) {            api.openWin({                name: 'send-call',                url: 'send-call.html',                pageParam: {                    uid: '3000',                   //自己的用户id                    userIdList: ['3001'],                    callId: ret.callSession.callId,//发送者可以通过通话id挂断通话                    callType: 'one'                //通话类型单人one 多人more                },                animation: { type: "fade"}            })        }    })

发送端页面send-call.html需要处理来电接听事件(didConnect)以及通话结束事件(didDisconnect)、显示对方用户个人信息、通话计时。

当用户接听时就开始计时,时间格式00:00:00代码如下:

        timer(){                    var that = this                    clearInterval(time)                    time = setInterval(function () {                        number++                        var hour = that.add0(Math.floor(number / 60 / 60));                        var min = that.add0(Math.floor(number / 60) % 60);                        var s = that.add0(number % 60);                        that.time = hour + ':' + min + ':' + s                    }, 1000)                }

Index.html页面监听来电事件并打开接收端页面receive-call.html并传递相关参数。

        rong.addCallReceiveListener({            target: 'didReceiveCall'        }, function (ret) {            if (ret.callSession.status) {                var callType = 'more';                if (ret.callSession.conversationType == 'PRIVATE') {                    callType = 'one';                }                api.openWin({                    name: 'receive-call',                    url: 'receive-call.html',                    pageParam: {                        uid: ret.callSession.callerUserId,                        userIdList: [ret.callSession.observerUserList],                        callId: ret.callSession.callId,                        callType: callType                    },                    animation: {type: "fade"}                });            }        });

接收端页面receive-call.html需要显示对方用户个人信息、通话计时、接听、挂断等。

当用户挂断或者自己挂断就关闭相应页面,长时间不接听系统自动触发通话结束事件。


2、多人通话

调用startCall发起通话,注意targetId为讨论组或者群组id,参数conversationType必填同时要和targetId类型保持一致,参数userIdLis里面用户必须是本群组或者讨论组成员同时不能填自己的id。

   rong.startCall({        targetId: 'group318', //群组或者讨论组id        conversationType: 'GROUP',//必填必须和targetId类型保持一致。        userIdList: ['3001','3002'] //不能填自己的id    }, function (ret) {        if (ret.callSession.callId) {            api.openWin({                name: 'send-call',                url: 'send-call.html',                pageParam: {                    uid: '3000',                   //自己的用户id                    userIdList: ['3001','3002'] ,                    callId: ret.callSession.callId,//通话id                    callType: 'more'               //通话类型单人one 多人more                },                animation: {type: "fade"}            })        }    })

发送端页面send-call.html需要处理以下业务:

通话已接通的事件(didConnect);

对端用户加入了通话的事件(remoteUserDidJoin);

对端用户挂断(remoteUserDidLeft);

有用户被邀请加入通话的事件(remoteUserDidInvite);

通话结束事件(didDisconnect);

以及显示和更新当前通话成员信息、通话计时。

       //通话接通事件        api.addEventListener({            name: 'didConnect'        }, function (ret, err) {            vm.Connect = true            vm.title = '通话中...'//改变通话状态            vm.timer();//开始计时        });        //对端加入通话事件        api.addEventListener({            name: 'remoteUserDidJoin'        }, function (ret, err) {            var obj = vm.inData(ret.value.uid);            for (var i = 0; i < vm.userList.length; i++) {                var rs = vm.userList[i]                if (ret.value.uid == rs.uid) {                    rs.avatar = obj.avatar;//更新用户头像                }            }        });        //对端挂断电话        api.addEventListener({            name: 'remoteUserDidLeft'        }, function (ret, err) {            var obj = vm.inData(ret.value.uid);            for (var i = 0; i < vm.userList.length; i++) {                var rs = vm.userList[i]                if (ret.value.uid == rs.uid) {                    vm.userList.splice(i, 1);//删除用户数据                }            }        });        //通话结束        api.addEventListener({            name: 'didDisconnect'        }, function (ret, err) {            api.closeWin();        });        //邀请加入通话的事件        api.addEventListener({            name: 'remoteUserDidInvite'        }, function (ret, err) {            var rs = vm.inData(ret.value.uid);            let obj = { uid: rs.uid, nickname: rs.nickname, avatar: '../res/user.png' }            vm.userList.push(obj)        });

当对端用户加入了通话时更新用户头像同时也通话计时,当对端用户挂断时移除该用户,当有用户被邀请加入通话时新增用户数据但是头像为灰色默认头像,当通话结束时关闭当前页。


接收端页面receive-call.html需要处理以下业务

对端用户加入了通话的事件(remoteUserDidJoin);

对端用户挂断(remoteUserDidLeft);

通话结束事件(didDisconnect);

以及显示和更新当前通话成员信息、计时。

监听代码如下:

       //对端加入通话        api.addEventListener({            name: 'remoteUserDidJoin'        }, function (ret, err) {            var has = false            for (var i in vm.userList) {                if (vm.userList[i].uid == ret.value.uid) {                    has = true                    vm.userList[i].avatar = vm.inData(ret.value.uid).avatar;//更新用户头像                }            }            if (has == false) {                var rs = vm.inData(ret.value.uid);                vm.userList.push(rs)//增加用户信息            }        });        //对端挂断电话        api.addEventListener({            name: 'remoteUserDidLeft'        }, function (ret, err) {            var obj = vm.inData(ret.value.uid);            for (var i = 0; i < vm.userList.length; i++) {                var rs = vm.userList[i]                if (ret.value.uid == rs.uid) {                    vm.userList.splice(i, 1);//删除用户                }            }        });        //通话结束        api.addEventListener({            name: 'didDisconnect'        }, function (ret, err) {            api.closeWin();        });

当自己接听电话时开始计时,当对端用户加入了通话时新增用户信息,当对端用户挂断时移除该用户,当通话结束时关闭当前页,长时间不接听系统自动触发通话结束事件。

相关内容

标签: 来电事件 用户挂断 通话代码

用友中怎么改制单人(用友软件怎样修改制单人员)文档下载: PDF DOC TXT
文章来源: 小月
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至举报,一经查实,本站将立刻删除。
上一篇: 山东国际信托有限公司是什么性质(山东国际信托有限公司是什么性质的银行) 下一篇: 期货 换手(期货换手率看哪个指标)

相关资讯