有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文主要介绍云联络中心(TCCC)坐席端的常用 API,在 iOS 端我们提供了Swift、OC、C++ 接口供开发者选择使用。我们推荐 iOS 开发者在开发应用时候请用 Swift 语言开发。

创建实例和事件回调

API
描述
创建 ITCCCWorkstation 实例(单例模式)。
销毁 ITCCCWorkstation 实例(单例模式)。
添加 ITCCCWorkstation 事件回调。
移除 ITCCCWorkstation 事件回调。

创建实例和设置事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK
?
let tcccSDK: TCCCWorkstation = {
// 创建实例
return TCCCWorkstation.sharedInstance()
}()
?
// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
?
// 移除TCCC事件回调
tcccSDK.removeTCCCListener(self)
// 销毁实例
TCCCWorkstation.destroySharedIntance()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
@property (strong, nonatomic) TCCCWorkstation *tcccSDK;
?
- (TCCCWorkstation*)tcccSDK {
if (!_tcccSDK) {
// 创建实例
_tcccSDK = [TCCCWorkstation sharedInstance];
}
return _tcccSDK;
}
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
?
// 移除TCCC事件回调
[self.tcccSDK removeTCCCListener:self];
// 销毁实例
[TCCCWorkstation destroySharedIntance];
_tcccSDK = nil;
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
// 创建实例和设置事件回调
ITCCCWorkstation* tcccSDK = getTCCCShareInstance();
// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
?
void onError(TCCCError errCode, const char* errMsg, void* extraInfo) {}
void onWarning(TCCCCWarning warningCode, const char* warningMsg, void* extraInfo) {}
?
void onNewSession(TCCCSessionInfo info) {}
?
void onEnded(EndedReason reason, const char* reasonMessage, const char* sessionId) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);
// 销毁实例
destroyTCCCShareInstance();
tcccSDK = nullptr;

登录相关接口

API
描述
SDK 登录。
检查 SDK 是否已登录。
SDK 退出登录。

登录、退出登录示例代码

Swift
Objective-C
C++
import TCCCSDK
?
let param = TXLoginParams()
// 登录的坐席ID,通常为邮箱地址
param.userId = "";
// 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
// Token](/document/product/679/49227)
param.token = "";
// 腾讯云联络中心应用ID,通常为1400开头
param.sdkAppId = 0;
// 设置为坐席模式
param.type = .Agent;
// 登录
tcccSDK.login(param) { info in
// 登录成功
} fail: { code, message in
// 登录失败
}
?
// 检查登录状态
tcccSDK.checkLogin {
// 已登录
} fail: { code, message in
// 未登录或者被T了
}
?
// 退出登录
tcccSDK.logout {
// 退出成功
} fail: { code, message in
// 退出异常
}
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
TXLoginParams *param = [[TXLoginParams alloc] init];
// 登录的坐席ID,通常为邮箱地址
param.userId = @"";
// 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
// Token](/document/product/679/49227)
param.token = @"";
// 腾讯云联络中心应用ID,通常为1400开头
param.sdkAppId = 0;
// 设置为坐席模式
param.type = Agent;
[self.tcccSDK login:param succ:^(TXLoginInfo * _Nonnull info) {
// 登录成功
} fail:^(int code, NSString * _Nonnull desc) {
// 登录失败
}];
?
// 检查登录状态
[self.tcccSDK checkLogin:^{
// 已登录
} fail:^(int code, NSString * _Nonnull desc) {
// 未登录或者被T了
}];
?
// 退出登录
[self.tcccSDK logout:^{
// 退出成功
} fail:^(int code, NSString * _Nonnull desc) {
// 退出异常
}];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
// 登录回调类
class TCCCLoginCallbackImpl : public ITXValueCallback<TCCCLoginInfo> {
public:
TCCCLoginCallbackImpl() {
}
~TCCCLoginCallbackImpl() override {}
void OnSuccess(const TCCCLoginInfo &value) override {
// 登录成功
}
void OnError(TCCCError error_code, const char *error_message) override {
// 登录失败
}
};
TCCCLoginCallbackImpl* loginCallBackImpl = nullptr;
if (nullptr == loginCallBackImpl) {
loginCallBackImpl = new TCCCLoginCallbackImpl();
}
TCCCLoginParams param;
/// 登录的坐席ID,通常为邮箱地址
param.userId = "";
/// 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
/// Token](/document/product/679/49227)
param.token = "";
/// 腾讯云联络中心应用ID,通常为1400开头
param.sdkAppId = 0;
// 设置为坐席模式
param.type = TCCCLoginType::Agent;
// 登录
tcccSDK->login(param,loginCallBackImpl);
// 退出登录
tcccSDK->logout(nullptr);

呼叫相关接口函数

API
描述
发起通话。
接听来电。
结束通话。
发送 DTMF(双音多频信号)。
静音。
取消静音。

发起呼叫和结束呼叫示例代码

Swift
Objective-C
C++
import TCCCSDK
?
let callParams = TXStartCallParams()
// 呼叫的手机号
callParams.to = "";
// 号码备注,在通话条中会替代号码显示(可选)
callParams.remark = "";
// 发起外呼
tcccSDK.call(callParams) {
// 发起呼叫成功
} fail: { code, message in
// 发起呼叫失败
}
// 结束通话
tcccSDK.terminate()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
TXStartCallParams *callParams = [[TXStartCallParams alloc] init];
// 呼叫的手机号
callParams.to = TO;
// 号码备注,在通话条中会替代号码显示(可选)
callParams.remark = @"testByIos";
// 发起外呼
[self.tcccSDK call:callParams succ:^{
// 发起呼叫成功
} fail:^(int code, NSString * _Nonnull desc) {
// 发起呼叫失败
}];
?
// 结束通话
[self.tcccSDK terminate];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
class TCCCCommonCallback : public ITXCallback {
private:
NSString* mFunName;
public:
TCCCCommonCallback(NSString* funName) {
mFunName = funName;
}
~TCCCCommonCallback() override {
}
void OnSuccess() override {
// 成功
}
void OnError(TCCCError error_code, const char *error_message) override {
std::string copyErrMsg = makeString(error_message);
// 失败
}
};
TCCCCommonCallback* startCallCallbackImpl = nullptr;
if (nullptr == startCallCallbackImpl) {
startCallCallbackImpl = new TCCCCommonCallback(@"startCall");
}
TCCCStartCallParams callParams;
//呼叫的手机号
callParams.to = "";
// 发起外呼
tcccSDK->call(callParams, startCallCallbackImpl);
// 结束通话
tcccSDK->terminate();

音频设备接口函数

API
描述
设定本地音频的采集音量。
获取本地音频的采集音量。
设定远端音频的播放音量。
获取远端音频的播放音量。
设置音频路由。

切换音频路由示例代码

Swift
Objective-C
C++
import TCCCSDK
?
// 切换为扬声器
tcccSDK.getDeviceManager().setAudioRoute(.TCCCAudioRouteSpeakerphone)
// 静音
tcccSDK.mute()
// 取消静音
tcccSDK.unmute()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
// 切换为扬声器
[[self.tcccSDK getDeviceManager] setAudioRoute:TCCCAudioRouteSpeakerphone];
// 静音
[self.tcccSDK mute];
// 取消静音
[self.tcccSDK unmute];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
?
// 切换为扬声器
tcccSDK->getDeviceManager()->setAudioRoute(TCCCAudioRoute::TCCCAudioRouteSpeakerphone);
// 静音
tcccSDK->mute();
// 取消静音
tcccSDK->unmute();

调试相关接口

API
描述
获取 SDK 版本信息。
设置 Log 输出级别。
启用/禁用控制台日志打印。
调用实验性接口。

获取SDK版本示例代码

Swift
Objective-C
C++
import TCCCSDK
?
// 获取SDK版本号
let version = TCCCWorkstation.getSDKVersion()
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
// 获取SDK版本号
NSString* version = [TCCCWorkstation getSDKVersion];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
?
// 获取SDK 版本号
tcccSDK->getSDKVersion();

错误和警告事件

API
描述
错误事件回调。
警告事件回调。

处理错误回调事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK
?
func onError(_ errCode: TCCCErrorCode, errMsg: String, extInfo: [AnyHashable : Any]?) {
// 错误事件回调
}
func onWarning(_ warningCode: TCCCCWarningCode, warningMsg: String, extInfo: [AnyHashable : Any]?) {
// 警告事件回调
}
?
// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
#pragma mark - TCCCDelegate
- (void)onError:(TCCCErrorCode)errCode errMsg:(NSString * _Nonnull)errMsg extInfo:(nullable NSDictionary *)extInfo {
// 错误事件回调
}
- (void)onWarning:(TCCCCWarningCode)warningCode warningMsg:(NSString *_Nonnull)warningMsg extInfo:(nullable NSDictionary *)extInfo {
// 警告事件回调
}
?
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
?
// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
// 错误事件回调
void onError(TCCCError errCode, const char* errMsg, void* extraInfo) {}
// 警告事件回调
void onWarning(TCCCCWarning warningCode, const char* warningMsg, void* extraInfo) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);

呼叫相关事件回调

API
描述
新会话事件。包括呼入和呼出。
会话结束事件。
音量大小的反馈回调。
网络质量的实时统计回调。

处理接听和坐席挂断事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK
?
func onNewSession(_ info: TXSessionInfo) {
// 新会话事件。包括呼入和呼出
}
func onAccepted(_ sessionId: String) {
// 对端已接听事件
}
func onEnded(_ reason: TXEndedReason, reasonMessage: String, sessionId: String) {
// 通话结束事件
}
?
// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
- (void)onNewSession:(TXSessionInfo *)info {
// 新会话事件。包括呼入和呼出
}
- (void)onEnded:(TXEndedReason)reason reasonMessage:(NSString *_Nonnull)reasonMessage sessionId:(NSString *_Nonnull)sessionId {
// 通话结束事件
}
- (void)onAccepted:(NSString *_Nonnull)sessionId {
// 对端已接听事件
}
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
?
// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
// 新会话事件。包括呼入和呼出
void onNewSession(TCCCSessionInfo info) {}
// 会话结束事件
void onEnded(EndedReason reason, const char* reasonMessage, const char* sessionId) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);

与云端连接情况的事件回调

API
描述
SDK 与云端的连接已经断开。
SDK 正在尝试重新连接到云端。
SDK 与云端的连接已经恢复。

与云端连接情况的事件回调示例代码

Swift
Objective-C
C++
import TCCCSDK
?
func onConnectionLost(_ serverType: TXServerType) {
// SDK 与云端的连接已经断开
}
func onConnectionRecovery(_ serverType: TXServerType) {
// SDK 与云端的连接已经恢复
}
func onTry(toReconnect serverType: TXServerType) {
// SDK 正在尝试重新连接到云端
}
?
// 设置TCCC事件回调
tcccSDK.addTcccListener(self)
// 引入 OC 头文件
#import "TCCCSDK/tccc/platform/apple/TCCCWorkstation.h"
?
- (void)onConnectionLost:(TXServerType)serverType {
// SDK 与云端的连接已经断开
}
- (void)onTryToReconnect:(TXServerType)serverType {
// SDK 正在尝试重新连接到云端
}
- (void)onConnectionRecovery:(TXServerType)serverType {
// SDK 与云端的连接已经恢复
}
// 设置TCCC事件回调
[self.tcccSDK addTcccListener:self];
#include "TCCCSDK/tccc/include/ITCCCWorkstation.h"
using namespace tccc;
?
// 设置回调,TCCCCallbackImpl 需要继承 ITCCCCallback
class TCCCCallbackImpl:public ITCCCCallback {
public:
TCCCCallbackImpl() {}
~TCCCCallbackImpl() {}
// SDK 与云端的连接已经断开
void onConnectionLost(TCCCServerType serverType) {}
// SDK 正在尝试重新连接到云端
void onTryToReconnect(TCCCServerType serverType) {}
// SDK 与云端的连接已经恢复
void onConnectionRecovery(TCCCServerType serverType) {}
};
TCCCCallbackImpl* tcccCallback = new TCCCCallbackImpl();
tcccSDK->addCallback(tcccCallback);

API 错误码

基础错误码

符号
含义
ERR_SIP_SUCCESS
200
成功。
ERR_UNRIGIST_FAILURE
20001
登录失败。
ERR_ANSWER_FAILURE
20002
接听失败,通常是 trtc 进房失败。
ERR_SIPURI_WRONGFORMAT
20003
URI 格式错误。
ERR_HTTP_REQUEST_FAILURE
-10001
Http 请求失败,请检查网络连接情况。
ERR_HTTP_TOKEN_ERROR
-10002
token 登录票据不正确或者已过期。
ERR_HTTP_GETSIPINFO_ERROR
-10003
获取坐席配置失败,请 联系我们

SIP相关错误码

符号
含义
ERR_SIP_BAD_REQUEST
400
错误请求。
ERR_SIP_UNAUTHORIZED
401
未授权(用户名密码不对情况)。
ERR_SIP_AUTHENTICATION_REQUIRED
407
代理需要认证,请检查是否已经调用登录接口。
ERR_SIP_REQUESTTIMEOUT
408
请求超时(网络超时)。
ERR_SIP_REQUEST_TERMINATED
487
请求终止(网络异常,网络中断场景下)。
ERR_SIP_SERVICE_UNAVAILABLE
503
服务不可用。
ERR_SIP_SERVER_TIMEOUT
504
服务超时。

音频设备相关错误码

符号
含义
ERR_MIC_START_FAIL
-1302
打开麦克风失败。设备,麦克风的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序。
ERR_MIC_NOT_AUTHORIZED
-1317
麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了。
ERR_MIC_SET_PARAM_FAIL
-1318
麦克风设置参数失败。
ERR_MIC_OCCUPY
-1319
麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败。
ERR_MIC_STOP_FAIL
-1320
停止麦克风失败。
ERR_SPEAKER_START_FAIL
-1321
打开扬声器失败,例如在 Windows 或 Mac。
ERR_SPEAKER_SET_PARAM_FAIL
-1322
扬声器设置参数失败。
ERR_SPEAKER_STOP_FAIL
-1323
停止扬声器失败。
ERR_UNSUPPORTED_SAMPLERATE
-1306
不支持的音频采样率。

网络相关错误码

符号
含义
ERR_RTC_ENTER_ROOM_FAILED
-3301
进入房间失败,请查看 onError 中的 -3301 对应的 msg 提示确认失败原因。
ERR_RTC_REQUEST_IP_TIMEOUT
-3307
请求 IP 和 sig 超时,请检查网络是否正常,或网络防火墙是否放行 UDP。
ERR_RTC_CONNECT_SERVER_TIMEOUT
-3308
请求进房超时,请检查是否断网或者是否开启 vpn,您也可以切换 4G 进行测试确认。
ERR_RTC_ENTER_ROOM_REFUSED
-3340
进房请求被拒绝,请检查是否连续调用 enterRoom 进入相同 ID 的房间。
?


http://www.vxiaotou.com