JRTCSDK-iOS v2401.0
视频客服 API 文档
载入中...
搜索中...
未找到
构造函数 | 类方法 | 属性 | 所有成员列表
JRTCAgent类 参考

座席管理 更多...

#import <JRTCAgent.h>

构造函数

(NSArray< JRTCVideoSize * > *_Nullable) - getSupportVideoSizes
 
(CallType- getCallType
 
(bool) - isOnewayVideo
 
(bool) - setHoldState:
 
(bool) - getHoldState
 
(bool) - queryAllGroups
 
(int) - queryAvailableAgentList:
 
(bool) - checkin:busy:checkinParam:
 
(bool) - checkIn:role:
 
(bool) - checkIn:
 
(bool) - checkIn:role:busy:
 
(bool) - checkout
 
(bool) - joinCall:partRole:
 
(bool) - recall:callParam:
 
(bool) - answer
 
(bool) - term
 
(int) - applyStatePause:
 
(int) - applyStatePause:subState:
 
(int) - transferCall:to:
 
(void) - turnCallType:
 
(void) - setUseExternalScreenCaptureControl:
 
(bool) - inviteThirdGuest:extraInfo:
 
(bool) - inviteThirdAgent:
 
(int) - switchPartRole:
 
(int) - kickParticipant:
 
(bool) - requestSign
 
(bool) - requestSign:extraInfo:
 
(void) - requestOnewayVideo:
 
(int) - responseUrgent:callerNumber:agree:
 
(bool) - sendMessage:content:toUserId:
 
(bool) - sendNotifyMessage:toUserId:
 
(bool) - enableUploadAudioStream:
 
(bool) - enableUploadVideoStream:
 
(bool) - sendAudioEmptyPack:
 
(bool) - sendVideoEmptyPack:
 
(bool) - enableScreenShare:appGroupId:preferredExtension:
 
(bool) - suspendScreenShare:tip:
 
(bool) - isSuspendScreenShare
 
(bool) - setSubScreenShare:
 
(bool) - isSubScreenShare
 
(bool) - setRatio:
 
(bool) - requestVideo:videoSize:
 
(bool) - unRequestVideo:
 
(bool) - requestScreenVideo:
 
(bool) - unRequestScreenVideo
 
(bool) - controlRecord:watermarkText:
 
(bool) - controlRecord:recordParam:
 
(bool) - enableLocalRecord:recordParam:
 
(bool) - updateLocalRecordLayout:
 
(bool) - isLocalRecording
 
(bool) - enableRemoteRecord:recordParam:
 
(RecordState- getRemoteRecordState
 
(bool) - updateRemoteRecordLayout:
 
(bool) - updateRemoteRecordWatermark:
 
(bool) - setVideoDot:info:
 
(bool) - enableMicAgc:
 

类方法

(JRTCAgent *) + create:mediaDevice:callback:
 
(void) + destroy
 

属性

CallState callState
 
bool isMainAgent
 
JRTCRoomParticipantmainGuestParticipant
 
NSArray< JRTCRoomParticipant * > * guestParticipants
 
JRTCRoomParticipantselfParticipant
 
NSArray< JRTCRoomParticipant * > * participants
 
NSString * statistics
 
NSString * jsonStats
 
bool pause
 
AgentOperatorState operatorState
 
NSString * shareStreamId
 
NSString * shareUserId
 
JRTCVideoSizerequestSize
 
NSString * serialNumber
 
AgentTermState termState
 
bool isAutoRecord
 
- 属性 继承自 JRTCModuleBase
NSString * callId
 
NSString * serialId
 

详细描述

座席管理

函数文档

◆ answer

- (bool) answer

接听通话

主座席、第三方座席或是被转接的座席,都调用此接口接听通话

返回
接口调用结果
  • true: 接口调用成功,会收到 onCallStateChanged 回调
  • false: 接口调用异常

◆ applyStatePause:

- (int) applyStatePause: (bool)  pause

示忙/示闲

示忙状态下不会收到呼叫来电,示闲状态下正常呼叫进线
通话过程中调用该接口不会影响当前通话,从下个通话开始状态生效
示忙/示闲的结果通过 onApplyResult 回调上报

参数
pause示忙或是示闲
  • true: 示忙
  • false: 示闲
返回
接口调用结果
  • > 0: 操作ID,对应 onApplyResult 回调的 operationId 参数
  • -1:接口调用异常

◆ applyStatePause:subState:

- (int) applyStatePause: (bool)  pause
subState: (int)  subState 

示忙/示闲

示忙状态下不会收到呼叫来电,示闲状态下正常呼叫进线
通话过程中调用该接口不会影响当前通话,从下个通话开始状态生效
示忙/示闲的结果通过 onApplyResult 回调上报

参数
pause示忙或是示闲
  • true: 示忙
  • false: 示闲
subState子状态,报表数据统计需要,取值[0, 9]
  • 0: 默认子状态
  • 1~9: 自定义子状态
返回
接口调用结果
  • > 0: 操作ID,对应 onApplyResult 回调的 operationId 参数
  • -1: 接口调用异常

◆ checkIn:

- (bool) checkIn: (AgentRoleType role

签入

签入到排队机,签入后默认示闲状态
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态
该方法座席用户ID默认为 userId ,与业务管理平台上配置的座席staffId对应

参数
role座席角色类型,目前该参数已有服务端控制,不再通过终端设置,可忽略
返回
接口调用结果
  • true: 接口调用成功,签入结果会触发 onCheckIn 回调上报
  • false: 接口调用异常

◆ checkin:busy:checkinParam:

- (bool) checkin: (NSString *)  userId
busy: (bool)  busy
checkinParam: (JRTCAgentCheckinParam *__nullable)  checkinParam 

签入

签入到排队机,签入后示忙/示闲状态由 busy 参数决定
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态

参数
userId座席用户ID,需与业务管理平台上配置的座席staffId对应,如果传空,则默认用当前登录用户ID签入
busy签入后示忙/示闲状态
checkinParam签入其他参数
  • true: 示忙
  • false: 示闲
返回
接口调用结果
  • true: 接口调用成功,签入结果会触发 onCheckin 回调上报
  • false: 接口调用异常

◆ checkIn:role:

- (bool) checkIn: (NSString *)  userId
role: (AgentRoleType role 

签入

签入到排队机,签入后默认示闲状态
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态

参数
userId座席用户ID,需与业务管理平台上配置的座席staffId对应
role座席角色类型,目前该参数已有服务端控制,不再通过终端设置,可忽略
返回
接口调用结果
  • true: 接口调用成功,签入结果会触发 onCheckIn 回调上报
  • false: 接口调用异常

◆ checkIn:role:busy:

- (bool) checkIn: (NSString *)  userId
role: (AgentRoleType role
busy: (bool)  busy 

签入

签入到排队机,签入后示忙/示闲状态由 busy 参数决定
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态

参数
userId座席用户ID,需与业务管理平台上配置的座席staffId对应
role座席角色类型,目前该参数已有服务端控制,不再通过终端设置,可忽略
busy签入后示忙/示闲状态
  • true: 示忙
  • false: 示闲
返回
接口调用结果
  • true: 接口调用成功,签入结果会触发 onCheckIn 回调上报
  • false: 接口调用异常

◆ checkout

- (bool) checkout

签出

签出后将不会收到排队机的呼叫分配
签出排队机不影响 JRTCClient 的登录状态
调用 operatorState 可获取当前签入状态

返回
接口调用结果
  • true: 接口调用成功,签出结果通过 onCheckout 回调上报
  • false: 接口调用异常

◆ controlRecord:recordParam:

- (bool) controlRecord: (AgentRecordAction action
recordParam: (JRTCRecordControlParam *)  recordParam 

开启/关闭远程录制

仅在 isAutoRecord == false 时调用接口有效,即访客发起呼叫时,呼叫参数 JRTCCallCenterCallParam#autoRecord 需要为 false 。
由服务器自动开启远程录制,即 isAutoRecord == true 时,水印内容由业务管理平台配置。
调用接口手动开启远程录制时,水印内容由参数 recordParam.watermarkTextDic 决定。

参数
action打开或停止录制
recordParam录制参数对象
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ controlRecord:watermarkText:

- (bool) controlRecord: (AgentRecordAction action
watermarkText: (NSString *)  watermarkText 

开启/关闭远程录制

仅在 isAutoRecord == false 时调用接口有效,即访客发起呼叫时,呼叫参数 JRTCCallCenterCallParam.autoRecord 需要为 false 。
由服务器自动开启远程录制,即 isAutoRecord == true 时,水印内容由业务管理平台配置。
调用接口手动开启远程录制时,水印内容由参数 watermarkText 决定。

参数
action打开或停止录制
  • AgentRecordActionStart: 打开录制
  • AgentRecordActionStop: 停止录制
watermarkText水印内容
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ create:mediaDevice:callback:

+ (JRTCAgent *) create: (JRTCClient *)  client
mediaDevice: (JRTCMediaDevice *)  mediaDevice
callback: (id< JRTCAgentCallback >)  callback 

创建 JRTCAgent 对象,为单例,重复调用返回同一对象

注解
  • JRTCAgent 的所有接口函数,如无特殊说明,都建议再主线程调用
  • 请确保在调用其他 API 前先调用该方法创建并初始化 JRTCClient 对象,JRTCMediaDevice 对象
  • 调用此方法前确保 JRTCClient 已完成初始化,即 state 方法获取的状态值不等于 JRTCClientStateNotInit
  • 调用此方法创建 JRTCAgent 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JRTCAgent 对象
参数
clientJRTCClient 对象
mediaDeviceJRTCMediaDevice 对象
callbackJRTCAgentCallback 代理对象,用于实现 JRTCAgentCallback 事件
返回
JRTCAgent 对象
异常
初次创建时 JRTCClient、JRTCMediaDevice、JRTCAgentCallback 任意一个参数传空就会返回 nil

◆ destroy

+ (void) destroy

销毁 JRTCAgent 对象

注解
该方法为同步调用,需要等待 JRTCAgent 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JRTCAgent 的其它方法和回调。
我们 不建议 在 JRTCSDK 的回调中调用此方法销毁 JRTCAgent 对象,否则可能出现崩溃现象。
如需在销毁后再次创建 JRTCAgent 实例,需要等待 destroy 方法执行结束后再创建实例。

◆ enableLocalRecord:recordParam:

- (bool) enableLocalRecord: (bool)  enable
recordParam: (JRTCRecordLocalParam *)  recordParam 

开启/关闭本地录制

注解
确保调用接口前本地录制文件所在目录已经存在,否则会录制失败
参数
enable开启或关闭本地录制
  • true: 开启本地录制
  • false: 关闭本地录制
recordParam本地录制参数配置,当 enable == true 时,JRTCRecordLocalParam.filePath 必须设置,其余参数不设置则使用默认配置;当 enable == false 时,recordParam 可传 nil
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ enableMicAgc:

- (bool) enableMicAgc: (bool)  enable

开启或关闭本地麦克风的增益(软件增益),默认开启

注解
需要在建立通话后调用
参数
enable是否开启麦克风增益
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ enableRemoteRecord:recordParam:

- (bool) enableRemoteRecord: (bool)  enable
recordParam: (JRTCRecordRemoteParam *)  recordParam 

开启/关闭远程录制

当呼叫参数 autoRecord == false 时,可通过此接口开启服务端录制。
可通过 getRemoteRecordState 接口获取当前服务器录制状态。

参数
enable开启或关闭远程录制
  • true: 开启视频录制
  • false: 关闭视频录制
recordParam录制参数,当 enable == false 时,可传 nil;当 enable == true 且按照默认配置进行录制可传 nil
返回
接口调用结果

◆ enableScreenShare:appGroupId:preferredExtension:

- (bool) enableScreenShare: (bool)  enable
appGroupId: (NSString *__nullable)  appGroupId
preferredExtension: (NSString *__nullable)  preferredExtension 

开启/关闭屏幕共享

注解
如果 setUseExternalScreenCaptureControl 为 true, 则该接口只负责信令通知,请确保开启屏幕共享前,已经开启了屏幕采集,否则远端用户收到屏幕共享画面为黑屏 iOS 12.0 及以下(包含 iOS13.0)只支持应用内共享,iOS 12.0 及以上(不包含 iOS 13.0)支持应用外共享,需要集成屏幕采集插件 调用此方法后成功,界面上会拉起屏幕共享插件,需手动点击"开始直播"按钮进行屏幕共享,开启成功后,通话中的所有成员会收到 onCallPropertyChangedonCallPropertyChanged 回调。
参数
enable开启或关闭屏幕共享
  • true: 开启屏幕共享
  • false: 关闭屏幕共享
appGroupId屏幕采集插件和应用所处于的同一个 groupId,如果是关闭屏幕共享可以传空,iOS 12.0 及以上(不包含 iOS 13.0 )需要传,iOS 12.0 以下传空
preferredExtension要打开的屏幕共享插件的 ID,如果是关闭屏幕共享可以传空,iOS 12.0 及以上(不包含 iOS 13.0 )需要传,iOS 12.0 以下传空
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ enableUploadAudioStream:

- (bool) enableUploadAudioStream: (bool)  enable

开启/关闭发送本地音频流

通话中调用该方法可开启或关闭发送本地音频流。开启后,通话中的成员将听见本端声音;关闭后,成员将听不见本端声音
通话中调用此方法成功后,服务器会更新状态并同步给通话中所有成员,即所有成员会收到 onMemberUpdateonMemberUpdate 回调,具体可关注 audioaudio
通话中调用此方法不影响接收其他成员的音频流

参数
enable开启/关闭发送本地音频流
  • true: 开启,即发送本地音频流
  • false: 关闭,即不发送本地音频流
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ enableUploadVideoStream:

- (bool) enableUploadVideoStream: (bool)  enable

开启/关闭发送本地视频流

通话中调用该方法可开启或关闭发送本地视频流。开启后,通话中的成员将看见本端画面;关闭后,成员将看不见本端画面
通话中调用此方法成功后,服务器会更新状态并同步给通话中所有成员,即所有成员会收到 onMemberUpdateonMemberUpdate 回调,具体可关注 videovideo
通话中调用此方法不影响接收其他成员的视频流

参数
enable开启/关闭发送本地视频流
  • true: 开启,即发送本地视频流
  • false: 关闭,即不发送本地视频流
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ getCallType

- (CallType) getCallType

获取当前通话类型

可通过 turnCallType 接口修改当前通话类型。

返回
当前通话类型

◆ getHoldState

- (bool) getHoldState

获取当前通话保持状态

座席可调用 setHoldState 接口修改当前通话的保持状态。

返回
当前通话保持状态
  • true: 当前通话状态为保持
  • false: 当前通话状态为取回

◆ getRemoteRecordState

- (RecordState) getRemoteRecordState

获取远程视频录制状态,参见:

  • RecordStateNone : 无法进行视频录制。用户不在房间中或者加入房间时没有设置视频录制参数
  • RecordStateReady : 可以开启视频录制。用户在加入房间时设置了录制参数,并且没有在录制视频
  • RecordStateRunning : 视频录制中。用户在加入房间时设置了录制参数,并且正在视频录制中

◆ getSupportVideoSizes

- (NSArray< JRTCVideoSize * > *_Nullable) getSupportVideoSizes

获取该通话支持的视频分辨率列表

返回
通话视频分辨率列表

◆ inviteThirdAgent:

- (bool) inviteThirdAgent: (NSString *)  userId

邀请第三方座席加入

被邀请的第三方座席会收到 onCallStateChanged 来电邀请回调
第三方座席接听通话后,已在通话中的成员会收到 onMemberJoinonMemberJoin 成员加入回调

参数
userId要邀请的座席用户ID
返回
接口调用结果

◆ inviteThirdGuest:extraInfo:

- (bool) inviteThirdGuest: (NSString *)  userId
extraInfo: (NSString *__nullable)  extraInfo 

邀请第三方访客加入

第三方访客接听通话后,已在通话中的成员会收到 onMemberJoinonMemberJoin 成员加入回调

参数
userId要邀请的第三方访客用户ID
extraInfo邀请携带的额外信息
返回
接口调用结果

◆ isLocalRecording

- (bool) isLocalRecording

是否正在本地录制

  • true: 正在本地录制中
  • false: 未进行本地录制

◆ isOnewayVideo

- (bool) isOnewayVideo

获取单向视频状态

座席可调用 requestOnewayVideo 接口修改当前通话的单向视频状态。

返回
单向视频状态
  • true: 处于单向视频
  • false: 不处于单向视频

◆ isSubScreenShare

- (bool) isSubScreenShare

获取是否订阅屏幕共享属性

返回
  • true: 订阅屏幕共享
  • false: 不订阅屏幕共享

◆ isSuspendScreenShare

- (bool) isSuspendScreenShare

是否屏幕共享暂停

返回
  • true: 暂停屏幕共享
  • false: 未暂停屏幕共享

◆ joinCall:partRole:

- (bool) joinCall: (NSString *)  serialNumber
partRole: (PartRoleType partRole 

加入通话

注解
需要先签入并且示闲,目前只支持以观察者座席和次座席角色加入
参数
serialNumber业务唯一标识
partRole加入通话成员角色
  • PartRoleTypeAgent : 次座席
  • PartRoleViewerAgent : 观察者(次座席),无感入会
返回
接口调用结果
  • true: 接口调用成功,通话状态会通过 onCallStateChanged 回调上报
  • false: 接口调用异常

◆ kickParticipant:

- (int) kickParticipant: (NSString *)  userId

踢出通话成员

注解
只有主座席角色可以使用该功能
参数
userId成员用户ID
返回
接口调用结果

◆ queryAllGroups

- (bool) queryAllGroups

获取业务号列表

返回
接口调用结果
  • true: 接口调用成功,返回结果通过 onGetAllGroups 回调上报
  • false: 接口调用异常

◆ queryAvailableAgentList:

- (int) queryAvailableAgentList: (NSString *)  businessNumber

查询指定业务号号的空闲座席

查询结果通过 onQueryAvailableAgentList 回调上报

参数
businessNumber业务号,例如 10087
返回
操作ID,与 onQueryAvailableAgentList 的 operationId 参数对应

◆ recall:callParam:

- (bool) recall: (NSString *)  userId
callParam: (JRTCCallCenterCallParam *)  param 

座席回呼

注解
需要先签入并且示闲
参数
userId访客用户ID
callParam呼叫参数设置,此参数可传 nil 则使用默认配置,详见 JRTCallCenterCallParam
返回
接口调用结果
  • true: 接口调用成功,通话状态会通过 onCallStateChanged 回调上报
  • false: 接口调用异常

◆ requestOnewayVideo:

- (void) requestOnewayVideo: (bool)  turnOn

请求单向视频

座席调用此接口后,会向全体访客发送单向视频请求,访客会收到 onOnewayVideoChanged 回调
应用需要自行实现单向视频功能,例如访客用图片遮挡该座席画面,SDK不会对画面进行单向处理

参数
turnOn打开或关闭单向视频
  • true: 打开单向视频
  • false: 关闭单向录制

◆ requestScreenVideo:

- (bool) requestScreenVideo: (JRTCVideoSize *__nonnull)  videoSize

订阅通话中屏幕共享的视频流

参数
videoSize视频请求的尺寸,详见 JRTCVideoSize
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ requestSign

- (bool) requestSign

请求访客签名

请求访客签名流程:

  1. 座席调用此接口向 主访客 发送签名请求
  2. 座席调用成功后,访客会收到 onSignRequest 回调
  3. 访客进行签名,并将签名图片上传至业务管理平台
  4. 访客响应座席签名结果
    返回
    接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ requestSign:extraInfo:

- (bool) requestSign: (NSString *)  userId
extraInfo: (nullable NSString *)  extraInfo 

请求访客签名

请求访客签名流程:

  1. 座席调用此接口向指定访客发送签名请求
  2. 座席调用成功后,访客会收到 onSignRequest 回调
  3. 访客进行签名,并将签名图片上传至业务管理平台(需要应用层自行实现)
  4. 访客响应座席签名结果
参数
userId需要请求签名的访客用户ID
extraInfo随路额外消息
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ requestVideo:videoSize:

- (bool) requestVideo: (JRTCRoomParticipant *__nonnull)  participant
videoSize: (JRTCVideoSize *__nonnull)  videoSize 

订阅通话中其他成员的视频流

参数
participant成员对象
videoSize视频请求的尺寸,详见 JRTCVideoSize
返回
接口调用结果

◆ responseUrgent:callerNumber:agree:

- (int) responseUrgent: (NSString *)  serialNumber
callerNumber: (NSString *)  callerNumber
agree: (BOOL)  agree 

处理加急请求

请求加急流程:

  1. 访客在排队过程中调用 requestUrgent 接口发起加急请求
  2. 管理员权限的座席(业务管理平台配置)收到 onUrgentRequest 回调
  3. 座席收到回调后调用此接口对加急请求进行处理
  4. 座席处理后,访客会收到 onUrgentResultResponse 加急请求处理结果回调,如果座席同意加急请求,则将会插队到队列最前
    参数
    serialNumber服务唯一标识,通过 onUrgentRequest 回调获得
    callerNumber发起加急请求的用户ID,通过 onUrgentRequest 回调获得
    agree同意或拒绝加急请求
  • true: 同意加急请求
  • false: 拒绝加急请求
    返回
    操作ID,对应 onResponseUrgentResult 回调的 cookie 参数

◆ sendAudioEmptyPack:

- (bool) sendAudioEmptyPack: (bool)  empty

发送音频空包

该接口不会导致成员的 audio 属性变化,发送音频空包不代表停止发送音频流。一般用于座席保持通话后使用。

参数
empty音频发送包是否为空包
  • true:发送音频空包
  • false:发送正常音频包
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ sendMessage:content:toUserId:

- (bool) sendMessage: (NSString *)  contentType
content: (NSString *)  content
toUserId: (nullable NSString *)  toUserId 

发送消息,消息内容不能大于4K

指定成员会收到 onMessageReceivedonMessageReceived 回调

参数
contentType消息内容类型
content消息内容
userId指定成员的用户ID,传 nil 等同于调用 sendMessage 接口,即给通话中全部成员发送消息
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ sendNotifyMessage:toUserId:

- (bool) sendNotifyMessage: (JRTCNotifyMessage *)  notifyMessage
toUserId: (NSString *__nullable)  toUserId 

发送事件通知消息,消息内容不能大于4K

通话中的其他成员会收到 onNotifyMessageReceivedonNotifyMessageReceived 回调

参数
notifyMessage事件通知实体对象
userId指定成员的用户ID,传 nil 即给通话中全部成员发送通知消息
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ sendVideoEmptyPack:

- (bool) sendVideoEmptyPack: (bool)  empty

发送视频空包

该接口不会导致成员的 video 属性变化,发送视频空包不代表停止发送视频流。一般用于座席保持通话后使用。

参数
empty视频发送包是否为空包
  • true:发送视频空包
  • false:发送正常视频包
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ setHoldState:

- (bool) setHoldState: (bool)  hold

保持/取回

可以通过 getHoldState 获取当前通话保持状态
保持通话后双方互相停止音视频流的发送与接收

参数
hold保持或取回
  • true: 设置为保持状态
  • false: 设置为取回状态
返回
接口调用结果

◆ setRatio:

- (bool) setRatio: (float)  ratio

设置本端视频宽高比

将自己的视频采集根据宽高比裁剪后进行发送,通话中其他成员收到的画面将是裁剪后的比例。
该方法不影响其他成员的画面在本端的显示比例,也不影响其他成员相互之间的画面显示比例。
必须 开始通话后 设置才能生效,即收到 onCallStateChanged 回调且 type == AgentCallStateChangeTypeTalking 时设置才生效。

参数
ratio视频宽高比
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ setSubScreenShare:

- (bool) setSubScreenShare: (bool)  enable

设置订阅屏幕共享属性

返回
  • true: 设置成功
  • false: 设置失败

◆ setUseExternalScreenCaptureControl:

- (void) setUseExternalScreenCaptureControl: (bool)  useExternalControl

设置是否由应用层自行控制屏幕采集逻辑,默认 false,由 SDK 内部根据通话业务开始/结束自动控制屏幕采集开启/关闭逻辑,比如通话建立时开启屏幕共享自动开启屏幕采集,关闭屏幕共享或者通话结束时自动关闭屏幕采集。

参数
useExternalControl是否由应用层自行控制屏幕采集逻辑
  • true 由应用层自行调用 enableScreenCapture 接口控制屏幕采集开启/关闭逻辑。
  • false 由 SDK 内部根据通话业务开始/结束自动控制屏幕采集开启/关闭逻辑。

◆ setVideoDot:info:

- (bool) setVideoDot: (NSString *__nonnull)  timespan
info: (NSString *__nonnull)  info 

视频打点

参数
timespan时间戳
info打点信息
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ suspendScreenShare:tip:

- (bool) suspendScreenShare: (bool)  suspend
tip: (NSString *_Nonnull)  tip 

暂停/继续屏幕共享

注解
只有自己发起的屏幕共享可以使用该接口暂停,多次调用会覆盖
参数
suspendtrue 暂停屏幕共享, false 继续屏幕共享
tip暂停屏幕共享后提示文字
返回
接口调用结果

◆ switchPartRole:

- (int) switchPartRole: (PartRoleType partRole

切换自己在通话中角色

注解
需要先进入通话,目前只支持从观察者座席角色切换到主座席角色
参数
partRole通话成员角色,目前只支持
返回
接口调用结果

◆ term

- (bool) term

结束通话

来电过程中调用此接口拒绝接听,访客分配到其他座席继续呼叫等待不会挂断。
主座席调用此接口会结束通话,通话中所有成员都会离开,此通通话销毁,所有成员会收到 onCallStateChangedonCallStateChanged 通话结束回调。
第三方座席调用此接口仅自身离开通话,通话中其他成员会收到该成员离开的回调 onMemberLeaveonMemberLeave 回调,通话继续进行。

返回
接口调用结果
  • true: 接口调用成功,会收到 onCallStateChanged 回调
  • false: 接口调用异常

◆ transferCall:to:

- (int) transferCall: (TransferType type
to: (NSString *)  _id 

通话转接

支持转接到具体座席和转接到某个业务组

注解
直呼场景接通后,不支持通话转接 转接结果通过 onTransferCallResult 回调上报
座席调用转接接口成功时,访客会收到 onCallForwarding 回调
参数
type转接类型,转接到具体座席或是转接到业务组
_id
返回
接口调用结果

◆ turnCallType:

- (void) turnCallType: (CallType callType

音视频通话切换

可以通过 getCallType 接口获取当前的通话类型
通话中所有成员都将收到onCallTypeChangedonCallTypeChanged 回调

参数
callType通话类型
  • CallTypeAudio: 语音通话
  • CallTypeVideo: 视频通话

◆ unRequestScreenVideo

- (bool) unRequestScreenVideo

取消订阅通话中屏幕共享的视频流

返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ unRequestVideo:

- (bool) unRequestVideo: (JRTCRoomParticipant *__nonnull)  participant

取消订阅通话中其他成员的视频流

参数
participant成员对象
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ updateLocalRecordLayout:

- (bool) updateLocalRecordLayout: (NSArray< JRTCRecordLocalLayout * > *)  layoutList

更新本地录制自定义布局

参数
layoutList需要更新的布局列表
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ updateRemoteRecordLayout:

- (bool) updateRemoteRecordLayout: (NSArray< JRTCRecordRemoteLayout * > *)  layoutList

更新远程录制自定义布局

参数
layoutList需要更新的布局列表
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

◆ updateRemoteRecordWatermark:

- (bool) updateRemoteRecordWatermark: (NSDictionary *)  watermarkTextDic

更改远程录制水印信息

参数
watermarkTextDic水印信息
返回
接口调用结果
  • true: 接口调用成功
  • false: 接口调用异常

属性说明

◆ callState

- (CallState) callState
readnonatomicassign

当前通话状态

◆ guestParticipants

- (NSArray<JRTCRoomParticipant *>*) guestParticipants
readnonatomicstrong

访客成员列表

只有在通话中且通话中才能获得含有访客成员对象的数组,否则为空数组
当通话中不存在第三方访客时,获得一个仅含有主访客成员对象的数组
当通话中存在第三方访客时,获得一个含有主访客和第三方访客成员对象的数组

◆ isAutoRecord

- (bool) isAutoRecord
readnonatomicassign

是否由服务器自动开启录制

由访客 autoRecord 属性决定,在通话状态为 CallStateTalking 时可以获取
如果当前为自动录制模式,即 isAutoRecord == true,则座席的 controlRecord 远程录制接口不生效

◆ isMainAgent

- (bool) isMainAgent
readnonatomicassign

是否主座席

返回
  • true 主座席
  • false 其他三方座席

◆ jsonStats

- (NSString*) jsonStats
readnonatomiccopy

获取天赛实时统计信息

以Json字符串形式返回,包含以下信息:

*         {
*          "localActor": "[username:2333@100645.cloud.justalk.com]", // actorID
*          "sendBWE": "1440",      // 发送带宽估计
*          "recvBWE": "929",       // 接收带宽估计
*          "sendBr": "16",         // 发送码率
*          "recvBr": "772",        // 接收码率
*          "sendJitter": "1",      // 发送jitter
*          "recvJitter": "0",      // 接收jitter
*          "sendLossRate": "0",    // 发送丢包率
*          "recvLossRate": "0",    // 接收丢包率
*          "encodeTime": "0",      // 编码时长
*          "rtt":"5",              // 往返延时
*          "audioSendBr": "19",    // 音频发送码率
*          "videoSendBr": "0",     // 视频发送码率
*          "audioLevel": "58",     // 音量
*          "event":""
*         }

◆ mainGuestParticipant

- (JRTCRoomParticipant*) mainGuestParticipant
readnonatomicstrong

获取主访客成员

只有在通话中才能获得访客成员对象,否则为 nil

◆ operatorState

- (AgentOperatorState) operatorState
readnonatomicassign

座席签入状态

◆ participants

- (NSArray<JRTCRoomParticipant *>*) participants
readnonatomicstrong

所有成员(包含自己、访客和其他座席)

◆ pause

- (bool) pause
readnonatomicassign

示忙/示闲状态

true 表示示忙状态,false 表示示闲状态
调用 checkIncheckIn 接口签入,状态为示闲
调用 checkIn 接口签入,状态与 busy 参数一致
调用 applyStatePause 接口主动发起示忙示闲,状态与 pause 参数一致

◆ requestSize

- (JRTCVideoSize*) requestSize
readwritenonatomicstrong

视频请求尺寸

影响自己看其他成员的视频分辨率

◆ selfParticipant

- (JRTCRoomParticipant*) selfParticipant
readnonatomicstrong

获取自己对象

返回
自己对象

◆ serialNumber

- (NSString*) serialNumber
readnonatomiccopy

服务唯一标识,上层可使用该参数通过业务管理平台第三方接口查询到话务信息,如录制视频文件的URL

◆ shareStreamId

- (NSString*) shareStreamId
readnonatomiccopy

屏幕共享的视频流ID,无屏幕共享时为 nil

调用 startVideo 接口渲染通话中其他成员的屏幕共享画面时使用。

◆ shareUserId

- (NSString*) shareUserId
readnonatomiccopy

发起屏幕共享者的用户ID,无屏幕共享时为 nil

可用来判断当前通话中是否有成员发起屏幕共享。

◆ statistics

- (NSString*) statistics
readnonatomiccopy

获取统计信息

以字符串形式返回,其中包含 "Config", "Network","Transport" 和 "Participants" 4个节点,统计信息具体内容如下:

*      {
*         "Config":                                        // 音视频设置信息
*              {
*                  "Audio Config:                          // 音频设置
*                  {
*                      "SRTP": off,                        // 是否对音频RTP数据加密,以及加密会显示使用的加密协议,加密协议两端一致才会音频互通正常
*                      "Codec": opus,                      // 本端设置的音频编码
*                      "Payload": 116,                     // 音频payload的大小
*                      "Bitrate": 16000,                   // 音频码率
*                      "Pkt Len": 60,                      // 音频包长
*                      "Nack": off,                        // 丢包是否允许数据包重传
*                      "RTX": off,                         // 是否允许RTX技术
*                      "FEC/RED": off,                     // 是否开启FEC
*                      "AEC": on,                          // 是否开启回声消除
*                      "Mode": OS,                         // AEC模式
*                      "HowlSupp": Auto,                   // AEC HowlSupp模式
*                      "Sts": Auto,                        // AEC Sts模式
*                      "AGC": on,                          // 是否开启发送端自动增益
*                      "Mode": Fixed,                      // 发送端AGC Mode
*                      "Target": 3,                        // 发送端AGC Target
*                      "Gain": 9,                          // 接收端AGC Gain
*                      "Rx AGC": off,                      // 是否开启接收端自动增益
*                      "Mode": Fixed,                      // 接收端AGC Mode
*                      "Target": 3,                        // 接收端AGC Target
*                      "Gain": 9,                          // 接收端AGC Gain
*                      "VAD": off,                         // 是否开启VAD
*                      "Mode": Mid,                        // VAD Mode
*                      "ANR": off,                         // 是否开启发送端噪音抑制
*                      "Mode": High,                       // ANR mode
*                      "Noise": N/A,                       // 噪音音量
*                      "SNR": N/A,                         // 信噪比
*                      "Rx ANR": off,                      // 是否开启接收端噪音抑制
*                      "Mode": Low,                        // 接收端ANR mode
*                      "ARS": off,                         // 是否开启音频码率控制
*                      "BR Min": N/A,                      // ARS码率最小值
*                      "BR Max": N/A                       // ARS码率最大值
*                  },
*                  "Video Config":                         // 视频设置
*                  {
*                      "SRTP": off,                        // 是否对音频RTP数据加密,以及加密会显示使用的加密协议,加密协议两端一致才会音频互通正常
*                      "Codec": H264-SVC,                  // 双方通话采用的编解码类型
*                      "Payload": 125,                     // 视频Payload的大小
*                      "Bitrate": 2250,                    // 视频码率,单位kbps
*                      "Framerate": 24,                    // 视频帧率,单位fps
*                      "Resolution": 1280x720,             // 视频分辨率
*                      "FEC": on|124|123,                  // FEC是否打开和payload的类型号
*                      "FIR": off,                         // 是否允许重发关键帧
*                      "Key Interval": 0,                  // 允许的最小关键帧间隔
*                      "Repeat": 0,                        // 关键帧丢失是否允许重发
*                      "NACK": off,                        // 丢包是否允许数据包重传
*                      "RTX": off,                         // 是否允许RTX技术,RTX的payload类型
*                      "TMMBR": off,                       // 是否允许带宽估计
*                      "RPSI": off,                        // 是否允许RPSI技术
*                      "Small NALU": on,                   // 是否允许NALU技术
*                      "ARS": off,                         // 是否开启ARS自动码率检测
*                      "BR Min": 10,                       // ARS发送码率下限
*                      "BR Max": 2000,                     // ARS发送码率上限
*                      "FR Min": 1,                        // ARS发送帧速率下限
*                      "FR Max": 30,                       // ARS发送帧速率上限
*                      "Res. Ctrl": off,                   // 是否允许分辨率控制
*                      "Res. Mode": 0,                     // 分辨率Mode
*                      "Fr Ctrl": on,                      // 是否允许帧速率控制
*                      "CPU Load Ctrl": off,               // 是否允许CPU控制
*                      "Target": 80,                       // CPU控制的最大使用率
*                      "Bw Efficient": off,                // 是否采用节省带宽模式
*                      "Error Conceal": off,               // 是否允许错误隐藏技术,在解码出错的时候采用
*                      "Enhance color": off,               // 是否采用颜色增强技术
*                      "Boost bright": off,                // 是否采用亮度增强技术
*                      "Boost contrast": off,              // 是否采用对比度增强技术
*                      "RTP Ext": CVO,                     // 使用的RTP扩展的类型
*                      "Render Name": N/A,                 // 渲染图像的名字
*                      "SVC": "320 180 250 640 360 600 1280 720 1400",     // 会议SVC配置
*                      "TemporalLayers": 4,                // 取值1、2、3、4,会议时间层设置
*                      "PreferMode":Clear                  // 偏好设置
*                  }
*          },
*          "Network":                                  // 网络统计信息
*          {
*              "Send Statistic:                        // 数据发送统计信息
*              {
*                  "Packets": 181|1305|0|0,            // 发送的数据包的个数。正常包个数 | 探测包个数 | RED包个数 | NACK包个数
*                  "RTT": 4,                           // 网络双向延时的时间,单位为毫秒
*                  "Jitter": 2,                        // 网络的扰动,表征数据包抖动的时间,单位毫秒
*                  "Lost": 2,                          // 丢失的数据包的个数
*                  "LostRate": 0,                      // 当前的丢包率,单位百分比
*                  "RelayLost": 0,                     // 服务器转发丢包率
*                  "RelayRtt": 0,                      // 服务器转发往返时延,单位为毫秒
*                  "BitRate/BWE": 16/1345,             // BitRate表示当前发送的数据包的码率,单位kbps;BWE表示当前发送带宽的估计值
*                  "AudioSend": 0|0,                   // 实际发送音频包次数|估计发送音频包次数
*                  "VideoSend": 0|0,                   // 实际发送视频包次数|估计发送视频包次数
*                  "ScreenSend": 0|0,                  // 实际发送屏幕共享包次数|估计发送屏幕共享包次数
*                  "MaxPredKbps": 100,                 // 发送最大需求码率
*                  "Server(102679111220103708)": [2211(1): BWE(1345|697) LOSS(0|0) OUT(A:37) IN(A:0;)] // 选用的第一个服务器
*              },
*              "Recv Statistic":                       // 数据接收统计信息
*              {
*                  "Packets": 1423|675|0|0,            // 收到的数据包的个数。正常包个数 | 探测包个数 | RED包个数 | NACK包个数
*                  "Jitter": 1,                        // 网络的扰动,表征数据包乱序的时间,单位毫秒
*                  "Lost": 0,                          // 丢失的数据包的个数
*                  "Lost Ratio": 0,                    // 当前的丢包率,单位百分比
*                  "BitRate/BWE":178/2291,             // BitRate表示当前接收的数据包的码率,单位kbps;BWE表示当前接收带宽的估计值
*                  "Server(102679111220103708)": [2211(3): BWE(1979|2150) LOSS(0|0) OUT(A:37;FPS:24,FEC:10,SUB:00f0=3456) IN(A:17;V:2273=2211[00f0]2273)] // 选用的第一个服务器
*              },
*          }
*          "Transport":                                // 运输通道
*          {
*              "Local": 2.1923737535:32414,            // 本地地址
*              "Remote": 2:11023,                      // 远端地址
*              "LastPaths": 2,2,                       // 最后使用通道
*              "Path": 2 [udp],                        // 通道名
*              "Step1": Delay/Loss(S/R): 4/0/0,        // 通道质量
*              "Cost": 7*(best: -1)                    // 通道分数
*          },
*          "Participants":
*          {
*          "2333":                                      // 成员为自己
*              {
*                  "Audio Sending Stats":              // 音频发送数据统计
*                  {
*                      "Packets": 143,                 // 发送的数据包的个数
*                      "BitRate": 18.5,                // 发送的数据包的码率,单位kbps
*                      "FecPrecent": 0                 // 音频Fec保护百分比,N/A表示未开启FEC保护
*                  },
*                  "Video Sending Stats":              // 视频发送数据统计
*                  {
*                      "Packets": 19502,               // 发送的数据包的个数
*                      "Capture Res": 640x360,         // 视频采集分辨率
*                      "Capture Fr": 30,               // 视频采集帧率
*                      "FPS/IDR": [0|0|24|0]/3,        // 当前视频发送帧速/已发送的视频关键帧数
*                      "Resolution": 1280x720[0|0|0],  // 当前发送图像最大尺寸。[]中为每种尺寸的帧率,取值范围为0到f(十六进制),0表示该层视频未被发送, 值越大表示该层视频帧率越高;
*                      "Bitrate/Setrate": 0/2250,      // Bitrate表示当前发送的数据包的码率,单位kbps; Setrate表示视频编码的目标码率,单位kbps。
*                      "QP": 20,                       // 发送当前图像的量化步长(0-51),越小图像画质越好。
*                      "EncodeTime": 10,               // 当前编码时间,可以体现终端编码时占用的CPU性能,越大表示CPU占有越高,单位毫秒
*                      "Codec": H264-SVC,              // 采用的编解码类型
*                      "FecPrecent": 20                // 视频Fec保护百分比,N/A表示未开启FEC保护
*                  },
*                  "Be Subscribed Stats":              // 被订阅统计信息
*                  {
*                      "Audio": true,                  // 音频是否被订阅
*                      "Video": [0|0|F|0]              // [S0|S1|S2|S3]表示4个空间层被订阅
*                  },
*                  "Publish Stats":                    // 当前音视频发布状态
*                  {
*                      "Audio": true,                  // 当前音频发布状态
*                      "Video": true                   // 当前视频发布状态
*                  }
*              },
*              "6666":                                 // 成员不是自己
*              {
*                  "Audio Receiving Stats":            // 音频接收统计信息
*                  {
*                      "Packets": 40243,               // 接收的数据包的个数
*                      "BitRate": 18.5,                // 当前接收的数据包的码率,单位kbps。
*                      "EpdRate/lr/dc": 0/0/0,         // expand rate/loss rate/discard rate。neteq buffer中的扩展比例/丢包比例/丢弃比例
*                  },
*                  "Video Receiving Stats":            // 视频接收统计信息
*                  {
*                      "Packets": 19502,               // 接收的数据包的个数
*                      "BitRate": 161,                 // 当前发送的数据包的码率,单位kbps
*                      "FPS/FIR": 24/0,                // 当前视频接收帧率/视频关键帧请求个数
*                      "Resolution": 1280x720,         // 当前接收分辨率
*                      "Render FR": 24,                // 当前渲染帧速率
*                      "Codec": H264-SVC,              // 采用的编解码类型
*                      "PvMos": 4.9,                   // 表示过去5s平均流畅度MOS分,每5s更新一次。体现视频画面的流畅程度。1到5分,1分最差,5分最好
*                      "SMOS": 5,                      // 表示当前清晰度MOS分。体现视频画面的清晰程度。1到5分,1分最差,5分最好。前5s是0,是正常现象,因为PvMos还没有值
*                  },
*                  "Subscribed Stats":                 // 订阅统计信息
*                  {
*                      "Channel Audio": true,          // 当前是否发布音频
*                      "Audio": true,                  // 当前音频订阅状态
*                      "Video": [0|0|F|0]              // [S0|S1|S2|S3]表示4个空间层被订阅
*                  }
*              }
*          }
*      }

◆ termState

- (AgentTermState) termState
readwritenonatomicassign

结束通话后的示闲/示忙状态,默认为示闲状态

结束通话后,默认为示闲状态,可由上层设置