tencent cloud

文档反馈

最后更新时间:2024-04-01 17:52:01
    本文主要介绍云联络中心(TCCC)坐席端的常用 API,在 iOS 端我们提供了Swift、OC、C++ 接口供开发者选择使用。我们推荐 iOS 开发者在开发应用时候请用 Swift 语言开发。

    创建实例和事件回调

    API
    描述
    sharedInstance
    创建 ITCCCWorkstation 实例(单例模式)。
    destroySharedInstance
    销毁 ITCCCWorkstation 实例(单例模式)。
    addTcccListener
    添加 ITCCCWorkstation 事件回调。
    removeTCCCListener
    移除 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
    描述
    login
    SDK 登录。
    checkLogin
    检查 SDK 是否已登录。
    logout
    SDK 退出登录。

    登录、退出登录示例代码

    Swift
    Objective-C
    C++
    import TCCCSDK
    
    let param = TXLoginParams()
    // 登录的坐席ID,通常为邮箱地址
    param.userId = "";
    // 登录票据,在登录模式为Agent必填。更多详情请参见[创建 SDK 登录
    // Token](https://www.tencentcloud.com/document/product/679/49227?from_cn_redirect=1)
    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](https://www.tencentcloud.com/document/product/679/49227?from_cn_redirect=1)
    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](https://www.tencentcloud.com/document/product/679/49227?from_cn_redirect=1)
    param.token = "";
    /// 腾讯云联络中心应用ID,通常为1400开头
    param.sdkAppId = 0;
    // 设置为坐席模式
    param.type = TCCCLoginType::Agent;
    // 登录
    tcccSDK->login(param,loginCallBackImpl);
    // 退出登录
    tcccSDK->logout(nullptr);

    呼叫相关接口函数

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

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

    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
    描述
    setAudioCaptureVolume
    设定本地音频的采集音量。
    getAudioCaptureVolume
    获取本地音频的采集音量。
    setAudioPlayoutVolume
    设定远端音频的播放音量。
    getAudioPlayoutVolume
    获取远端音频的播放音量。
    setAudioRoute
    设置音频路由。

    切换音频路由示例代码

    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
    描述
    getSDKVersion
    获取 SDK 版本信息。
    setLogLevel
    设置 Log 输出级别。
    setConsoleEnabled
    启用/禁用控制台日志打印。
    callExperimentalAPI
    调用实验性接口。

    获取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
    描述
    onError
    错误事件回调。
    onWarning
    警告事件回调。

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

    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
    描述
    onNewSession
    新会话事件。包括呼入和呼出。
    onEnded
    会话结束事件。
    onAudioVolume
    音量大小的反馈回调。
    onNetworkQuality
    网络质量的实时统计回调。

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

    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
    描述
    onConnectionLost
    SDK 与云端的连接已经断开。
    onTryToReconnect
    SDK 正在尝试重新连接到云端。
    onConnectionRecovery
    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 的房间。
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持