web端对接语音通话(腾讯云)

实时音视频 实时语音通话(Web) - 场景实践 - 文档中心 - 腾讯云

 

按照要求注册腾讯云账号,跑通demo

1、集成TRTCCalling组件

// npm方式安装
npm install trtc-js-sdk --save
npm install tim-js-sdk --save
npm install tsignaling --save
npm install trtc-calling-js --save// script方式使用 trtc-calling-js,按顺序引入以下资源
<script src="./trtc.js"></script>
<script src="./tim-js.js"></script>
<script src="./tsignaling.js"></script>
<script src="./trtc-calling-js.js"></script>

2、在main.js中引入腾讯云通话

import TRTCCalling from 'trtc-calling-js'
Vue.prototype.$TRTCCalling = TRTCCalling;

3、定义全局变量

var CONFIG_OBJ = {SDKAppID:********,  //腾讯云语音idtrtcCalling:null,  //腾讯云语音对象
};

4、登录腾讯云语音并且绑定监听事件

methods:{//初始化腾讯云通话initCall(){var that = this;//登录腾讯云语音let options = {SDKAppID: CONFIG_OBJ.SDKAppID};CONFIG_OBJ.trtcCalling = new this.$TRTCCalling(options);CONFIG_OBJ.trtcCalling.login({userID:that.$store.state.user.name,userSig:that.$store.state.user.userSig});//监听有人发来视频CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.INVITED, ({inviteID, sponsor, inviteData}) => {let message = "来自" + sponsor + "的语音通话";if (sponsor === that.$store.state.user.name) {// 邀请人是自己, 同一个账号有可能在多端登录return;}// 考虑忙线的情况if (that.$store.state.callStatus === "calling" || that.callStatus === "connected") {CONFIG_OBJ.trtcCalling.reject({ inviteID, isBusy: true });return;}that.$store.commit("$_updateIsInviter", false);that.$store.commit("$_updateCallStatus", "connect");that.callMessage = message;});//监听对方同意(拨打方)CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.USER_ACCEPT,({userID}) => {that.callMessage = "与"+userID+"的语音通话";that.$store.commit("$_updateCallStatus", "calling");});//监听有用户进入聊天(接收方)CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.USER_ENTER,({userID}) => {that.callMessage = "来自"+userID+"的语音通话";that.$store.commit("$_updateCallStatus", "calling");});//监听对方拒绝接听CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.REJECT,({userID}) => {that.callMessage = "对方拒绝接听通话请稍后重试......";setTimeout(function () {that.$store.commit("$_updateCallStatus", "idle");},1500)});//监听对方占线CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.LINE_BUSY,({userID}) => {that.callMessage = "对方正忙请稍后重试......";setTimeout(function () {that.$store.commit("$_updateCallStatus", "idle");},1500)});//监听对方在联通前取消拨打电话CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.CALLING_CANCEL,({userID}) => {that.callMessage = "对方已取消";setTimeout(function () {that.$store.commit("$_updateCallStatus", "idle");},1500)});//监听通话中时用户挂断电话(双方)CONFIG_OBJ.trtcCalling.on(that.$TRTCCalling.EVENT.CALL_END,({userID}) => {that.callMessage = "通话已结束";setTimeout(function () {that.$store.commit("$_updateCallStatus", "idle");},1500)});}},
computed:{callStatus(){return this.$store.state.callStatus},
},
watch:{/*监听当前通话状态改变*/callStatus(val){//空闲if(val == "idle"){this.CallBouncedShow = false;  //通话提示框this.$refs.PlayAudioRef.stopAudio("call");  //通话铃声//正在通话中的状态}else if(val == "calling"){this.CallBouncedShow = true;  //通话提示框this.$refs.PlayAudioRef.stopAudio("call"); //通话铃声//连接中的状态}else if(val == "connect"){this.CallBouncedShow = true;  //通话提示框this.$refs.PlayAudioRef.playAudio("call");  //通话铃声//正在连接的状态并且是当前人发起的视频if(this.$store.state.isInviter){this.callMessage = "等待对方接听......"; //修改通话显示框的文字}}}
}

5、通话弹框组件

<template><div class="call_bounced_warp" id="call_bounced_warp"><span class="message" id="message">{{callMessage}}</span><div slot="footer" class="manage_dialog_footer dialog-footer"><el-button type="success" v-show="acceptBtn"@click="acceptThis">接 听</el-button><el-button type="danger" v-show="rejectBtn" @click="rejectThis">拒 绝</el-button><el-button type="danger" v-show="endBtn" @click="endThis">挂 断</el-button></div></div>
</template><script>export default {name: "call_bounced",data(){return{message:"",acceptBtn:true,rejectBtn:true,endBtn:false,}},props:{callMessage:String},mounted(){this.dragBox(document.querySelector("#message"),document.querySelector("#call_bounced_warp"));},methods:{acceptThis(){CONFIG_OBJ.trtcCalling.accept();this.$store.commit("$_updateCallStatus", "calling");},rejectThis(){CONFIG_OBJ.trtcCalling.reject();this.$store.commit("$_updateCallStatus", "idle");},endThis(){CONFIG_OBJ.trtcCalling.hangup();this.$store.commit("$_updateCallStatus", "idle");},dragBox(drag, wrap){function getCss(ele, prop) {return parseInt(window.getComputedStyle(ele)[prop]);}var initX,initY,dragable = false,wrapLeft = getCss(wrap, "left"),wrapRight = getCss(wrap, "top");drag.addEventListener("mousedown", function (e) {dragable = true;initX = e.clientX;initY = e.clientY;}, false);document.addEventListener("mousemove", function (e) {if (dragable === true ) {var nowX = e.clientX,nowY = e.clientY,disX = nowX - initX,disY = nowY - initY;wrap.style.left = wrapLeft + disX + "px";wrap.style.top = wrapRight + disY + "px";}});drag.addEventListener("mouseup", function (e) {dragable = false;wrapLeft = getCss(wrap, "left");wrapRight = getCss(wrap, "top");}, false);}},computed:{callStatus(){return this.$store.state.callStatus},},watch:{/*监听当前通话状态改变*/callStatus(val){if(val == "calling"){this.acceptBtn = false;this.rejectBtn = false;this.endBtn = true;}else if(val == "connect"){//正在连接的状态并且是当前人发起的视频  不显示接收按钮if(this.$store.state.isInviter){this.acceptBtn = false;this.rejectBtn = false;this.endBtn = true;}else{this.acceptBtn = true;this.rejectBtn = true;this.endBtn = false;}}}}}
</script><style scoped lang="scss">
.call_bounced_warp{width: 3rem;height: 1.55rem;background: #000;position: absolute;bottom: 0.14rem;right: 0.15rem;z-index: 9999;border-radius: 4px 4px 0 0;text-align: center;padding: 0.15rem 0;.message{line-height: 0.6rem;color: #fff;cursor: move;}
}
</style>

6、拨打电话

this.$url.trtcCalling.call({userID:row.id,type: 1, //通话类型,0-未知, 1-语音通话,2-视频通话
});
this.$store.commit("$_updateCallStatus", "connect"); //更新通话状态为连接中
this.$store.commit("$_updateIsInviter", true);  //更新当前登录人是否是发起者

7、退出

CONFIG_OBJ.trtcCalling.logout(); //执行退出登录方法
this.$store.commit("$_updateCallStatus", "idle"); //改为空闲状态

效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33443.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新知实验室基于腾讯云实时音视频WEB端实验

腾讯实时音视频&#xff08;Tencent Real-Time Communication&#xff0c;TRTC&#xff09;主要用于互动直播和多人音视频。支持低延时直播观看、实时录制、屏幕分享、美颜特效、立体声等能力&#xff0c;还能和直播 CDN 无缝对接&#xff0c;适用于互动连麦、跨房 PK、语音电台…

腾讯云IM-SDK集成(web端)完成IM登录

一脸懵逼的看着腾讯云的文档&#xff0c;完成了所谓的采坑之旅 &#xff08;1&#xff09;很多人估计公司也需要用到聊天&#xff0c;以及音视频的功能&#xff0c;那么作为萌新的我&#xff0c;当然也是一来公司便得知需要用到这个技术&#xff0c;当时我是懵逼的&#xff0c…

[Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC

[Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC 即时通信TIM官网地址 即时通信TIM SDK API文档地址 实时音视频TRTC官网地址 实时音视频TRTC SDK API文档地址 概念与可能造成疑惑的问题 SDK 是什么&#xff1f; Github 地址 腾讯云将底层与后台代码封装混淆之后生成…

腾讯云部署清华大学ChatGLM-6B实战

简介&#xff08;来自官方&#xff09; ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别…

Chat GPT的到来,对普通人来说是福还是祸?

AI机器人的功能可能比我们想象的更大&#xff0c;可以创作也可以模拟人类的语言行为&#xff0c;与人类进行自然的聊天交流。同时已经开始代替人类做一些基础的工作&#xff0c;未来可能代替更多的人类工作。人工智能的出现也值得我们人类自己深思&#xff0c;如果我们的工作被…

使用Mendeley和CvtCNKI进行中英文参考文献引用管理(含硕博论文)

在写学术论文和学位论文的时候&#xff0c;往往需要引用大量参考文献&#xff0c;以前博主的做法都是边写论文边把相关参考文献以word批注的形式列在侧边栏&#xff08;因为后面修改的时候可能还会有所变动&#xff09;&#xff0c;等论文定稿之后再手动对引用的相关参考文献编…

关于硕士毕业论文中会议conference的参考文献格式修正GB7714-87#outputstyle#endnote

1问题描述 在硕士毕业论文中需要按照GB7714-87的参考文献引用标准对会议论文进行参考文献格式规范 GB7714-87中的要求如图&#xff1a;&#xff08;因为我们文中引用的论文一般 不会是论文集&#xff0c;而是论文集合中析出的一篇文章&#xff0c;so这个格式非常复杂&#xff…

IEEE Transactions模板中参考文献作者缩写、期刊名缩写

IEEE Transactions模板中参考文献作者缩写、期刊名缩写 本文章记录如何在IEEE Transactions的模板中&#xff0c;解决参考文献的作者缩写、期刊名字缩写的问题。 目录 IEEE Transactions模板中参考文献作者缩写、期刊名缩写0.上效果图1.如何设置.bib文件2.如何作者名字的缩写3…

ForeFront Chat 免费版GPT-4来了!

Forefront Chat简介 近日&#xff0c;Forefront AI 正式推出 Forefront Chat&#xff0c; 允许用户免费体验GPT-4 的强大功能 。 Forefront AI 在 Twitter 上表示&#xff1a;“今天&#xff0c;我们发布了 Forefront Chat 的免费 alpha 版&#xff0c;希望带来更出色的 ChatG…

女网红靠GPT-4交1000+男友,聊天按分钟收费,一周收入50万

点击关注公众号&#xff1a;互联网架构师&#xff0c;后台回复 2T获取2TB学习资源&#xff01; 上一篇&#xff1a;Alibaba开源内网高并发编程手册.pdf 编辑&#xff1a;鱼羊 转自&#xff1a;量子位 | 公众号 QbitAI 注意看&#xff0c;这个女人叫卡琳&#xff0c;靠着GPT-4&a…

熵在计算机方向的应用(浅谈信息熵)

信息是一个很抽象的东西&#xff0c;吃苹果的概率是二分之一&#xff0c;吃香蕉的概率是二分之一&#xff0c;这里面包含了多少信息量&#xff0c;由于信息很抽象&#xff0c;无法直观的量化。 信息熵原先是热力学中的名词&#xff0c;原先含义是表示分子状态的混乱程度。 香…

中文信息熵的计算

摘要&#xff1a;本文介绍了利用基于词的一元模型、二元模型、三元模型估计中文信息熵的计算方法&#xff0c;并通过中文维基百科语料得到三种统计语言模型计算得到的中文信息熵分别为13.711比特/词、6.402比特/词、1.508比特/词。 关键词&#xff1a;信息熵&#xff1b; 统计…

信息与熵值的计算

原文地址https://blog.csdn.net/kuang_liu/article/details/21469553 1. 什么是信息&#xff1f; 信息的定义涉及概率论中的随机事件概率&#xff0c;如果待分类事物可能划分在多个分类之中&#xff0c;则符号 Xi 的信息定义为&#xff1a; 其中 p(xi) 是选择该分类的概率。&…

信息熵的数值计算公式

1948年&#xff0c;信息论之父 C. E. Shannon &#xff08;香农&#xff09;借鉴了热力学的概念&#xff0c;把信息中排除了冗余后的平均信息量称为“信息熵”&#xff0c;并给出了计算信息熵的数学表达式。 信息熵介绍 一元变量信息熵&#xff1a; 式中对数一般取2为底&#…

从熵到相位传递熵,附matlba和python代码

先来一张图&#xff0c;预览一下最近为了整明白相位传递熵所要恶补的知识叭&#xff0c;泪目了&#xff1a;( 好吧&#xff0c;废话不多说&#xff0c;直接开始吧&#xff01; 一. 熵是什么&#xff1f; 1、香浓熵 2、联合熵、条件熵和互信息 3、传递熵 二、直方图 1、连续随…

信息熵计算权重

信息熵理论及应用 1948年美国数学家香农&#xff08;shanonc.E&#xff09;为解决信息的度量问题提出了信息熵的概念。信息熵是信息论中用来刻画信息无需度的一个量&#xff0c;熵值越大&#xff0c;表示信息的无序化程度越高&#xff0c;相对应的信息效率越高 计算过程 建立…

熵的推导与计算

一、信息熵 熵 (entropy) 这一词最初来源于热力学。1948年&#xff0c;克劳德爱尔伍德香农将热力学中的熵引入信息论&#xff0c;所以也被称为香农熵 (Shannon entropy)&#xff0c;信息熵 (information entropy)。本文只讨论信息熵。首先&#xff0c;我们先来理解一下信息这个…

如何更好的分析潜在人脉?聊聊华为云图引擎GES的Cypher子查询

摘要&#xff1a;本文以华为云图引擎 GES 为例&#xff0c;来介绍如何使用图查询语言 Cypher 表达一些需要做数据局部遍历的场景。 本文分享自华为云社区《使用 Cypher 子查询进行图探索 -- 以华为云图引擎 GES 为例》&#xff0c;作者&#xff1a;蜉蝣与海。 在图数据库/图计…

基于面板数据的熵值法介绍与实现

熵值法是一种基于信息熵理论的客观赋值方法。即数据越离散&#xff0c;所含信息量越多&#xff0c;对综合评价影响越大。 目录 一、基于面板数据熵值法介绍二、R语言实现参考文献 一、基于面板数据熵值法介绍 传统的熵值法有个弊端&#xff0c;只能针对于截面数据&#xff0c;…

信息熵的计算

信息熵计算公式&#xff1a; 演示数据&#xff1a; 性别&#xff08;x&#xff09;考试成绩&#xff08;y&#xff09;男优女优男差女优男优 X的信息熵计算为&#xff1a; p(男) 3/5 0.6 p(女) 2/5 0.4 根据上面的计算公式可得&#xff1a; 列X的信息熵 为&#xff1a; H&…