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

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

属性

属性 类型 说明
RTCSession RTCSession 通话实例。
callReport Report 通话质量报告。
status CallStatus 通话状态,包含名字、号码、头像、是否静音等属性。
incomingList Session[] 来电数组。
timer TimerType 通话计时器。
localStream MediaStream 本地媒体流,仅含视频轨,不含音频。
remoteStream MediaStream 远端媒体流,包含音视频轨。

方法

方法概览
停止通话计时
方法
stopTimer()
方法参数 空。
返回值
this
监听事件
方法
on(eventName:string,listener: (...args: any[]) => void)
方法参数
  • eventName:事件名称。
  • listener:回调函数。
返回值 空。
注: 关于可监听的事件,参见 事件
拒接来电
该方法等价于 PhoneOperator 对象的拒接来电方法。
方法
reject()
方法参数 空。
返回值类型 boolean
接听来电
该方法等价于 PhoneOperator 对象的接听来电方法。
方法
answer(option?: CallOptions)
方法参数 option:可选。指定 userMedia 约束。
返回值
Promise<Result>
挂断通话
该方法等价于 PhoneOperator 对象的挂断通话方法。
方法
hangup() 
方法参数 空。
返回值类型 boolean
盲转接通话
该方法等价于 PhoneOperator 对象的盲转接通话方法。
方法
blindTransfer(number: string) 
方法参数 number:通话转接对象的号码。
返回值类型 boolean
咨询转接通话
该方法等价于 PhoneOperator 对象的咨询转接通话方法。
方法
attendedTransfer(number: string) 
方法参数 number:通话转接对象的号码。
返回值类型 boolean
保持通话
该方法等价于 PhoneOperator 对象的保持通话方法。
方法
hold()
方法参数 空。
返回值类型 boolean
恢复通话
该方法等价于 PhoneOperator 对象的恢复通话方法。
方法
unhold()
方法参数 空。
返回值类型 boolean
发送 DTMF
该方法等价于 PhoneOperator 对象的发送 DTMF 方法。
方法
dtmf(dtmf: string)
方法参数 dtmf:字符串 (0123456789*#)
返回值类型 boolean
静音通话
该方法等价于 PhoneOperator 对象的静音通话方法。
方法
mute()
方法参数 空。
返回值类型 boolean
取消静音通话
该方法等价于 PhoneOperator 对象的取消静音通话方法。
方法
unmute()
方法参数 空。
返回值类型 boolean
开始录音
该方法等价于 PhoneOperator 对象的开始录音方法。
方法
startRecord()
方法参数 空。
返回值类型 boolean
暂停录音
该方法等价于 PhoneOperator 对象的暂停录音方法。
方法
pauseRecord()
方法参数 空。
返回值类型 boolean
结束通话
该方法等价于 PhoneOperator 对象的结束通话方法。
方法
terminate(type: 'hangup' | 'reject' | 'terminate' = 'terminate')
方法参数 type:通话结束类型。
返回值类型 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:原通话状态静态属性