通话功能 (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 | 是否有录音权限:
|
incomingList | session[] | 来电列表。 |
isMaxCall | boolean | 是否已达最大通话数量。 |
Methods
- Methods overview
-
- 监听事件
-
方法 on(eventName:string,listener: (...args: any[]) => void)
方法参数 eventName
:事件名称。listener
:回调函数。
返回值 空。 注: 关于可监听的事件,参见 事件。
- 开始注册 SIP UA
- SIP UA 注册成功后即可呼出和接听电话。注: 调用此方法之前,确保你已监听需要监听的事件,否则可能会错失某些事件的通知。
- 重新注册 SIP UA
- 该方法会在 phone 实例内部调用。外部程序无需调用此方法,以免出现异常。
- 发起呼叫
-
方法 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 属性)
- 该方法将以数组的形式返回。
- 设置当前通话 (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。
事件
事件名称 | 事件说明 | 报告参数 |
---|---|---|
connected | SIP 服务连接成功 | 空 |
disconnected | SIP 服务断开连接 | 空 |
registered | SIP UA 注册成功 | 空 |
registrationFailed | SIP UA 注册失败 |
|
newRTCSession | 创建新的通话实例 (Session) |
|
incoming | 来电 |
|
startSession | 添加通话实例 (Session) 至存储通话的 Map (sessions) 中 |
|
recordPermissionsChange | 录音权限发生改变 |
|
deleteSession | 删除通话实例 (Session) |
|
isRegisteredChange | SIP UA 注册状态是否发生改变 |
|