通话状态及通话功能 (Session)

Session 对象为通话实例,用于实现通话状态管理及通话中的相关操作。本文介绍与通话状态及通话功能 (Session 对象) 相关的属性、方法及事件。

属性

属性 类型 说明
RTCSession RTCSession 通话实例。
callReport Report 通话质量报告。
agreeChangeVideo (params: AgreeChangeVideoParamsType) => Promise<boolean> 是否同意切换成视频通话回调函数。如果没有提供该回调函数,将默认拒绝切换。
status CallStatus 通话状态,包含名字、号码、头像、是否静音等属性。
incomingList Session[] 来电数组。
timer TimerType 通话计时器。
localStream MediaStream 本地媒体流,仅含视频轨,不含音频。
remoteStream MediaStream 远端媒体流,包含音视频轨。

方法

方法概览
停止通话计时 保持通话 结束通话
监听事件 恢复通话 重新协商通话
拒接来电 发送 DTMF 音频转视频
接听来电 静音通话 视频转音频
挂断通话 取消静音通话 更新通话状态
盲转接通话 开始录音 更新 Session 的静态属性
咨询转接通话 暂停录音 销毁 Session 实例
停止通话计时
方法
stopTimer()
方法参数 空。
返回值
this
监听事件
方法
on(eventName:string,listener: (...args: any[]) => void)
方法参数
  • eventName:事件名称。
  • listener:回调函数。
返回值
this
注: 关于可监听的事件,参见 事件
拒接来电
该方法等价于 PhoneOperator 对象的拒接来电方法。
方法
reject()
方法参数 空。
返回值
void
接听来电
该方法等价于 PhoneOperator 对象的接听来电方法。
方法
answer(option?: CallOptions, allowNoneCamera: boolean = true)
方法参数
  • option:指定通话参数
  • allowNoneCamera: 是否允许无摄像头接听。
返回值
Promise<Result>
挂断通话
该方法等价于 PhoneOperator 对象的挂断通话方法。
方法
hangup() 
方法参数 callId:通话唯一标识。
返回值
void
盲转接通话
该方法等价于 PhoneOperator 对象的盲转接通话方法。
方法
blindTransfer(number: string) 
方法参数 number:通话转接对象的号码。
返回值
void
咨询转接通话
该方法等价于 PhoneOperator 对象的咨询转接通话方法。
方法
attendedTransfer(number: string) 
方法参数 number:通话转接对象的号码。
返回值
void
保持通话
该方法等价于 PhoneOperator 对象的保持通话方法。
方法
hold()
方法参数 空。
返回值
void
恢复通话
该方法等价于 PhoneOperator 对象的恢复通话方法。
方法
unhold()
方法参数 空。
返回值
void
发送 DTMF
该方法等价于 PhoneOperator 对象的发送 DTMF 方法。
方法
dtmf(dtmf: string)
方法参数 dtmf:字符串 (0123456789*#)
返回值
void
静音通话
该方法等价于 PhoneOperator 对象的静音通话方法。
方法
mute()
方法参数 空。
返回值
void
取消静音通话
该方法等价于 PhoneOperator 对象的取消静音通话方法。
方法
unmute()
方法参数 空。
返回值
void
开始录音
该方法等价于 PhoneOperator 对象的开始录音方法。
方法
startRecord()
方法参数 空。
返回值
void
暂停录音
该方法等价于 PhoneOperator 对象的暂停录音方法。
方法
pauseRecord()
方法参数 空。
返回值
void
结束通话
该方法等价于 PhoneOperator 对象的结束通话方法。
方法
terminate(type: 'hangup' | 'reject' | 'terminate' = 'terminate')
方法参数 type:通话结束类型。
返回值
void
重新协商通话
方法
renegotiate(offerToReceiveVideo?: boolean) 
方法参数 offerToReceiveVideo:是否接收视频。
返回值类型 boolean
音频转视频
方法
audioToVideo(allowNoneCamera: boolean = true) 
方法参数 allowNoneCamera:是否允许无摄像头。
返回值
Promise<Result>
视频转音频
方法
videoToAudio() 
方法参数 空。
返回值类型 boolean
更新通话状态
方法
setStatus(status: Partial<CallStatus>)
方法参数 status:通话状态对象。
返回值
this
更新 Session 的静态属性
方法
setStaticStatus(staticStatus: Partial<StaticCallStatus>, startManualModel?: boolean)
方法参数
  • staticStatus:Session 的静态属性包括 nameavatarcompany
  • startManualModel:可选。是否启用手动模式,启用后将不再自动更新静态属性。
返回值
this
销毁 Session 实例
此方法将解除所有订阅事件,停止 RTCSession。
方法
destroy()
方法参数 空。
返回值 空。

事件

事件名称 事件说明 报告参数
callReport 通话质量报告更新事件,每3秒更新一次
  • callId: string:通话的唯一 ID
  • callReport: Report:通话质量报告
streamAdded 添加媒体流
  • callId: string:通话的唯一 ID
  • communicationType: "outbound" | "inbound":通话类型
  • stream: MediaStream:媒体流
ended 通话结束
  • callId: string:通话的唯一 ID
  • cause: string:通话结束的原因
failed 通话失败
  • callId: string:通话的唯一 ID
  • cause: string:通话失败的原因
  • code: number:错误码
clientError 客户端错误,导致无法发起通话
  • callId: string:通话的唯一 ID
  • cause: string:客户端错误的原因
reinvite 重新邀请事件,该事件在对端执行咨询转接时触发
  • callId: string:通话的唯一 ID
  • session: Session:当前通话实例
accepted 收到成功状态响应代码 200 OK
  • callId: string:通话的唯一 ID
  • session: Session:当前通话实例
confirmed 通话正式建立 ( 收到 ack 包 )
  • callId: string:通话的唯一 ID
  • session: Session:当前通话实例
statusChange 通话状态变更
  • newStatus:新通话状态
  • oldStatus:原通话状态
staticStatusChange 通话的静态属性变更
  • newStatus:新通话静态属性
  • oldStatus:原通话状态静态属性