通话功能 (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。
recordPermissions number 是否有录音权限:
  • 0:无权限
  • 1:有暂停 / 恢复录音权限
  • 2:有开始 / 暂停 / 恢复录音权限
incomingList session[] 来电列表。
isMaxCall boolean 是否已达最大通话数量。

Methods

Methods overview
监听事件
方法
on(eventName:string,listener: (...args: any[]) => void)
方法参数
  • eventName:事件名称。
  • listener:回调函数。
返回值 空。
注: 关于可监听的事件,参见 事件
开始注册 SIP UA
SIP UA 注册成功后即可呼出和接听电话。
注: 调用此方法之前,确保你已监听需要监听的事件,否则可能会错失某些事件的通知。
方法
start()
方法参数 空。
返回值 空。
重新注册 SIP UA
该方法会在 phone 实例内部调用。外部程序无需调用此方法,以免出现异常。
方法
reRegister(authorizationUser: string, ha1: string)
方法参数
  • authorizationUser:用户名。
  • ha1:登录密码。
返回值
this
发起呼叫
方法
call(number: string, option?: CallOptions, transferId?: string)
方法参数
  • number:被叫号码。
  • option:可选。指定 userMedia 约束。
  • transferId:可选。咨询转接通话的 ID。
    注: 当有 transferId 时则为咨询转接通话,异步函数。
返回值
Promise<Result>
拒接来电
方法
reject(callId: string)
方法参数 callId:通话的唯一 ID。
返回值类型 boolean
接听来电
方法
answer(callId: string, option?: CallOptions)
方法参数
  • callId:通话的唯一 ID。
  • option:可选。指定 userMedia 约束。
返回值
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 的静态属性包括 nameavatarcompany
  • 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:注册状态未改变