# 实现视频通话
本文档为您展示 实现视频通话(访客侧)的相关步骤,帮助您在远程银行和视频客服的场景下实现智能排队、屏幕共享、全景录像、访客管理的相关能力。
当您成功获取 Juphoon Guest Plugin 之后,您可以快速集成视频通话服务,同时体验本产品的基本业务流程。
# 快速搭建 Plugin
注:我们所有的方法都建议在主线程调用,否则可能会出现异常无法正常使用,回调接口也都在主线程上报。
# 1. 登录
登录菊风账号,调用 login (opens new window) ,登录过程中进行初始化登录配置。
/**
* @brief 初始化并登录,登录结果通过 {@link JCCCommonCallback#onLogin:reason: onLogin} 回调通知
* @param param 初始化和登录的基本配置信息
* @return 接口调用结果
* - YES 表示调用成功
* - NO 表示调用异常
*/
- (BOOL)login:(JCCLoginParam *)param;
# 设置初始化参数
初始化参数详见 JCCLoginParam (opens new window)
/// 初始化相关参数
@interface JCCLoginParam : NSObject
/// appKey(必填)
@property (nonatomic, copy) NSString *appKey;
/// 服务器地址(必填)
@property (nonatomic, copy) NSString *server;
/// 应用名(选填)
@property (nonatomic, copy) NSString *appName;
/// 设置SDK信息存储目录,该目录下的log目录为日志目录(选填)
@property (nonatomic, copy) NSString *sdkInfoDir;
/// 用户名(必填)
@property (nonatomic, copy) NSString *userName;
/// 用户昵称(选填)
@property (nonatomic, copy) NSString *nickName;
/// 终端登录类型,支持多终端登录,默认所有终端相同会导致互踢(选填)
@property (nonatomic, copy) NSString *terminalType;
/// 设备id(选填)
@property (nonatomic, copy) NSString *deviceId;
/// token校验类型(选填)
@property (nonatomic, copy) NSString *tokenType;
/// token(选填)
@property (nonatomic, copy) NSString *token;
/// S3国密密钥(选填)
@property (nonatomic, copy) NSString *certificate;
/// 帐户分录, 如果支持国密S3则需要设置certificate,否则不设置(选填)
@property (nonatomic, copy) NSString *accountEntry;
/// 屏幕共享插件groupId
@property (nonatomic, copy) NSString *shareGroupId;
/// 屏幕共享插件bundle id
@property (nonatomic, copy) NSString *shareExtension;
/// 加速云KEY
@property (nonatomic, copy) NSString *accelerateKey;
/// 加速云KEY密钥
@property (nonatomic, copy) NSString *accelerateKeySecret;
/// 是否控制台日志输出, 默认true
@property (nonatomic, assign) bool logConsole;
/// 是否本地文件日志输出, 默认true
@property (nonatomic, assign) bool logLocalFile;
/// 是否开启 RPC 抗信令丢包控制(70%的上下行信令丢包), 默认false
@property (nonatomic, assign) bool looseTimeoutControl;
@end
# 示例代码
JCCLoginParam *config = [[JCCLoginParam alloc] init];
config.appKey = appkey;
config.server = _server;
config.userName = _account;
config.appName = @"菊风视频客服";
BOOL ret = [JCCGuestManager.shared login:config];
# 2. 获取登录状态
getClientLoginState (opens new window) 获取登录状态。
/**
* @brief 获取当前登录状态
* @return 当前登录状态
*/
- (JCCClientState)getClientLoginState;
# 3. 呼叫实现通话
调用 call (opens new window) 方法,实现呼叫坐席,进行通话。呼叫过程中可以配置呼叫参数。
/**
* @brief 发起呼叫
* @param number 组号或座席用户ID
* @param callParam 设置创建呼叫参数
* @param oneToOne 是否为点对点呼叫,当为点对点呼叫时,number 参数需传入座席用户ID;反之则传入业务组号
* @return 接口调用结果
* - YES 表示调用成功,呼叫结果通过 {@link JCCGuestCallback#onCallStateChanged:termReason: onCallStateChanged} 回调通知
* - NO 表示调用异常
*/
- (BOOL)call:(NSString *)number callParam:(JCCGuestCallParam *)callParam oneToOne:(BOOL)oneToOne;
# 设置呼叫参数
呼叫参数详见 JCCGuestCallParam (opens new window)
/// 呼叫参数
@interface JCCGuestCallParam : NSObject
/// 配置加急按钮,默认为 YES
@property (nonatomic, assign) BOOL urgent;
/// 本地录制文件路径
@property (nonatomic, copy) NSString *localRecordFilePath;
/// 附加信息,随路参数
@property (nonatomic, copy) NSString *extraInfo;
/// 自定义流水号
@property (nonatomic, copy) NSString *serialNumber;
/**
* 心跳超时时间,默认为 60 秒
*/
@property (nonatomic, assign) int hbTimeout;
/**
* 心跳间隔,默认为 20 秒
*/
@property (nonatomic, assign) int hbTime;
/// 是否由服务器自动开启录制,默认为 YES
@property (nonatomic, assign) BOOL autoRecord;
/// 入会加密方式
@property (nonatomic, assign) JCCSecurityType securityType;
/// 视频清晰度
/// 默认为 {@link VideoDefineType#DefinitionCustom DefinitionCustom}
@property (nonatomic, assign) VideoDefinitionType videoDefinition;
/// 最大帧率
@property (nonatomic, assign) int maxFrameRate;
/// svc分辨率
@property (nonatomic, copy) NSString *svcResolution;
/// 设置视频本地宽高比(会将自己的视频采集根据宽高比裁剪后进行发送)
@property (nonatomic, assign) float ratio;
/**
* 视频编解码,默认为 H264
*/
@property (nonatomic, assign) JCCVideoEncodeType videoEncodeType;
/**
* 音频编解码,默认为 OPUS
*/
@property (nonatomic, assign) JCCAudioEncodeType audioEncodeType;
/**
* 采集分辨率类型
*/
@property (nonatomic, assign) JCCCaptureResolutionType captureResolutionType;
/**
* 采集帧率
*/
@property (nonatomic, assign) int captureFrameRate;
/**
* 访客呼叫权重,取值范围:[1-100]。
* @note
* 只有访客普通呼叫才生效,访客点对点呼叫参数不生效
*/
@property (nonatomic, assign) int vipPower;
# 示例代码
JCCGuestCallParam *param = [[JCCGuestCallParam alloc] init];
...
[JCCGuestManager.shared call:@"10086" callParam:param oneToOne:NO];
呼叫中
# 4. 通话接通
通话中
# 5. 登出
调用 logout (opens new window) 登出
/**
* @brief 登出并销毁
* @return 调用是否成功
*/
- (BOOL)logout;
# 示例代码
JCCGuestManager.getInstance().logout();