jssip挂断事件(ended),通话结束判断主叫挂断、被叫挂断还是系统挂断

本文讲述了在使用JSSIP进行项目开发时,如何在电话被挂断时区分是主叫还是被叫,并通过ended事件和originator属性播放不同提示音。作者分享了解决方案,包括代码示例和关键API的查阅过程。
摘要由CSDN通过智能技术生成

需求

项目中使用jssip,在被叫挂断电话时播放提示音:对方已挂断 。显然在ended事件中加就可以,但是遇到个问题,当主叫挂断时也会播放,没办法找解决方法呗。

解决方法

遇事不决找api,但是这个官方api太狗了,全是英文不说,简介内容还很少,先看官方api(官方地址):
在这里插入图片描述
上面内容是啥?

发起人: 'local'/'remote'/'system'字符串。呼叫终止来自哪里。
消息: JsSIP.IncomingRequest或JsSIP.IncomingResponse实例在发起方值为“remote”时生成调用终止,否则为null。
原因:Failure和End Causes的一个值。

没错,就是百度翻译的!
官方真的太短了,解释了个寂寞,不过还好说了重点,ended的返回值里面有一个字符串,里面有状态( ‘local’/‘remote’/‘system’),指明了主动挂断的是哪一方。

效果

先输出一下看看返回值有没有这个状态。
在这里插入图片描述
官方虽短但快,有用啊。很明显可以看到返回值中originator的值为’remote’。下面是三个状态分别对应的啥。

本地挂断local
对方挂断remote
系统挂断system

代码

关键代码

// 通话结束
currentSession.on('ended', (res) => {
	console.log('通话结束--- ended', res)
	let time = 500 // 该变量为项目需求,毕竟得给个缓冲时间嘛
	if (res.originator=== 'remote') {
		playHangupMusic()
		time = 2000
	}
	// 对方挂断需要播放录音,录音时间2秒,所有加个延迟
	setTimeout(() => {
		bus.$emit('sessionData', { state: 'ended' })
	}, time)
})


// 播放挂机音乐
function playHangupMusic() {
  const ringAudio = document.getElementById('music')
  ringAudio.play()
}

html

<div v-show="false">
	<audio id="music" ref="music" src="@/assets/music/hangup.mp3"></audio>
</div>

完整的代码

jssip(一)——安装与配置

https://blog.csdn.net/xuelong5201314/article/details/132604950
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuelong-ming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值