需求
项目中使用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



















