通话功能 (PhoneOperator)

PhoneOperator 对象用于管理通话。每通通话都是通过 sessions 属性缓存,该属性本身是一个包含了不同通话实例的地图,即 Map<string, Session>,每个通话实例都被表示为一个 Session。本文介绍与通话功能 (PhoneOperator 对象) 相关的属性、方法及事件。

属性

属性名 类型 说明
currentSessionID string 标识当前通话 (Session) 的通话 ID。
reRegistryPhoneTimes number 指定可重新注册 SIP UA (User Agent) 的次数。
deviceIds { cameraId?: string; microphoneId?: string;} 指定音视频输入设备的 ID,包含摄像头 ID 及麦克风 ID。
sessions Map<string, Session> 通话 Session 的缓存 Map 对象, key 为 callId。
currentSession Session 当前通话 Session。
isRegistered boolean 是否成功注册 SIP UA。
extraHeaders string[] 额外的 SIP 请求头。
videoPlan string 获取视频服务状态。
recordPermissions number 是否有录音权限:
  • 0:无权限
  • 1:有暂停 / 恢复录音权限
  • 2:有开始 / 暂停 / 恢复录音权限
incomingList session[] 来电列表。
isNoneCamera boolean 是否无摄像头。
isMaxCall boolean 是否已达最大通话数量。

方法

方法概览
监听事件
方法
on(eventName:string,listener: (...args: any[]) => void)
方法参数
  • eventName:事件名称。
  • listener:回调函数。
返回值 空。
注: 关于可监听的事件,参见 事件。
开始注册 SIP UA
SIP UA 注册成功后即可呼出和接听电话。
注: 调用此方法之前,确保你已监听需要监听的事件,否则可能会错失某些事件的通知。
方法
start()
方法参数 空。
返回值
this
重新注册 SIP UA
该方法会在 phone 实例内部调用。外部程序无需调用此方法,以免出现异常。
方法
reRegister(authorizationUser: string, ha1: string)
方法参数
  • authorizationUser:用户名。
  • ha1:登录密码。
返回值
this
发起呼叫
方法
call(number: string, option?: CallOptions, transferId?: string)
方法参数
  • number:被叫号码。
  • option:可选。指定通话选项。
  • transferId:可选。咨询转接通话的 ID。
    注: 当有 transferId 时则为咨询转接通话,异步函数。
返回值
Promise<Result>
拒接来电
方法
reject(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
接听来电
方法
answer(callId: string, option?: CallOptions, allowNoneCamera: boolean = true) 
方法参数
  • callId:通话的唯一 ID。
  • option:可选。指定通话选项。
  • allowNoneCamera:是否允许无摄像头接听。
返回值
Promise<Result>
挂断通话
方法
hangup(callId: string) 
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
盲转接通话
方法
blindTransfer(callId: string, number: string) 
方法参数
  • callId:通话的唯一 ID。
  • number:通话转接对象的号码。
返回值类型 boolean
咨询转接通话
方法
attendedTransfer(callId: string, number: string) 
方法参数
  • callId:通话的唯一 ID。
  • number:通话转接对象的号码。
返回值类型 boolean
保持通话
方法
hold(callId: string) 
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
恢复通话
方法
unhold(callId: string) 
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
发送 DTMF
方法
dtmf(callId: string, dtmf: string)
方法参数
  • callId:通话的唯一 ID。
  • dtmf:字符串 (0123456789*#)
返回值类型 boolean
静音通话
方法
mute(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
取消静音通话
方法
unmute(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
开始录音
方法
startRecord(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
暂停录音
方法
pauseRecord(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
结束通话
方法
terminate(callId: string, type: 'hangup' | 'reject' | 'terminate' = 'terminate')
方法参数
  • callId:通话的唯一 ID。
  • type:通话结束类型。
返回值类型 boolean
断开 SIP UA 注册
方法
disconnect()
方法参数 空。
返回值类型 boolean
获取全部通话 (sessions 属性)
该方法将以数组的形式返回。
方法
getSession()
方法参数 空。
返回值类型 boolean
设置当前通话 (currentSession)
方法
setCurrentSession(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
获取当前通话 (currentSession)
方法
getCurrentSession()
方法参数 空。
返回值
Session
更新 Session 的静态属性
方法
setSessionStaticStatus(callId: string, staticStatus: Partial<StaticCallStatus>, startManualModel?: boolean)
方法参数
  • callId:通话的唯一 ID。
  • staticStatus:Session 的静态属性包括 name、avatar、company。
  • startManualModel:可选。是否启用手动模式,启用后将不再自动更新静态属性。
返回值类型 boolean
销毁 PhoneOperator 对象
此方法将解除所有订阅事件,停止 SIP UA 实例,并删除所有 session。
方法
destroy()
方法参数 空。
返回值 空。

事件

事件名称 事件说明 报告参数
connected SIP 服务连接成功 空
disconnected SIP 服务断开连接 空
registered SIP UA 注册成功 空
registrationFailed SIP UA 注册失败
  • code: number:错误码
  • msg: string:错误信息
newRTCSession 创建新的通话实例 (Session)
  • callId: string:通话的唯一 ID
  • session: Session:当前通话实例
incoming 来电
  • callId: string:通话的唯一 ID
  • session: Session:当前通话实例
startSession 添加通话实例 (Session) 至存储通话的 Map (sessions) 中
  • callId: string:通话的唯一 ID
  • session: Session:当前通话实例
recordPermissionsChange 录音权限发生改变
  • 0:无权限
  • 1:有暂停 / 恢复录音权限
  • 2:有开始 / 暂停 / 恢复录音权限
deleteSession 删除通话实例 (Session)
  • callId: string:通话的唯一 ID
  • cause: string:删除通话实例的原因
isRegisteredChange SIP UA 注册状态是否发生改变
  • true:注册状态已改变
  • false:注册状态未改变